Giter Club home page Giter Club logo

emacs-zmq's Introduction

Bindings to zmq in Emacs.

https://melpa.org/packages/zmq-badge.svg https://github.com/nnicandro/emacs-zmq/actions/workflows/test.yml/badge.svg

Installation

NOTE: Your Emacs needs to have been built with module support!

The recommended way to install this package is through the built-in package manager in Emacs.

Ensure MELPA is in your package-archives

(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))

Ensure the latest versions of MELPA packages are available

M-x package-refresh-contents RET

Install ZMQ

M-x package-install RET zmq RET

Since zmq requires a module binary, it takes pains to try and either download and install a pre-built binary (see the releases page of this project) or build the module binary itself. Such actions occur on the first use of a zmq function. So upon calling (require 'zmq) it is not guaranteed that the zmq module binary has been successfully installed. On your first use of a zmq function, you may be presented with the option to either download a compatible module binary (guessed at using the variable system-configuration) or, it there isn’t a binary available for download, to build the module. To manually attempt to install/load the module you can call the function zmq-load.

NOTE: In order to download the module binaries it is best to have curl installed on your system since the built-in Emacs method for downloading files, url-retrieve, has issues with HTTPS connections on some systems. On Windows, if your Emacs was not built with the proper GnuTLS support (which appears to be the default), curl is necessary.

If you run into issues you can always manually download the module and ensure the emacs-zmq.(dll|so|dylib) file is placed in the same directory as the zmq.el file.

Dependencies

libzmq
https://github.com/zeromq/libzmq

Building

Run make in the top level directory to build the zmq module. Alternatively when running (require 'zmq) and the module is not built already, you will be asked to build it.

Note, the autotools collection must be available on your system in order to build the module as well as the pkg-config tool.

By default pkg-config is used to search for a usable libzmq to use, falling back to downloading and building a local copy if necessary.

You can tell pkg-config to use a specific libzmq by setting the environment variables ZMQ_LIBS and ZMQ_CFLAGS before building the module. The module will link to the libzmq that those variables point to if it can. Note, when linking libzmq in this way, the zmq_poller interface is required. This means that the linked libzmq needs to have been configured using the option --enable-drafts=yes if libzmq < 4.3.1.

If ZMQ_LIBS and ZMQ_CFLAGS are not set or they point to a libzmq that isn’t usable, a local copy of libzmq is downloaded, built, and statically linked into the resulting module. The default version of libzmq built in this case is 4.3.1 and can be changed by specifying the environment variable ZMQ_VERSION, e.g. to something like

ZMQ_VERSION=4.3.0

Windows

Only the MinGW version of Emacs is supported at the moment, i.e. the one you would get with the command

pacman -S mingw-w64-x86_64-emacs

in a MinGW shell.

Alternatively you can build an Emacs with module support by following the instructions here. You will need to pass the --with-modules option to the configure script when building.

See the instructions below on how to install the MinGW tools.

Download the pre-built libraries

You can download a tar archive containing the pre-built Windows dll files necessary to use this package. Inside the archive is an emacs-zmq.dll file containing v4.3.1 of libzmq. See the releases page.

After downloading, extract the archive contents into the same directory as this project.

cd ~/.emacs.d/elpa/<zmq directory>
wget https://github.com/dzop/emacs-zmq/releases/download/v0.10.9/emacs-zmq-x86_64-w64-mingw32.tar.gz
tar -xzf emacs-zmq-x86_64-w64-mingw32.tar.gz

Build using MinGW

It is possible to use the included build chain on Windows using the MSYS2 MinGW tools.

Install the 64-bit toolchain inside the MSYS2 shell via

pacman -S base-devel
pacman -S git
pacman -S mingw-w64-x86_64-gcc

Note: If you are using the official Git for Windows instead of MSYS2 Git, make sure to set

git config --global core.autocrlf false

during the build to avoid EOL issues and set it back to true (the default on Windows) when you are done building.

Start the build from an MSYS2 MinGW 64-bit shell via make.

Testing

Run make test in the top level directory.

Contexts

To create a context:

(zmq-context)

Normally only a single context object for the current Emacs session is necessary so the usual way to get the context for the current Emacs session is to call zmq-current-context which will create a context for the session only if one has not been created already. See Context/socket/poller lifetime management.

Below is a table mapping the C API functions to their Emacs equivalent.

Cemacs-lisp
zmq_ctx_newzmq-context
zmq_ctx_setzmq-context-set
zmq_ctx_getzmq-context-get
zmq_ctx_termzmq-context-terminate
zmq_ctx_shutdownzmq-context-shutdown

Sockets

To create a socket:

(zmq-socket (zmq-current-context) zmq-PUB)

To bind a socket:

(zmq-bind sock "tcp://127.0.0.1:5555")

To receive a message without blocking:

(let (msg)
  (while (null (condition-case err
                   (setq msg (zmq-recv sock zmq-NOBLOCK))
                (zmq-EAGAIN nil)))
    (sleep-for 1)))

Below is a table mapping the C API functions to their Emacs equivalent.

Cemacs-lisp
zmq_socketzmq-socket
zmq_sendzmq-send
zmq_recvzmq-recv
zmq_bindzmq-bind
zmq_unbindzmq-unbind
zmq_connectzmq-connect
zmq_disconnectzmq-disconnect
zmq_joinzmq-join
zmq_leavezmq-leave
zmq_closezmq-close
zmq_setsockoptzmq-socket-set
zmq_getsockoptzmq-socket-get

In addition to the above, there are also some convenience functions for working with sockets. Currently this is only the function zmq-bind-to-random-port which takes a socket and an address and binds the socket to a random port on the address:

(zmq-bind-to-random-port sock "tcp://127.0.0.1") ; returns port number

Messages

To create a new message object use zmq-message

(zmq-message)

The above creates and initializes an empty message. You can also pass a string or a vector of bytes to zmq-message to initialize the message with some data

(zmq-message "[mα, mβ] = iℏmγ")
;; Initialize a message with a vector of bytes
(zmq-message [0 10 100 29])

Below is a table mapping the C API functions to their Emacs equivalent.

Cemacs-lisp
zmq_msg_initzmq-message
zmq_msg_init_datazmq-message
zmq_msg_recvzmq-message-recv
zmq_msg_sendzmq-message-send
zmq_msg_movezmq-message-move
zmq_msg_copyzmq-message-copy
zmq_msg_closezmq-message-close
zmq_msg_datazmq-message-data
zmq_msg_sizezmq-message-size
zmq_msg_morezmq-message-more-p
zmq_msg_setzmq-message-set
zmq_msg_getzmq-message-get
zmq_msg_getszmq-message-property
zmq_msg_routing_idzmq-message-routing-id
zmq_msg_set_routing_idzmq-message-set-routing-id
zmq_msg_groupzmq-message-group
zmq_msg_set_groupzmq-message-set-group

Multi-part messages

To send a multi-part message:

(zmq-send-multipart sock '("part1" "part2" "part3"))

To receive a multi-part message:

(zmq-recv-multipart sock)

zmq-recv-multipart returns a list containing the parts of the message and always returns a list, even for a message containing a single part.

Polling

Currently, polling requires that libzmq be built with the draft API to expose the zmq_poller interface. Below is an example of how you may poll a socket.

(catch 'recvd
  (let ((poller (zmq-poller))
        (timeout 1000))
    (zmq-poller-add poller sock (list zmq-POLLIN zmq-POLLOUT))
    (while t
      ;; `zmq-poller-wait-all' returns an alist of elements (sock . events)
      (let* ((socks-events (zmq-poller-wait-all poller 1 timeout))
             (events (cdr (zmq-assoc sock socks-events))))
        (when (and events (member zmq-POLLIN events))
          (throw 'recvd (zmq-recv sock)))))))

Below is a table mapping the C API functions to their Emacs equivalent.

Cemacs-lisp
zmq_poller_newzmq-poller
zmq_poller_destroyzmq-poller-destroy
zmq_poller_addzmq-poller-add
zmq_poller_add_fdzmq-poller-add
zmq_poller_modifyzmq-poller-modify
zmq_poller_modify_fdzmq-poller-modify
zmq_poller_removezmq-poller-remove
zmq_poller_remove_fdzmq-poller-remove
zmq_poller_waitzmq-poller-wait
zmq_poller_wait_allzmq-poller-wait-all

Errors

All errors generated by the underlying C API are converted into calls to signal in Emacs. So to handle errors, wrap your calls to zmq functions in a condition-case like so

(setq poll-events
      (while (null (condition-case nil
                       (zmq-poller-wait poller 1)
                     (zmq-EAGAIN nil)))
        (sleep-for 1)))

The error symbols used are identical to the C error codes except with the prefix zmq-. Only the more common errors are defined as error symbols that can be caught with condition-case, below is the current list of errors that have error symbols defined:

EINVAL
EPROTONOSUPPORT
ENOCOMPATPROTO
EADDRINUSE
EADDRNOTAVAIL
ENODEV
ETERM
ENOTSOCK
EMTHREAD
EFAULT
EINTR
ENOTSUP
ENOENT
ENOMEM
EAGAIN
EFSM
EHOSTUNREACH
EMFILE

Any other error will signal a zmq-ERROR with an error message obtained from zmq_strerror.

Comparing ZMQ objects

There are also predicate and comparison functions available for working with ZMQ objects:

zmq-poller-p
zmq-socket-p
zmq-context-p
zmq-message-p
zmq-equal
zmq-assoc

zmq-equal and zmq-assoc work just like equal and assoc respectively, but can also compare ZMQ objects.

Getting/setting options

To set an option for a zmq-context, zmq-socket, or zmq-message call:

(zmq-context-set ctx zmq-BLOCKY nil)
(zmq-socket-set sock zmq-IPV6 t)
(zmq-message-set msg zmq-MORE t)

To get an option:

(zmq-context-get ctx zmq-BLOCKY)
(zmq-socket-get sock zmq-IPV6)
(zmq-message-get msg zmq-MORE)

Or the convenience functions zmq-set-option and zmq-get-option can be used which will call one of the functions above based on the type of the first argument:

(zmq-set-option ctx zmq-BLOCKY nil)
(zmq-set-option sock zmq-IPV6 t)

(zmq-get-option ctx zmq-BLOCKY)
(zmq-get-option sock zmq-IPV6)

To access a zmq-message meta-data property use zmq-message-property:

(zmq-message-property msg :identity)

The available metadata properties can be found in zmq-message-properties.

Boolean options

Integer options which are interpreted as boolean in libzmq are interpreted in Emacs as boolean. For example, the socket option zmq-IPV6 which enables IPV6 connections for the socket is an integer option interpreted as a boolean value in the C API. In Emacs this option is a boolean. So to enable IPV6 connections you would do

(zmq-socket-set sock zmq-IPV6 t)

and to disable them

(zmq-socket-set sock zmq-IPV6 nil)

Similarly for all other socket, message, or context options which are interpreted as boolean by the C API.

Context/socket/poller lifetime management

The underlying Emacs module takes care of freeing the resources used by a ZMQ object during garbage collection. As a special case if a socket gets garbage collected, the zmq-LINGER property will be set to 0 for the socket (http://zguide.zeromq.org/page:all#Making-a-Clean-Exit). You probably still want to call the appropriate destructor function once your done using an object though.

Asynchronous subprocess

There is also support for asynchronous processing via an Emacs subprocess. This is useful to have a subprocess do most of the message processing for an application, leaving the parent Emacs process free for editing tasks. To start a subprocess you pass a function form to zmq-start-process like so:

(zmq-start-process
 `(lambda ()
    (let* ((ctx (zmq-current-context))
           (sock (zmq-socket ctx zmq-SUB)))
      BODY)))

Notice the quoting on the function, this is necessary to pass a lambda form to the subprocess as opposed to a byte-compiled lambda or closure. Given the above function, a subprocess will be created and the provided function will be called in the subprocess environment. You can also avoid a call to zmq-current-context by providing a function that takes a single argument. In this case, the argument will be set to the zmq-current-context in the subprocess environment:

(zmq-start-process
 `(lambda (ctx)
    (let ((sock (zmq-socket ctx zmq-SUB)))
      BODY)))

There are also routines to pass information between a subprocess and the parent Emacs process. You can send an s-expression, readable using read, to a subprocess with the function zmq-subprocess-send. The subprocess can then consume the sent expression by a call to zmq-subprocess-read. Note that zmq-subprocess-read is blocking. To avoid this blocking behavior you can poll the stdin stream to ensure that something can be read before calling zmq-subprocess-read in the subprocess, see the example below.

For the parent Emacs process to read data from a subprocess, the subprocess should print an expression to stdout, e.g. using the function zmq-prin1, and give a filter function to the :filter key of the zmq-start-process call. The filter function is similar to a normal process filter function but only takes a single argument, a list expression that was printed to the stdout of a subprocess. Note, in the subprocess, the expressions printed to =stdout= are restricted to be lists. There is no such restriction when using zmq-subprocess-send.

Below is a complete example of using zmq-start-process

(let ((proc (zmq-start-process
             `(lambda (ctx)
                (let ((poller (zmq-poller)))
                  ;; Poll for input on STDIN, i.e. input from the parent Emacs
                  ;; process. NOTE: Only works on UNIX based systems.
                  (zmq-poller-add poller 0 zmq-POLLIN)
                  (catch 'exit
                    (while t
                      (when (zmq-poller-wait poller 100)
                        (let ((sexp (zmq-subprocess-read)))
                          (zmq-prin1 sexp)
                          (throw 'exit t)))))))
             ;; A filter function which prints out messages sent by the
             ;; subprocess.
             :filter (lambda (sexp)
                       (message "echo %s" sexp)))))
  ;; Let the process start
  (sleep-for 0.2)
  (zmq-subprocess-send proc (list 'send "topic1")))

emacs-zmq's People

Contributors

dakra avatar fleimgruber avatar nnicandro avatar slippycheeze avatar tgbugs avatar veprbl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

emacs-zmq's Issues

Linking error when building emacs-zmq

Hi, I'm trying to install emacs-jupyter using package-install and when compiling emacs-zmq I am see the following error during the linking stage:

/bin/sh ./libtool  --tag=CC   --mode=link gcc -Ilibzmq/include -fvisibility=hidden -g -O2 -module -avoid-version -shrext   -Wl,libzmq/src/.libs/libzmq.a -v -o emacs-zmq.la -rpath /Users/zalan/src/emacs-zmq/lib emacs_zmq_la-socket.lo emacs_zmq_la-context.lo emacs_zmq_la-msg.lo emacs_zmq_la-constants.lo emacs_zmq_la-util.lo emacs_zmq_la-core.lo emacs_zmq_la-poll.lo emacs_zmq_la-emacs-zmq.lo  
libtool: link: gcc -Wl,-undefined -Wl,dynamic_lookup -o .libs/emacs-zmq-Wl,libzmq/src/.libs/libzmq.a -bundle  .libs/emacs_zmq_la-socket.o .libs/emacs_zmq_la-context.o .libs/emacs_zmq_la-msg.o .libs/emacs_zmq_la-constants.o .libs/emacs_zmq_la-util.o .libs/emacs_zmq_la-core.o .libs/emacs_zmq_la-poll.o .libs/emacs_zmq_la-emacs-zmq.o    -g -O2  
ld: warning: -undefined dynamic_lookup may not work with chained fixups
ld: can't open output file for writing: .libs/emacs-zmq-Wl,libzmq/src/.libs/libzmq.a, errno=2 for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

For some reason the output path is being concatenated with the compiler flag: .libs/emacs-zmq-Wl,libzmq/src/.libs/libzmq.a

My system info:

System info: "aarch64-apple-darwin21.1.0
OS: macOS 12.6.9 (21G726)
Emacs: GNU Emacs 28.2
emacs-jupyter: jupyter-20231204.529
emacs-zmq: zmq-20230608.1856

I've also tried to build emacs-zmq directly from the master branch of emacs-zmq (9d5679c) and I see the exact same error.

Please let me know if there's additional information that would be useful.

Compiling Emacs 26.1.92 with optimizations causes failures on Ubuntu 16.04

OS: Ubuntu 16.04
emacs: 26.1.92 (--with-modules)

Running make results in no errors, but running make test fails 10 out of 11 test cases:
void function zmq-context
void function zmq-version
...

Running:
emacs -nw -Q -batch -L . -l ert -l zmq-tests.el --module-assertions --eval "(ert-run-tests-batch-and-exit)"

results in:
Emacs module assertion: Emacs value not found in 0 values of 2 environments Fatal error 6: Aborted

What could I be doing wrong?

Need to run `./configure` manually in `~/.emacs.d/elpa/zmq-20230608.1856/src/libzmq`, problems with libstdc++

Compiling the zmq module failed like:

$ make all
Making all in libzmq
make[1]: Entering directory '/home/alex/.emacs.d/elpa/zmq-20230608.1856/src/libzmq'
make[1]: *** No rule to make target 'all'.  Stop.
make[1]: Leaving directory '/home/alex/.emacs.d/elpa/zmq-20230608.1856/src/libzmq'
make: *** [Makefile:608: all-recursive] Error 1
$ make
Making all in libzmq
make[1]: Entering directory '/home/alex/.emacs.d/elpa/zmq-20230608.1856/src/libzmq'
make[1]: *** No rule to make target 'all'.  Stop.
make[1]: Leaving directory '/home/alex/.emacs.d/elpa/zmq-20230608.1856/src/libzmq'
make: *** [Makefile:608: all-recursive] Error 1

, until I went into src/libzmq and ran ./configure myself.

After that, compilation fails with:

/usr/bin/ld: cannot find -l:libstdc++.a

I'm in CentOS 9 Stream and libstdc++-devel and gcc-c++ is installed, though.

Module binary: Error extracting .tar.gz

Emacs 26.3 on NixOS.
During startup answering the prompt

Check for compatible module binary to download? (y or n) y

*Messages* then shows

Downloading https://github.com/dzop/emacs-zmq/releases/download/v0.10.10/emacs-zmq-x86_64-linux-gnu.tar.gz
Verifying sha256 signature of emacs-zmq-x86_64-linux-gnu.tar.gz
Wrote /home/user/.emacs.d/elpa/26.3/develop/zmq-20190812.1910/emacs-zmq-x86_64-linux-gnu.tar.gz
Parsing tar file...
Warning: premature EOF parsing tar file
Extracting ^_\213^H

and *Warnings* shows

Warning (tar): Extracted ‘^_\213^H’, a link, as a normal file
Warning (initialization): An error occurred while loading ‘/home/user/.emacs.d/init.el’:

Args out of range: #<killed buffer>, 513, 27446879344

I looked for /home/user/.emacs.d/elpa/26.3/develop/zmq-20190812.1910/emacs-zmq-x86_64-linux-gnu.tar.gz, but it is not there (anymore?).

Segmentation fault (core dumped) when testing

I'm hunting down an error from another package emacs-jupyter.
Currently i'm having issues with building and testing emacs-zmq.
M-x emacs-version gives GNU Emacs 27.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.22.30) of 2019-06-08.

I'm cloning the current master version of emacs-zmq and in the top directory i'm running make
emacs_zmq_compile.txt

and then make test

$ make test
emacs -nw -Q -batch -L . -l ert -l zmq-tests.el \
	--eval "(ert-run-tests-batch-and-exit)"
Loading /home/meuser/src/emacs-zmq/emacs-zmq.so (module)...
Makefile:64: recipe for target 'test' failed
make: *** [test] Segmentation fault (core dumped)

Not sure where to go from here, but I'm suspecting that this issue is what is preventing emacs-jupyter from being installed correctly.
Any help on what to do here?

Wrong api address for 'Check for compatible module binary to download?'

Because the repository has moved the api-call to look for binaries is broken.

Using the old api address with curl:

curl   -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/dzop/emacs-zmq/releases/v0.10.10

{
  "message": "Moved Permanently",
  "url": "https://api.github.com/repositories/133400325/releases/v0.10.10",
  "documentation_url": "https://docs.github.com/v3/#http-redirects"
}

With the new address:

curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/nnicandro/emacs-zmq/releases/v0.10.10

{
  "message": "Not Found",
  "documentation_url": "https://docs.github.com/rest/reference/repos#get-a-release"
}

Error on startup, '_zmq_bind' symbol not found in emacs-zmq.dylib

I am on Mac 12.3, Monterey.
Mac M1 machines.
I am using emacs-plus@28 installed via homebrew.
zmq is installed via brew as well, the library is at /opt/homebrew/Cellar/zeromq/4.3.4/lib/libzmq.5.dylib, but some reasons, it cannot be found when prompted initially on emacs-zmq package installation, which can be seen as follows:

Check for compatible module binary to download? (y or n) y
ZMQ module not found. Build it? (y or n) n

My current temporary work around is to uninstall the packages (jupyter + zmq), so that this error will not be thrown at startup.

Partial stacktrace:

Debugger entered--Lisp error: (module-open-failed "/Users/xception/.emacs.d/elpa/zmq-20220510.1820/emacs-zmq.dylib" "dlopen(/Users/xception/.emacs.d/elpa/zmq-20220510.1820/emacs-zmq.dylib, 0x0001): symbol not found in flat namespace '_zmq_bind'")
  load-file("/Users/xception/.emacs.d/elpa/zmq-20220510.1820/emacs-zmq.dylib")
  zmq-load()
  byte-code("\300 \210\301\302!\207" [zmq-load provide zmq] 2)
  require(zmq)
  byte-code("\300\301!\210\300\302!\207" [require jupyter-base zmq] 2)
  require(jupyter-ioloop)
  byte-code("\300\301!\210\300\302!\210\303\304\305\306!\"\210\303\307\310\306!\"\210\303\311\307\"\210\312\311\313\314#\210\315\306\316\307#\317\306\320\321\322$\207" [require jupyter-comm-layer jupyter-ioloop defalias jupyter-ioloop-comm-p eieio-make-class-predicate jupyter-ioloop-comm jupyter-ioloop-comm--eieio-childp eieio-make-child-predicate jupyter-ioloop-comm-child-p make-obsolete "use (cl-typep ... \\='jupyter-ioloop-comm) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (jupyter-comm-layer) ((ioloop :type jupyter-ioloop)) (:abstract t)] 6)
  require(jupyter-ioloop-comm)
  byte-code("\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\306\307\310\311\312\313%\207" [require jupyter-repl jupyter-rest-api jupyter-kernel-manager jupyter-ioloop-comm jupyter-server-ioloop custom-declare-group jupyter-server nil "Support for the Jupyter kernel gateway" :group jupyter] 6)
  require(jupyter-server)
  byte-code("\300\301\302\303#\304\301\305\306\307\305\310\311\301\303&\11\210\312\313\314\313\315\305#\316#\210\317\313\305\315\305\320%\210\312\321\314\321\322\305#\323#\210\317\321\305\322..." [function-put org-babel-jupyter-remote-session side-effect-free t cl-struct-define nil org-babel-jupyter-session record ((cl-tag-slot) (name nil) (connect-repl-p)) cl-struct-org-babel-jupyter-remote-session-tags defalias org-babel-jupyter-parse-session cl-generic-define ((session string)) "Return a parsed representation of SESSION.\n\n(fn (S..." cl-generic-define-method #f(compiled-function (session) #<bytecode 0x6b9e8c40d7ead58>) org-babel-jupyter-initiate-client ((_session org-babel-jupyter-session) kernel) "Launch SESSION's KERNEL, return a `jupyter-org-cli..." #f(compiled-function (session kernel) #<bytecode -0x43db9ef5d2b1481>) (:around) (session _kernel) #f(compiled-function (cl--cnm session kernel) "Rename the returned client's REPL buffer to include SESSION's name.\nAlso set `jupyter-include-other-output' to nil for the session so\nthat output produced by other clients do not get handled by the\nclient." #<bytecode 0x9fd863bea19a4e1>) (:extra "remote") ((session string)) #f(compiled-function (cl--cnm session) "If SESSION is a remote file name, return a `org-babel-jupyter-remote-session'.\nA `org-babel-jupyter-remote-session' session is also returned if\nSESSION ends in \".json\", regardless of SESSION being a remote\nfile name, with `org-babel-jupyter-remote-session-connect-repl-p'\nset to nil.  The CONNECT-REPL-P slot indicates that a connection\nfile is read to connect to the session, as oppossed to launcing a\nkernel." #<bytecode -0x154a16fce8df4fea>) (:before) ((session org-babel-jupyter-remote-session) _kernel) #f(compiled-function (session kernel) "Raise an error if SESSION's name is a remote file name without a local name.\nThe local name is used as a unique identifier of a remote\nsession." #<bytecode -0x2148b7982122ff2>) ((session org-babel-jupyter-remote-session) kernel) #f(compiled-function (session kernel) "Initiate a client connected to a remote kernel process." #<bytecode -0x785d3ce6cda2f7e>) require jupyter-server jupyter-tramp] 11)
  org-babel-do-load-languages(org-babel-load-languages ((python . t) (jupyter . t) (eshell . t) (shell . t) (lisp . t) (emacs-lisp . t) (julia . t) (calc . t)))
  ...

Issue building: `recompile with -fPIC`

I am having some problems building emacs-zmq on my system. Running make did not seem to download a copy of libzmq automatically, so I manually cloned it from the GitHub repo and ran autogen.sh and ./configure as instructed in https://github.com/zeromq/libzmq/blob/v4.3.4/INSTALL (after checking out the commit tagged as v4.3.4). These commands appear to complete successfully. I can also seemingly build libzmq successfully on its own.

$ cd src/libzmq
$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '1000' is supported by ustar format... yes
checking whether GID '1000' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking whether to enable maintainer-specific portions of Makefiles... yes
checking whether make supports nested variables... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking whether C compiler accepts -std=gnu11... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for a sed that does not truncate output... /usr/bin/sed
checking whether to build with code coverage support... no
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for gawk... (cached) gawk
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for xmlto... no
checking for asciidoc... no
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... dlltool
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... no
checking if : is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... no
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... no
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for valgrind... no
checking linker version script flag... --version-script
checking if version scripts can use complex wildcards... yes
checking for working posix_memalign... yes
checking whether g++ supports C++11 features by default... yes
checking whether the C compiler works... yes
checking whether we are using Intel C compiler... no
checking whether we are using Sun Studio C compiler... no
checking whether we are using clang C compiler... no
checking whether we are using gcc >= 4 C compiler... yes
checking whether the C++ compiler works... yes
checking whether we are using Intel C++ compiler... no
checking whether we are using Sun Studio C++ compiler... no
checking whether we are using clang C++ compiler... no
checking whether we are using gcc >= 4 C++ compiler... yes
checking whether to enable debugging information... no
checking whether to enable code coverage... no
checking if TIPC is available and supports nonblocking connect... yes
checking whether to enable TSan... no
checking whether to enable ASan... no
checking for pthread_create in -lpthread... yes
checking for clock_gettime in -lrt... yes
checking whether C++ compiler supports -fvisibility=hidden... yes
checking whether C++ compiler supports dso visibility... yes
checking for asciidoc... no
checking for xmlto... no
configure: WARNING: You are building an unreleased version of 0MQ and asciidoc or xmlto are not installed.
configure: WARNING: Documentation will not be built and manual pages will not be installed.
checking whether to build documentation... no
checking whether to install manpages... no
configure: Choosing I/O thread polling system from 'kqueue epoll devpoll pollset poll select'...
configure: Using 'epoll' I/O thread polling system with CLOEXEC
configure: Using 'poll' zmq_poll(er)_* API polling system
checking for getconf... getconf
configure: Using "64" bytes alignment for lock-free data structures
checking condition_variable usability... yes
checking condition_variable presence... yes
checking for condition_variable... yes
configure: Using "auto" condition variable implementation.
checking for ANSI C header files... (cached) yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking time.h usability... yes
checking time.h presence... yes
checking for time.h... yes
checking for unistd.h... (cached) yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking netinet/tcp.h usability... yes
checking netinet/tcp.h presence... yes
checking for netinet/tcp.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking ifaddrs.h usability... yes
checking ifaddrs.h presence... yes
checking for ifaddrs.h... yes
checking sys/uio.h usability... yes
checking sys/uio.h presence... yes
checking for sys/uio.h... yes
checking sys/eventfd.h usability... yes
checking sys/eventfd.h presence... yes
checking for sys/eventfd.h... yes
checking whether EFD_CLOEXEC is supported... yes
checking whether SO_PEERCRED is declared... yes
checking whether LOCAL_PEERCRED is declared... no
checking for stdbool.h that conforms to C99... no
checking for _Bool... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for size_t... yes
checking for ssize_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking for uint32_t... yes
checking for working volatile... yes
configure: Using tweetnacl for CURVE security
configure: Using builting SHA1
checking "with_norm_ext = no"... no
checking how to enable additional warnings for C++ compiler... -Wall
checking how to turn warnings to errors in C++ compiler... -Werror
checking how to enable strict standards compliance in C++ compiler... -pedantic
checking whether C++ compiler accepts -Watomic-alignment... no
checking whether compiler supports __atomic_Xxx intrinsics... yes
checking return type of signal handlers... void
checking for perror... yes
checking for gettimeofday... yes
checking for clock_gettime... yes
checking for memset... no
checking for socket... yes
checking for getifaddrs... yes
checking for freeifaddrs... yes
checking for fork... no
checking for mkdtemp... yes
checking for accept4... yes
checking alloca.h usability... yes
checking alloca.h presence... yes
checking for alloca.h... yes
checking whether strnlen is available... yes
checking whether if_nametoindex is available... yes
checking for LIBBSD... no
configure: WARNING: Cannot find libbsd
checking whether strlcpy is available... no
checking whether signature of pthread_setname_np() has 1 argument... no
checking whether signature of pthread_setname_np() has 2 arguments... yes
checking whether signature of pthread_setname_np() has 3 arguments... no
checking whether pthread_set_name_np() exists... no
checking whether pthread_setaffinity_np() exists... no
checking whether SOCK_CLOEXEC is supported... yes
checking whether O_CLOEXEC is supported... yes
checking whether SO_BINDTODEVICE is supported... yes
checking whether SO_KEEPALIVE is supported... yes
checking whether TCP_KEEPCNT is supported... yes
checking whether TCP_KEEPIDLE is supported... yes
checking whether TCP_KEEPINTVL is supported... yes
checking whether TCP_KEEPALIVE is supported... no
checking whether SO_PRIORITY is supported... yes
checking whether getrandom is supported... yes
checking for ./.git... yes
configure: Building stable and legacy API + draft API
checking for LIBUNWIND... yes
checking for dladdr in -ldl... yes
configure: Using radix tree implementation to manage subscriptions
checking for clang-format... no
checking whether C compiler accepts -Wtautological-constant-compare... no
checking whether C++ compiler accepts -Wtautological-constant-compare... no
checking whether C compiler accepts -ffat-lto-objects... yes
checking whether C++ compiler accepts -ffat-lto-objects... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/libzmq.pc
config.status: creating doc/Makefile
config.status: creating builds/Makefile
config.status: creating builds/deprecated-msvc/Makefile
config.status: creating src/platform.hpp
config.status: executing depfiles commands
config.status: executing libtool commands

However, when I run make in the top-level directory of emacs-zmq, I get some errors that instruct me to recompile with -fPIC.

$ cd ../..  # in emacs-zmq
$ make
Loading /usr/share/emacs/site-lisp/site-start.d/autoconf-init.el (source)...
Loading /usr/share/emacs/site-lisp/site-start.d/cmake-init.el (source)...
Loading /usr/share/emacs/site-lisp/site-start.d/desktop-entry-mode-init.el (source)...
Loading /usr/share/emacs/site-lisp/site-start.d/rpmdev-init.el (source)...
make -C src
make[1]: Entering directory '/home/ngchis/.config/doom-emacs/.local/straight/repos/emacs-zmq/src'
Making all in libzmq
make[2]: Entering directory '/home/ngchis/.config/doom-emacs/.local/straight/repos/emacs-zmq/src/libzmq'
Making all in doc
make[3]: Entering directory '/home/ngchis/.config/doom-emacs/.local/straight/repos/emacs-zmq/src/libzmq/doc'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/ngchis/.config/doom-emacs/.local/straight/repos/emacs-zmq/src/libzmq/doc'
make[3]: Entering directory '/home/ngchis/.config/doom-emacs/.local/straight/repos/emacs-zmq/src/libzmq'
  CXX      tools/curve_keygen.o
  CXX      src/libzmq_la-address.lo
  CXX      src/libzmq_la-channel.lo
  CXX      src/libzmq_la-client.lo
  CXX      src/libzmq_la-clock.lo
  CXX      src/libzmq_la-ctx.lo
  CXX      src/libzmq_la-curve_client.lo
  CXX      src/libzmq_la-curve_mechanism_base.lo
  CXX      src/libzmq_la-curve_server.lo
  CXX      src/libzmq_la-dealer.lo
  CXX      src/libzmq_la-devpoll.lo
  CXX      src/libzmq_la-dgram.lo
  CXX      src/libzmq_la-dish.lo
  CXX      src/libzmq_la-dist.lo
  CXX      src/libzmq_la-endpoint.lo
  CXX      src/libzmq_la-epoll.lo
  CXX      src/libzmq_la-err.lo
  CXX      src/libzmq_la-fq.lo
  CXX      src/libzmq_la-gather.lo
  CXX      src/libzmq_la-gssapi_mechanism_base.lo
  CXX      src/libzmq_la-gssapi_client.lo
  CXX      src/libzmq_la-gssapi_server.lo
  CXX      src/libzmq_la-io_object.lo
  CXX      src/libzmq_la-io_thread.lo
  CXX      src/libzmq_la-ip.lo
  CXX      src/libzmq_la-ip_resolver.lo
  CXX      src/libzmq_la-ipc_address.lo
  CXX      src/libzmq_la-ipc_connecter.lo
  CXX      src/libzmq_la-ipc_listener.lo
  CXX      src/libzmq_la-kqueue.lo
  CXX      src/libzmq_la-lb.lo
  CXX      src/libzmq_la-mailbox.lo
  CXX      src/libzmq_la-mailbox_safe.lo
  CXX      src/libzmq_la-mechanism.lo
  CXX      src/libzmq_la-mechanism_base.lo
  CXX      src/libzmq_la-metadata.lo
  CXX      src/libzmq_la-msg.lo
  CXX      src/libzmq_la-mtrie.lo
  CXX      src/libzmq_la-norm_engine.lo
  CXX      src/libzmq_la-null_mechanism.lo
  CXX      src/libzmq_la-object.lo
  CXX      src/libzmq_la-options.lo
  CXX      src/libzmq_la-own.lo
  CXX      src/libzmq_la-pair.lo
  CXX      src/libzmq_la-peer.lo
  CXX      src/libzmq_la-pgm_receiver.lo
  CXX      src/libzmq_la-pgm_sender.lo
  CXX      src/libzmq_la-pgm_socket.lo
  CXX      src/libzmq_la-pipe.lo
  CXX      src/libzmq_la-plain_client.lo
  CXX      src/libzmq_la-plain_server.lo
  CXX      src/libzmq_la-poll.lo
  CXX      src/libzmq_la-poller_base.lo
  CXX      src/libzmq_la-polling_util.lo
  CXX      src/libzmq_la-pollset.lo
  CXX      src/libzmq_la-precompiled.lo
  CXX      src/libzmq_la-proxy.lo
  CXX      src/libzmq_la-pub.lo
  CXX      src/libzmq_la-pull.lo
  CXX      src/libzmq_la-push.lo
  CXX      src/libzmq_la-radio.lo
  CXX      src/libzmq_la-radix_tree.lo
  CXX      src/libzmq_la-random.lo
  CXX      src/libzmq_la-raw_decoder.lo
  CXX      src/libzmq_la-raw_encoder.lo
  CXX      src/libzmq_la-raw_engine.lo
  CXX      src/libzmq_la-reaper.lo
  CXX      src/libzmq_la-rep.lo
  CXX      src/libzmq_la-req.lo
  CXX      src/libzmq_la-router.lo
  CXX      src/libzmq_la-scatter.lo
  CXX      src/libzmq_la-select.lo
  CXX      src/libzmq_la-server.lo
  CXX      src/libzmq_la-session_base.lo
  CXX      src/libzmq_la-signaler.lo
  CXX      src/libzmq_la-socket_base.lo
  CXX      src/libzmq_la-socks.lo
  CXX      src/libzmq_la-socks_connecter.lo
  CXX      src/libzmq_la-stream.lo
  CXX      src/libzmq_la-stream_connecter_base.lo
  CXX      src/libzmq_la-stream_listener_base.lo
  CXX      src/libzmq_la-stream_engine_base.lo
  CXX      src/libzmq_la-sub.lo
  CXX      src/libzmq_la-tcp.lo
  CXX      src/libzmq_la-tcp_address.lo
  CXX      src/libzmq_la-tcp_connecter.lo
  CXX      src/libzmq_la-tcp_listener.lo
  CXX      src/libzmq_la-thread.lo
  CXX      src/libzmq_la-timers.lo
  CXX      src/libzmq_la-tipc_address.lo
  CXX      src/libzmq_la-tipc_connecter.lo
  CXX      src/libzmq_la-tipc_listener.lo
  CXX      src/libzmq_la-trie.lo
  CXX      src/libzmq_la-udp_address.lo
  CXX      src/libzmq_la-udp_engine.lo
  CXX      src/libzmq_la-v1_decoder.lo
  CXX      src/libzmq_la-v2_decoder.lo
  CXX      src/libzmq_la-v1_encoder.lo
  CXX      src/libzmq_la-v2_encoder.lo
  CXX      src/libzmq_la-v3_1_encoder.lo
  CXX      src/libzmq_la-vmci.lo
  CXX      src/libzmq_la-vmci_address.lo
  CXX      src/libzmq_la-vmci_connecter.lo
  CXX      src/libzmq_la-vmci_listener.lo
  CXX      src/libzmq_la-xpub.lo
  CXX      src/libzmq_la-xsub.lo
  CXX      src/libzmq_la-zmq.lo
  CXX      src/libzmq_la-zmq_utils.lo
  CXX      src/libzmq_la-decoder_allocators.lo
  CXX      src/libzmq_la-socket_poller.lo
  CXX      src/libzmq_la-zap_client.lo
  CXX      src/libzmq_la-zmtp_engine.lo
  CC       src/libzmq_la-tweetnacl.lo
  CXX      src/libzmq_la-ws_address.lo
  CXX      src/libzmq_la-wss_address.lo
  CXX      src/libzmq_la-ws_connecter.lo
  CXX      src/libzmq_la-ws_decoder.lo
  CXX      src/libzmq_la-ws_encoder.lo
  CXX      src/libzmq_la-ws_engine.lo
  CXX      src/libzmq_la-ws_listener.lo
  CC       external/sha1/src_libzmq_la-sha1.lo
  CXXLD    src/libzmq.la
  CXXLD    tools/curve_keygen
  CXX      perf/local_lat.o
  CXXLD    perf/local_lat
  CXX      perf/remote_lat.o
  CXXLD    perf/remote_lat
  CXX      perf/local_thr.o
  CXXLD    perf/local_thr
  CXX      perf/remote_thr.o
  CXXLD    perf/remote_thr
  CXX      perf/inproc_lat.o
  CXXLD    perf/inproc_lat
  CXX      perf/inproc_thr.o
  CXXLD    perf/inproc_thr
  CXX      perf/proxy_thr.o
  CXXLD    perf/proxy_thr
  CXX      perf/benchmark_radix_tree-benchmark_radix_tree.o
  CXXLD    perf/benchmark_radix_tree
  CC       external/unity/unity.o
  AR       external/unity/libunity.a
  CXX      tests/libtestutil_a-testutil.o
  CXX      tests/libtestutil_a-testutil_monitoring.o
  CXX      tests/libtestutil_a-testutil_security.o
  CXX      tests/libtestutil_a-testutil_unity.o
  AR       tests/libtestutil.a
make[3]: Leaving directory '/home/ngchis/.config/doom-emacs/.local/straight/repos/emacs-zmq/src/libzmq'
make[2]: Leaving directory '/home/ngchis/.config/doom-emacs/.local/straight/repos/emacs-zmq/src/libzmq'
make[2]: Entering directory '/home/ngchis/.config/doom-emacs/.local/straight/repos/emacs-zmq/src'
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" -DPACKAGE_STRING=\"emacs-zmq\ 0.10.9\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I.  -DZMQ_BUILD_DRAFT_API=1  -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-socket.lo -MD -MP -MF .deps/emacs_zmq_la-socket.Tpo -c -o emacs_zmq_la-socket.lo `test -f 'socket.c' || echo './'`socket.c
libtool: compile:  gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" "-DPACKAGE_STRING=\"emacs-zmq 0.10.9\"" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -DZMQ_BUILD_DRAFT_API=1 -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-socket.lo -MD -MP -MF .deps/emacs_zmq_la-socket.Tpo -c socket.c  -fPIC -DPIC -o .libs/emacs_zmq_la-socket.o
mv -f .deps/emacs_zmq_la-socket.Tpo .deps/emacs_zmq_la-socket.Plo
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" -DPACKAGE_STRING=\"emacs-zmq\ 0.10.9\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I.  -DZMQ_BUILD_DRAFT_API=1  -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-context.lo -MD -MP -MF .deps/emacs_zmq_la-context.Tpo -c -o emacs_zmq_la-context.lo `test -f 'context.c' || echo './'`context.c
libtool: compile:  gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" "-DPACKAGE_STRING=\"emacs-zmq 0.10.9\"" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -DZMQ_BUILD_DRAFT_API=1 -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-context.lo -MD -MP -MF .deps/emacs_zmq_la-context.Tpo -c context.c  -fPIC -DPIC -o .libs/emacs_zmq_la-context.o
mv -f .deps/emacs_zmq_la-context.Tpo .deps/emacs_zmq_la-context.Plo
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" -DPACKAGE_STRING=\"emacs-zmq\ 0.10.9\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I.  -DZMQ_BUILD_DRAFT_API=1  -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-msg.lo -MD -MP -MF .deps/emacs_zmq_la-msg.Tpo -c -o emacs_zmq_la-msg.lo `test -f 'msg.c' || echo './'`msg.c
libtool: compile:  gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" "-DPACKAGE_STRING=\"emacs-zmq 0.10.9\"" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -DZMQ_BUILD_DRAFT_API=1 -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-msg.lo -MD -MP -MF .deps/emacs_zmq_la-msg.Tpo -c msg.c  -fPIC -DPIC -o .libs/emacs_zmq_la-msg.o
mv -f .deps/emacs_zmq_la-msg.Tpo .deps/emacs_zmq_la-msg.Plo
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" -DPACKAGE_STRING=\"emacs-zmq\ 0.10.9\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I.  -DZMQ_BUILD_DRAFT_API=1  -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-constants.lo -MD -MP -MF .deps/emacs_zmq_la-constants.Tpo -c -o emacs_zmq_la-constants.lo `test -f 'constants.c' || echo './'`constants.c
libtool: compile:  gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" "-DPACKAGE_STRING=\"emacs-zmq 0.10.9\"" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -DZMQ_BUILD_DRAFT_API=1 -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-constants.lo -MD -MP -MF .deps/emacs_zmq_la-constants.Tpo -c constants.c  -fPIC -DPIC -o .libs/emacs_zmq_la-constants.o
mv -f .deps/emacs_zmq_la-constants.Tpo .deps/emacs_zmq_la-constants.Plo
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" -DPACKAGE_STRING=\"emacs-zmq\ 0.10.9\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I.  -DZMQ_BUILD_DRAFT_API=1  -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-util.lo -MD -MP -MF .deps/emacs_zmq_la-util.Tpo -c -o emacs_zmq_la-util.lo `test -f 'util.c' || echo './'`util.c
libtool: compile:  gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" "-DPACKAGE_STRING=\"emacs-zmq 0.10.9\"" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -DZMQ_BUILD_DRAFT_API=1 -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-util.lo -MD -MP -MF .deps/emacs_zmq_la-util.Tpo -c util.c  -fPIC -DPIC -o .libs/emacs_zmq_la-util.o
mv -f .deps/emacs_zmq_la-util.Tpo .deps/emacs_zmq_la-util.Plo
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" -DPACKAGE_STRING=\"emacs-zmq\ 0.10.9\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I.  -DZMQ_BUILD_DRAFT_API=1  -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-core.lo -MD -MP -MF .deps/emacs_zmq_la-core.Tpo -c -o emacs_zmq_la-core.lo `test -f 'core.c' || echo './'`core.c
libtool: compile:  gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" "-DPACKAGE_STRING=\"emacs-zmq 0.10.9\"" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -DZMQ_BUILD_DRAFT_API=1 -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-core.lo -MD -MP -MF .deps/emacs_zmq_la-core.Tpo -c core.c  -fPIC -DPIC -o .libs/emacs_zmq_la-core.o
mv -f .deps/emacs_zmq_la-core.Tpo .deps/emacs_zmq_la-core.Plo
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" -DPACKAGE_STRING=\"emacs-zmq\ 0.10.9\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I.  -DZMQ_BUILD_DRAFT_API=1  -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-poll.lo -MD -MP -MF .deps/emacs_zmq_la-poll.Tpo -c -o emacs_zmq_la-poll.lo `test -f 'poll.c' || echo './'`poll.c
libtool: compile:  gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" "-DPACKAGE_STRING=\"emacs-zmq 0.10.9\"" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -DZMQ_BUILD_DRAFT_API=1 -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-poll.lo -MD -MP -MF .deps/emacs_zmq_la-poll.Tpo -c poll.c  -fPIC -DPIC -o .libs/emacs_zmq_la-poll.o
mv -f .deps/emacs_zmq_la-poll.Tpo .deps/emacs_zmq_la-poll.Plo
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" -DPACKAGE_STRING=\"emacs-zmq\ 0.10.9\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I.  -DZMQ_BUILD_DRAFT_API=1  -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-emacs-zmq.lo -MD -MP -MF .deps/emacs_zmq_la-emacs-zmq.Tpo -c -o emacs_zmq_la-emacs-zmq.lo `test -f 'emacs-zmq.c' || echo './'`emacs-zmq.c
libtool: compile:  gcc -DPACKAGE_NAME=\"emacs-zmq\" -DPACKAGE_TARNAME=\"emacs-zmq\" -DPACKAGE_VERSION=\"0.10.9\" "-DPACKAGE_STRING=\"emacs-zmq 0.10.9\"" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"emacs-zmq\" -DVERSION=\"0.10.9\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -DZMQ_BUILD_DRAFT_API=1 -Ilibzmq/include -fPIC -g -O2 -MT emacs_zmq_la-emacs-zmq.lo -MD -MP -MF .deps/emacs_zmq_la-emacs-zmq.Tpo -c emacs-zmq.c  -fPIC -DPIC -o .libs/emacs_zmq_la-emacs-zmq.o
mv -f .deps/emacs_zmq_la-emacs-zmq.Tpo .deps/emacs_zmq_la-emacs-zmq.Plo
/bin/sh ./libtool  --tag=CC   --mode=link gcc -Ilibzmq/include -fPIC -g -O2 -module -avoid-version  -Wl,libzmq/src/.libs/libzmq.a -Wl,-l:libstdc++.a -Wl,-l:libgcc.a  -o emacs-zmq.la -rpath /home/ngchis/.config/doom-emacs/.local/straight/repos/emacs-zmq/lib emacs_zmq_la-socket.lo emacs_zmq_la-context.lo emacs_zmq_la-msg.lo emacs_zmq_la-constants.lo emacs_zmq_la-util.lo emacs_zmq_la-core.lo emacs_zmq_la-poll.lo emacs_zmq_la-emacs-zmq.lo  
libtool: link: gcc -shared  -fPIC -DPIC  .libs/emacs_zmq_la-socket.o .libs/emacs_zmq_la-context.o .libs/emacs_zmq_la-msg.o .libs/emacs_zmq_la-constants.o .libs/emacs_zmq_la-util.o .libs/emacs_zmq_la-core.o .libs/emacs_zmq_la-poll.o .libs/emacs_zmq_la-emacs-zmq.o    -g -O2 -Wl,libzmq/src/.libs/libzmq.a -Wl,-l:libstdc++.a -Wl,-l:libgcc.a   -Wl,-soname -Wl,emacs-zmq.so -o .libs/emacs-zmq.so
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-zmq.o): relocation R_X86_64_32 against symbol `_ZSt7nothrow' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-zmq_utils.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-socket_poller.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-tweetnacl.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-clock.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-ctx.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-epoll.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-err.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-io_thread.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-ip.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-mailbox.o): relocation R_X86_64_32 against `.rodata._ZN3zmq7ypipe_tINS_9command_tELi16EE5writeERKS1_b.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-metadata.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-msg.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-object.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-options.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-own.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq5own_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-peer.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq6peer_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-pipe.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-poller_base.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq13poller_base_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-proxy.o): relocation R_X86_64_32 against symbol `_ZSt7nothrow' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-reaper.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-server.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-signaler.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-socket_base.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-stream.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq8stream_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-stream_listener_base.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-sub.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq5sub_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-tcp_address.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-tcp_listener.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq14tcp_listener_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-thread.o): relocation R_X86_64_32 against `.text' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-tipc_address.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-tipc_listener.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq15tipc_listener_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-udp_address.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq13udp_address_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-xpub.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-xsub.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq6xsub_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-zmtp_engine.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq13zmtp_engine_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-ws_address.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-ws_listener.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-address.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-channel.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq9channel_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-client.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq8client_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-curve_client.o): relocation R_X86_64_32S against hidden symbol `_ZTCN3zmq14curve_client_tE0_NS_22curve_mechanism_base_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-curve_mechanism_base.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq22curve_mechanism_base_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-curve_server.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-dealer.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq8dealer_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-dgram.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq7dgram_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-dish.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq14dish_session_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-dist.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-endpoint.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-fq.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-gather.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq8gather_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-io_object.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-ip_resolver.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-ipc_address.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-ipc_listener.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-lb.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-mailbox_safe.o): relocation R_X86_64_32 against `.rodata._ZN3zmq7ypipe_tINS_9command_tELi16EE5writeERKS1_b.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-mechanism.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-mechanism_base.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq16mechanism_base_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-mtrie.o): relocation R_X86_64_32 against `.rodata._ZN3zmq15generic_mtrie_tINS_6pipe_tEED2Ev.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-null_mechanism.o): relocation R_X86_64_32S against hidden symbol `_ZTCN3zmq16null_mechanism_tE0_NS_12zap_client_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-pair.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq6pair_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-plain_client.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq16mechanism_base_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-plain_server.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-pub.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq5pub_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-pull.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq6pull_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-push.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq6push_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-radio.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq15radio_session_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-radix_tree.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-raw_engine.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq12raw_engine_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-rep.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq5rep_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-req.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq5req_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-router.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-scatter.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq9scatter_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-session_base.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-socks_connecter.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-stream_connecter_base.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-stream_engine_base.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-tcp.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-tcp_connecter.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq15tcp_connecter_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-tipc_connecter.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq16tipc_connecter_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-udp_engine.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-v1_decoder.o): relocation R_X86_64_32S against hidden symbol `_ZN3zmq12v1_decoder_t19one_byte_size_readyEPKh' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-v2_decoder.o): relocation R_X86_64_32S against hidden symbol `_ZN3zmq12v2_decoder_t11flags_readyEPKh' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-v1_encoder.o): relocation R_X86_64_32S against hidden symbol `_ZN3zmq12v1_encoder_t13message_readyEv' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-v2_encoder.o): relocation R_X86_64_32S against hidden symbol `_ZN3zmq12v2_encoder_t10size_readyEv' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-v3_1_encoder.o): relocation R_X86_64_32S against hidden symbol `_ZN3zmq14v3_1_encoder_t10size_readyEv' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-decoder_allocators.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-zap_client.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-ws_connecter.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq14ws_connecter_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-ws_engine.o): relocation R_X86_64_32S against hidden symbol `_ZN3zmq11ws_engine_t28close_connection_after_closeEPNS_5msg_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-ipc_connecter.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq15ipc_connecter_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-raw_decoder.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq13raw_decoder_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-raw_encoder.o): relocation R_X86_64_32S against hidden symbol `_ZN3zmq13raw_encoder_t17raw_message_readyEv' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-socks.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-ws_decoder.o): relocation R_X86_64_32S against hidden symbol `_ZN3zmq12ws_decoder_t21size_first_byte_readyEPKh' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-ws_encoder.o): relocation R_X86_64_32S against hidden symbol `_ZTVN3zmq12ws_encoder_tE' can not be used when making a shared object
/usr/bin/ld: libzmq/src/.libs/libzmq.a(libzmq_la-socks.o): warning: relocation against `stderr@@GLIBC_2.2.5' in read-only section `.text'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:491: emacs-zmq.la] Error 1
make[2]: Leaving directory '/home/ngchis/.config/doom-emacs/.local/straight/repos/emacs-zmq/src'
make[1]: *** [Makefile:607: all-recursive] Error 1
make[1]: Leaving directory '/home/ngchis/.config/doom-emacs/.local/straight/repos/emacs-zmq/src'
make: *** [Makefile:56: /home/ngchis/.config/doom-emacs/.local/straight/repos/emacs-zmq//emacs-zmq.so] Error 2

I tried passing CFLAGS=-fPIC to libzmq's configure script, but it had no effect. I also tried running CFLAGS=-fPIC; make rather than just make and that also had no effect. I ran make clean and make distclean in emacs-zmq and libzmq in between attempts. Unfortunely, I know little about the C build process so I am unsure how to further diagnose the issue. Any help would be appreciated!

Requirement of zeromq with draft API

Hey @dzop,

The library works very well. However, I faced many issues installing libzmq with draft API support. Most distributions do not supply the library with that compilation option enabled. In Arch GNU/Linux, for example, the package zeromq (which supplies libzmq) has to be recompiled from scratch and manually set to enable the draft APIs.

I was thinking that two paths could be taken to make this library easier to install for others:

  1. Only use the non-draft API and detect if it's enabled for optional functionality.
  2. Provide a static local library (of libzmq) and compile it at installation time.

Do you think any of those two are a possibility?

Error in ZMQ subprocess: error, ("Lisp nesting exceeds ‘max-lisp-eval-depth’")

I got this error using emacs-jupyter, but I thought it would be more appropriate here.

I was using the emacs-snapshot PPA on ubuntu (https://launchpad.net/~ubuntu-elisp/+archive/ubuntu/ppa) and when I updated it today I got the following error when I tried to execute a python code block with emacs-jupyter:

Loading /home/hades/.emacs.d/elpa/zmq-20200912.1126/emacs-zmq.so (module)...done
error in process filter: zmq--subprocess-filter: Error in ZMQ subprocess: error, ("Lisp nesting exceeds ‘max-lisp-eval-depth’")
error in process filter: Error in ZMQ subprocess: error, ("Lisp nesting exceeds ‘max-lisp-eval-depth’")

It happened with regular python blocks too but the first one I tried was an ipython magic one:

#+BEGIN_SRC python :results none :exports none
%load_ext autoreload
%autoreload 2
#+END_SRC

I tried uninstalling and reinstalling the emacs-jupyter and emacs-zmq packages but that didn't seem to fix it so I decided to stop using emacs-snapshot. I pulled the emacs git repository and tried to build emacs from the HEAD of the emacs-27 branch and from master but got the same errors so I decided to go further back.

The previous snapshot was from last August so I wasn't sure when whatever change in emacs that was causing it happened so I used the emacs git repository to revert it to the last tagged release (emacs-27.1-rc2). This seems to fix the problem, once I re-compiled the emacs-jupyter and all the rest of the emacs packages.

Building emacs-zmq module binaries for Windows platforms

Travis has the option of uploading binaries to Github. This would enable supporting Windows platforms.

What we could do is install the mingw-w64 cross compilers with the following in Travis

addons:
  apt:
    packages:
      - mingw-w64

Then we would have to modify src/configure.ac to pass LC_INIT([win32-dll]) instead of LC_INIT([shared]) if cross compiling for Windows. Also we would have to make a modification to src/Makefile.am, see the note on win32-dll at https://www.gnu.org/software/libtool/manual/html_node/LT_005fINIT.html.

Then to do the cross compiling we would have to pass the --host=i686-w64-mingw32 or --host=x86_64-w64-mingw32 options to the configure scripts. Both for the emacs-zmq module and libzmq.

It would also make sense to link a static libzmq into emacs-zmq so that all that is required for users is to download a pre-compiled emacs-zmq.

EDIT: This actually looks like it is not possible, so we would have to provide both a pre-compiled libzmq and emacs-zmq.

After doing all of the above, the built emacs-zmq module can be uploaded to Github.

.dylib module for MacOSX

I am using emacs 28, currently its module-file-suffix is configured as .dylib, however emacs-zmq release assets only contains .so module file. Is it possible to include a .dylib module too (or are there any build instructions?).

From emacs documentation:

 -- Variable: module-file-suffix
     This variable holds the system-dependent value of the file-name
     extension of the module files.  Its value is ‘.so’ on POSIX hosts,
     ‘.dylib’ on macOS, and ‘.dll’ on MS-Windows.

   On macOS, dynamic modules can also have the suffix ‘.so’ in addition
to ‘.dylib’.

Simply changing module-file-suffix to .so causes the following error on module load.

dyld: lazy symbol binding failed: Symbol not found: _zmq_ctx_new
  Referenced from: /Users/st21371/.emacs.d/.local/straight/build/zmq/emacs-zmq.so
  Expected in: flat namespace

dyld: Symbol not found: _zmq_ctx_new
  Referenced from: /Users/st21371/.emacs.d/.local/straight/build/zmq/emacs-zmq.so
  Expected in: flat namespace

include a `.dylib`-extensioned copy of the `.so` file for the macOS releases

Some package in my emacs (I did not trace which it was, probably emacs-jupyter) expects the dynamic module downloaded to have a .dylib extension on emacs. When I build it from source, it automatically does this:

...
mkdir -p /Users/evar/.emacs.d.doom/.local/straight/build-28.0.60/zmq/
cp src/.libs/emacs-zmq.so /Users/evar/.emacs.d.doom/.local/straight/build-28.0.60/zmq//emacs-zmq.dylib

Compilation finished at Wed Oct 13 17:56:38

Signature doesnt match

Hi,

I am encountering signature verification issues, the error is:

Check for compatible module binary to download? (y or n) y
Downloading https://github.com/dzop/emacs-zmq/releases/download/v0.10.10/emacs-zmq-x86_64-w64-mingw32.tar.gz
Verifying sha256 signature of emacs-zmq-x86_64-w64-mingw32.tar.gz
zmq--download-and-extract-file: Signature did not match content

My system is:
Windows 10
Using emacs obtained from: https://github.com/m-parashar/emax64
Emacs version 26.2
Spacemacs version 0.300 (develop)
jupyter and python installed using anaconda

The error occurs when running the jupyter-run-repl function from the emacs-jupyter repo. The issue posted on that rep is linked here: emacs-jupyter issue 168

this also happens if I just run (require 'zmq) in the scratch buffer

Segmentation fault (core dumped) when testing - emacs-zmq.c: No such file or directory

After rebuilding emacs I began seeing

(gdb) file emacs
Reading symbols from emacs...
(gdb) run -nw -Q -batch --module-assertions -L . -l zmq --eval "(zmq-context)"
Starting program: /usr/local/bin/emacs -nw -Q -batch --module-assertions -L . -l zmq --eval "(zmq-context)"
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffebaf2640 (LWP 210618)]
Loading ~/git/emacs-zmq/emacs-zmq.so (module)...

Thread 1 "emacs" received signal SIGSEGV, Segmentation fault.
emacs_module_init (ert=ert@entry=0xb55290) at emacs-zmq.c:286
286	emacs-zmq.c: No such file or directory.

This was on GNU Emacs 28.0.91 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.31, cairo version 1.16.0) of 2022-02-19 built with ./configure --with-xwidgets --with-modules --with-json CC=clang (happens without clang as well)

zmq crashes emacs

Not 100% sure whether it should be here or in the main zmq repository. Emacs crashed when I clicked the menu bar, and apparently ZMQ is at fault, though I'm far from certain about this. I am unable to reproduce this.

Process:               Emacs [71984]
Path:                  /usr/local/Cellar/emacs-head/HEAD-24c3fa9_1/Emacs.app/Contents/MacOS/Emacs
Identifier:            Emacs
Version:               Version 28.0.50 (9.0)
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           Emacs [71984]
User ID:               501

Date/Time:             2020-09-15 11:23:39.114 -0700
OS Version:            Mac OS X 10.15.6 (19G2021)
Report Version:        12
Bridge OS Version:     4.6 (17P6610)
Anonymous UUID:        <omitted>


Time Awake Since Boot: 44000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  ZMQbg/1  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
Invalid or prematurely-freed autorelease pool 0x7fe26880d190.

Thread 0 Crashed:: ZMQbg/1  Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff729bd33a __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff72a79e60 pthread_kill + 430
2   libsystem_c.dylib             	0x00007fff728d493e raise + 26
3   org.gnu.Emacs                 	0x000000010acbeb6f terminate_due_to_signal + 152
4   org.gnu.Emacs                 	0x000000010acbf298 emacs_abort + 15
5   org.gnu.Emacs                 	0x000000010ac8e0b7 ns_term_shutdown + 119
6   org.gnu.Emacs                 	0x000000010abbce73 shut_down_emacs + 340
7   org.gnu.Emacs                 	0x000000010acbeb3d terminate_due_to_signal + 102
8   org.gnu.Emacs                 	0x000000010abd660b handle_fatal_signal + 14
9   org.gnu.Emacs                 	0x000000010abd667d deliver_thread_signal + 114
10  org.gnu.Emacs                 	0x000000010abd542f deliver_fatal_thread_signal + 9
11  libsystem_platform.dylib      	0x00007fff72a6e5fd _sigtramp + 29
12  ???                           	0x00000000deadbeef 0 + 3735928559
13  libsystem_c.dylib             	0x00007fff72947270 __puts_null__ + 17
14  libsystem_kernel.dylib        	0x00007fff729d838f abort_with_reason + 19
15  libobjc.A.dylib               	0x00007fff716de820 _objc_fatalv(unsigned long long, unsigned long long, char const*, __va_list_tag*) + 114
16  libobjc.A.dylib               	0x00007fff716de7ae _objc_fatal(char const*, ...) + 135
17  libobjc.A.dylib               	0x00007fff716df4ab AutoreleasePoolPage::badPop(void*) + 139
18  com.apple.CoreFoundation      	0x00007fff387c8a85 _CFAutoreleasePoolPop + 22
19  com.apple.Foundation          	0x00007fff3ae62ac1 -[NSAutoreleasePool release] + 129
20  org.gnu.Emacs                 	0x000000010aca4c5a ns_update_menubar + 2112
21  org.gnu.Emacs                 	0x000000010aca4c95 ns_activate_menubar + 14
22  org.gnu.Emacs                 	0x000000010abc3fe7 read_char + 6645
23  org.gnu.Emacs                 	0x000000010abc1125 read_key_sequence + 1214
24  org.gnu.Emacs                 	0x000000010abbfe36 command_loop_1 + 857
25  org.gnu.Emacs                 	0x000000010ac27e93 internal_condition_case + 84
26  org.gnu.Emacs                 	0x000000010abcc471 command_loop_2 + 37
27  org.gnu.Emacs                 	0x000000010ac27b30 internal_catch + 74
28  org.gnu.Emacs                 	0x000000010abbf4ff command_loop + 110
29  org.gnu.Emacs                 	0x000000010abbf451 recursive_edit_1 + 115
30  org.gnu.Emacs                 	0x000000010abbf611 Frecursive_edit + 226
31  org.gnu.Emacs                 	0x000000010ac29993 funcall_subr + 171
32  org.gnu.Emacs                 	0x000000010ac292a3 Ffuncall + 646
33  org.gnu.Emacs                 	0x000000010ac56f9d exec_byte_code + 1356
34  org.gnu.Emacs                 	0x000000010ac29241 Ffuncall + 548
35  org.gnu.Emacs                 	0x000000010ac56f9d exec_byte_code + 1356
36  org.gnu.Emacs                 	0x000000010ac268de eval_sub + 1335
37  org.gnu.Emacs                 	0x000000010ac45e95 readevalloop + 1497
38  org.gnu.Emacs                 	0x000000010ac447a4 Fload + 1922
39  org.gnu.Emacs                 	0x000000010ac460b0 save_match_data_load + 100
40  org.gnu.Emacs                 	0x000000010ac3177b Frequire + 523
41  org.gnu.Emacs                 	0x000000010ac268de eval_sub + 1335
42  org.gnu.Emacs                 	0x000000010ac45e8e readevalloop + 1490
43  org.gnu.Emacs                 	0x000000010ac462d2 Feval_buffer + 366
44  org.gnu.Emacs                 	0x000000010ac29a49 funcall_subr + 353
45  org.gnu.Emacs                 	0x000000010ac292a3 Ffuncall + 646
46  org.gnu.Emacs                 	0x000000010ac56f9d exec_byte_code + 1356
47  org.gnu.Emacs                 	0x000000010ac29d76 funcall_lambda + 642
48  org.gnu.Emacs                 	0x000000010ac29241 Ffuncall + 548
49  org.gnu.Emacs                 	0x000000010ac29731 call4 + 58
50  org.gnu.Emacs                 	0x000000010ac444e9 Fload + 1223
51  org.gnu.Emacs                 	0x000000010ac460b0 save_match_data_load + 100
52  org.gnu.Emacs                 	0x000000010ac3177b Frequire + 523
53  org.gnu.Emacs                 	0x000000010ac268de eval_sub + 1335
54  org.gnu.Emacs                 	0x000000010ac45e8e readevalloop + 1490
55  org.gnu.Emacs                 	0x000000010ac462d2 Feval_buffer + 366
56  org.gnu.Emacs                 	0x000000010ac29a49 funcall_subr + 353
57  org.gnu.Emacs                 	0x000000010ac292a3 Ffuncall + 646
58  org.gnu.Emacs                 	0x000000010ac56f9d exec_byte_code + 1356
59  org.gnu.Emacs                 	0x000000010ac29d76 funcall_lambda + 642
60  org.gnu.Emacs                 	0x000000010ac29241 Ffuncall + 548
61  org.gnu.Emacs                 	0x000000010ac29731 call4 + 58
62  org.gnu.Emacs                 	0x000000010ac444e9 Fload + 1223
63  org.gnu.Emacs                 	0x000000010ac460b0 save_match_data_load + 100
64  org.gnu.Emacs                 	0x000000010ac3177b Frequire + 523
65  org.gnu.Emacs                 	0x000000010ac268de eval_sub + 1335
66  org.gnu.Emacs                 	0x000000010ac45e8e readevalloop + 1490
67  org.gnu.Emacs                 	0x000000010ac462d2 Feval_buffer + 366
68  org.gnu.Emacs                 	0x000000010ac29a49 funcall_subr + 353
69  org.gnu.Emacs                 	0x000000010ac292a3 Ffuncall + 646
70  org.gnu.Emacs                 	0x000000010ac56f9d exec_byte_code + 1356
71  org.gnu.Emacs                 	0x000000010ac29d76 funcall_lambda + 642
72  org.gnu.Emacs                 	0x000000010ac29241 Ffuncall + 548
73  org.gnu.Emacs                 	0x000000010ac29731 call4 + 58
74  org.gnu.Emacs                 	0x000000010ac444e9 Fload + 1223
75  org.gnu.Emacs                 	0x000000010ac460b0 save_match_data_load + 100
76  org.gnu.Emacs                 	0x000000010ac27a38 Fautoload_do_load + 316
77  org.gnu.Emacs                 	0x000000010ac29a0c funcall_subr + 292
78  org.gnu.Emacs                 	0x000000010ac292a3 Ffuncall + 646
79  org.gnu.Emacs                 	0x000000010ac56f9d exec_byte_code + 1356
80  org.gnu.Emacs                 	0x000000010ac28c6a apply_lambda + 354
81  org.gnu.Emacs                 	0x000000010ac2660d eval_sub + 614
82  org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
83  org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
84  org.gnu.Emacs                 	0x000000010ac27d3d internal_lisp_condition_case + 321
85  org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
86  org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
87  org.gnu.Emacs                 	0x000000010ac27792 Flet + 571
88  org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
89  org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
90  org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
91  org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
92  org.gnu.Emacs                 	0x000000010ac29d98 funcall_lambda + 676
93  org.gnu.Emacs                 	0x000000010ac29241 Ffuncall + 548
94  org.gnu.Emacs                 	0x000000010ac26a1f eval_sub + 1656
95  org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
96  org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
97  org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
98  org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
99  org.gnu.Emacs                 	0x000000010ac27792 Flet + 571
100 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
101 org.gnu.Emacs                 	0x000000010ac29d98 funcall_lambda + 676
102 org.gnu.Emacs                 	0x000000010ac28c6a apply_lambda + 354
103 org.gnu.Emacs                 	0x000000010ac2660d eval_sub + 614
104 org.gnu.Emacs                 	0x000000010ac26be8 Fprog1 + 19
105 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
106 org.gnu.Emacs                 	0x000000010ac27bd0 Funwind_protect + 123
107 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
108 org.gnu.Emacs                 	0x000000010ac29d98 funcall_lambda + 676
109 org.gnu.Emacs                 	0x000000010ac28c6a apply_lambda + 354
110 org.gnu.Emacs                 	0x000000010ac2660d eval_sub + 614
111 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
112 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
113 org.gnu.Emacs                 	0x000000010ac26be8 Fprog1 + 19
114 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
115 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
116 org.gnu.Emacs                 	0x000000010ac27792 Flet + 571
117 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
118 org.gnu.Emacs                 	0x000000010ac27d3d internal_lisp_condition_case + 321
119 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
120 org.gnu.Emacs                 	0x000000010ac27bd0 Funwind_protect + 123
121 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
122 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
123 org.gnu.Emacs                 	0x000000010ac27792 Flet + 571
124 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
125 org.gnu.Emacs                 	0x000000010ac29d98 funcall_lambda + 676
126 org.gnu.Emacs                 	0x000000010ac29241 Ffuncall + 548
127 org.gnu.Emacs                 	0x000000010ac28f18 Fapply + 580
128 org.gnu.Emacs                 	0x000000010ac26a1f eval_sub + 1656
129 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
130 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
131 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
132 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
133 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
134 org.gnu.Emacs                 	0x000000010ac27792 Flet + 571
135 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
136 org.gnu.Emacs                 	0x000000010ac29d98 funcall_lambda + 676
137 org.gnu.Emacs                 	0x000000010ac29241 Ffuncall + 548
138 org.gnu.Emacs                 	0x000000010ac28f18 Fapply + 580
139 org.gnu.Emacs                 	0x000000010ac26a1f eval_sub + 1656
140 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
141 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
142 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
143 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
144 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
145 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
146 org.gnu.Emacs                 	0x000000010ac27792 Flet + 571
147 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
148 org.gnu.Emacs                 	0x000000010ac29d98 funcall_lambda + 676
149 org.gnu.Emacs                 	0x000000010ac28c6a apply_lambda + 354
150 org.gnu.Emacs                 	0x000000010ac2660d eval_sub + 614
151 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
152 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
153 org.gnu.Emacs                 	0x000000010ac27bd0 Funwind_protect + 123
154 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
155 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
156 org.gnu.Emacs                 	0x000000010ac274ac FletX + 324
157 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
158 org.gnu.Emacs                 	0x000000010ac29d98 funcall_lambda + 676
159 org.gnu.Emacs                 	0x000000010ac28c6a apply_lambda + 354
160 org.gnu.Emacs                 	0x000000010ac2660d eval_sub + 614
161 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
162 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
163 org.gnu.Emacs                 	0x000000010ac29d98 funcall_lambda + 676
164 org.gnu.Emacs                 	0x000000010ac29241 Ffuncall + 548
165 org.gnu.Emacs                 	0x000000010ac245e9 Ffuncall_interactively + 73
166 org.gnu.Emacs                 	0x000000010ac292a3 Ffuncall + 646
167 org.gnu.Emacs                 	0x000000010ac249bb Fcall_interactively + 957
168 org.gnu.Emacs                 	0x000000010ac29a0c funcall_subr + 292
169 org.gnu.Emacs                 	0x000000010ac292a3 Ffuncall + 646
170 org.gnu.Emacs                 	0x000000010ac28f18 Fapply + 580
171 org.gnu.Emacs                 	0x000000010ac26a1f eval_sub + 1656
172 org.gnu.Emacs                 	0x000000010ac26b64 Fprogn + 32
173 org.gnu.Emacs                 	0x000000010ac27792 Flet + 571
174 org.gnu.Emacs                 	0x000000010ac267c6 eval_sub + 1055
175 org.gnu.Emacs                 	0x000000010ac29d98 funcall_lambda + 676
176 org.gnu.Emacs                 	0x000000010ac29241 Ffuncall + 548
177 org.gnu.Emacs                 	0x000000010ac28f18 Fapply + 580
178 org.gnu.Emacs                 	0x000000010ac292a3 Ffuncall + 646
179 org.gnu.Emacs                 	0x000000010ac56f9d exec_byte_code + 1356
180 org.gnu.Emacs                 	0x000000010ac29241 Ffuncall + 548
181 org.gnu.Emacs                 	0x000000010ac56f9d exec_byte_code + 1356
182 org.gnu.Emacs                 	0x000000010ac29241 Ffuncall + 548
183 org.gnu.Emacs                 	0x000000010ac2968b call1 + 46
184 org.gnu.Emacs                 	0x000000010abc0059 command_loop_1 + 1404
185 org.gnu.Emacs                 	0x000000010ac27e93 internal_condition_case + 84
186 org.gnu.Emacs                 	0x000000010abcc471 command_loop_2 + 37
187 org.gnu.Emacs                 	0x000000010ac27b30 internal_catch + 74
188 org.gnu.Emacs                 	0x000000010acbeec1 command_loop.cold.1 + 69
189 org.gnu.Emacs                 	0x000000010abbf514 command_loop + 131
190 org.gnu.Emacs                 	0x000000010abbf451 recursive_edit_1 + 115
191 org.gnu.Emacs                 	0x000000010abbf611 Frecursive_edit + 226
192 org.gnu.Emacs                 	0x000000010abbe743 main + 6262
193 libdyld.dylib                 	0x00007fff72875cc9 start + 1

Thread 1:: gmain
0   libsystem_kernel.dylib        	0x00007fff729bd3d6 poll + 10
1   libglib-2.0.0.dylib           	0x000000010b42740d g_main_context_iterate + 445
2   libglib-2.0.0.dylib           	0x000000010b427516 g_main_context_iteration + 102
3   libglib-2.0.0.dylib           	0x000000010b4291e1 glib_worker_main + 33
4   libglib-2.0.0.dylib           	0x000000010b454c62 g_thread_proxy + 66
5   libsystem_pthread.dylib       	0x00007fff72a7a109 _pthread_start + 148
6   libsystem_pthread.dylib       	0x00007fff72a75b8b thread_start + 15

Thread 2:
0   libsystem_kernel.dylib        	0x00007fff729bf0fe __select + 10
1   org.gnu.Emacs                 	0x000000010ac8f03f -[EmacsApp fd_handler:] + 169
2   com.apple.Foundation          	0x00007fff3ae9c7a2 __NSThread__start__ + 1064
3   libsystem_pthread.dylib       	0x00007fff72a7a109 _pthread_start + 148
4   libsystem_pthread.dylib       	0x00007fff72a75b8b thread_start + 15

Thread 3:: com.apple.NSEventThread
0   libsystem_kernel.dylib        	0x00007fff729b6dfa mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff729b7170 mach_msg + 60
2   com.apple.CoreFoundation      	0x00007fff3880aef5 __CFRunLoopServiceMachPort + 247
3   com.apple.CoreFoundation      	0x00007fff388099c2 __CFRunLoopRun + 1319
4   com.apple.CoreFoundation      	0x00007fff38808e3e CFRunLoopRunSpecific + 462
5   com.apple.AppKit              	0x00007fff35c1c954 _NSEventThread + 132
6   libsystem_pthread.dylib       	0x00007fff72a7a109 _pthread_start + 148
7   libsystem_pthread.dylib       	0x00007fff72a75b8b thread_start + 15

Thread 4:
0   libsystem_kernel.dylib        	0x00007fff729bb766 kevent + 10
1   emacs-zmq.dylib               	0x00000001137e1dd5 zmq::kqueue_t::loop() + 197 (kqueue.cpp:190)
2   emacs-zmq.dylib               	0x0000000113813ace thread_routine(void*) + 46 (thread.cpp:183)
3   libsystem_pthread.dylib       	0x00007fff72a7a109 _pthread_start + 148
4   libsystem_pthread.dylib       	0x00007fff72a75b8b thread_start + 15

Thread 5:
0   libsystem_kernel.dylib        	0x00007fff729bb766 kevent + 10
1   emacs-zmq.dylib               	0x00000001137e1dd5 zmq::kqueue_t::loop() + 197 (kqueue.cpp:190)
2   emacs-zmq.dylib               	0x0000000113813ace thread_routine(void*) + 46 (thread.cpp:183)
3   libsystem_pthread.dylib       	0x00007fff72a7a109 _pthread_start + 148
4   libsystem_pthread.dylib       	0x00007fff72a75b8b thread_start + 15

Thread 6:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 7:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 8:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 9:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 10:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 11:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 12:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 13:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 14:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 15:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 16:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 17:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 18:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 19:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 20:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 21:
0   libsystem_pthread.dylib       	0x00007fff72a75b68 start_wqthread + 0

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x000000010be0fdc0  rcx: 0x00007ffee50dcf48  rdx: 0x0000000000000000
  rdi: 0x0000000000000307  rsi: 0x0000000000000006  rbp: 0x00007ffee50dcf70  rsp: 0x00007ffee50dcf48
   r8: 0x00000000000001ff   r9: 0x00000000000007fb  r10: 0x000000010be0fdc0  r11: 0x0000000000000246
  r12: 0x0000000000000307  r13: 0x0000000000000000  r14: 0x0000000000000006  r15: 0x0000000000000016
  rip: 0x00007fff729bd33a  rfl: 0x0000000000000246  cr2: 0x000000016354f000
  
Logical CPU:     0
Error Code:      0x02000148
Trap Number:     133

---- Omitted Loaded Libraries ----

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 7
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 32891
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=647.9M resident=0K(0%) swapped_out_or_unallocated=647.9M(100%)
Writable regions: Total=1.0G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.0G(100%)
 
                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Accelerate framework               512K        4 
Activity Tracing                   256K        1 
CG backing stores                 2736K        6 
CG image                          15.5M       12 
CG raster data                    15.4M        1 
CoreAnimation                      184K       36 
CoreGraphics                         8K        1 
CoreImage                           56K        8 
CoreUI image data                 1020K       13 
Foundation                           4K        1 
IOAccelerator                       68K        7 
IOKit                             6140K       16 
IOSurface                          240K       60 
Kernel Alloc Once                    8K        1 
MALLOC                           828.3M      360 
MALLOC guard page                   32K        7 
MALLOC_NANO (reserved)           128.0M        1         reserved VM address space (unallocated)
STACK GUARD                       54.5M       22 
Stack                             20.2M       23 
VM_ALLOCATE                        128K       19 
__DATA                            34.3M      380 
__DATA_CONST                      1260K       43 
__FONT_DATA                          4K        1 
__LINKEDIT                       403.9M       46 
__OBJC_RO                         32.3M        1 
__OBJC_RW                         1908K        2 
__TEXT                           244.1M      363 
__UNICODE                          564K        1 
mapped file                        2.4G      960 
shared memory                      652K       18 
===========                     =======  ======= 
TOTAL                              4.2G     2414 
TOTAL, minus reserved VM space     4.1G     2414 

Model: MacBookPro16,1, BootROM 1037.147.4.0.0 (iBridge: 17.16.16610.0.0,0), 8 processors, 8-Core Intel Core i9, 2.3 GHz, 16 GB, SMC 
Graphics: kHW_IntelUHDGraphics630Item, Intel UHD Graphics 630, spdisplays_builtin
Graphics: kHW_AMDRadeonPro5500MItem, AMD Radeon Pro 5500M, spdisplays_pcie_device, 4 GB
Memory Module: BANK 0/ChannelA-DIMM0, 8 GB, DDR4, 2667 MHz, Micron, 8ATF1G64HZ-2G6E1
Memory Module: BANK 2/ChannelB-DIMM0, 8 GB, DDR4, 2667 MHz, Micron, 8ATF1G64HZ-2G6E1
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x7BF), wl0: Apr  7 2020 13:09:12 version 9.30.357.41.32.5.49 FWID 01-617711e7
Bluetooth: Version 7.0.6f7, 3 services, 27 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
Network Service: VLAN (vlan0), Ethernet, vlan0
Network Service: VLAN (vlan1), Ethernet, vlan1
PCI Card: pci8086,15f0, sppci_usbxhci, Thunderbolt@72,0,0
USB Device: USB 3.1 Bus
USB Device: USB3.1 Gen2 Hub
USB Device: BUP BK
USB Device: BUP BK
USB Device: USB3.1 Gen1 Hub
USB Device: USB3.0 Hub
USB Device: USB 10/100/1000 LAN
USB Device: USB-C Pro Card Reader
USB Device: USB2.1 Hub
USB Device: USB2.1 Hub
USB Device: USB2.0 Hub
USB Device: Das Keyboard
USB Device: Blue Microphones
USB Device: CalDigit USB-C Pro Audio
USB Device: USB 3.1 Bus
USB Device: Apple T2 Bus
USB Device: Composite Device
USB Device: Touch Bar Backlight
USB Device: Touch Bar Display
USB Device: Apple Internal Keyboard / Trackpad
USB Device: Headset
USB Device: Ambient Light Sensor
USB Device: FaceTime HD Camera (Built-in)
USB Device: Apple T2 Controller
Thunderbolt Bus: MacBook Pro, Apple Inc., 55.3
Thunderbolt Device: USB-C Pro Dock, <omitted>
Thunderbolt Bus: MacBook Pro, Apple Inc., 55.3

version `GLIBC_2.33' not found on ubuntu

Hi
I'm running emacs 29 from ubuntu snap.
when trying to run emacs-jupyter's jupyter-run-repl I get

Launching python3 kernel...
Starting python3 kernel process...done
Launching python3 kernel...done
Requesting kernel info...
Loading /home/yonatan/.config/emacs/.local/straight/build-29.2/zmq/emacs-zmq (module)...
byte-code: Module could not be opened: "/home/yonatan/.config/emacs/.local/straight/build-29.2/zmq/emacs-zmq.so", "/snap/emacs/2372/usr/bin/../../lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/yonatan/.config/emacs/.local/straight/build-29.2/zmq/emacs-zmq.so)"

Do you have any idea how to fix this?
Many thanks!

Unable to download module binary or compile the module.

I'm trying to set up emacs-jupyter with use-package. When emacs-zmq is automatically downloaded, it throws up this message:

zmq

However, either the module binary doesn't download or it isn't loaded properly because the message keeps popping up repeatedly until I click 'no'.
Note: I tried doing this within a docker container and it did download the module binary successfully.

Next, when the module binary wasn't downloaded, it asked me to compile the module directly but I got this compilation error:

-*- mode: compilation; default-directory: "~/.emacs.d/elpa/zmq-0.10.10/" -*-
Compilation started at Sun Nov 29 10:12:36

make EMACS=/usr/local/lib/emacs/26.3/bin/emacs-26.3
cd src && autoreconf -i
aclocal: warning: couldn't open directory 'm4': No such file or directory
configure.ac:8: installing './ar-lib'
configure.ac:7: installing './compile'
configure.ac:9: installing './config.guess'
configure.ac:9: installing './config.sub'
configure.ac:6: installing './install-sh'
configure.ac:6: installing './missing'
Makefile.am:4: error: Libtool library used but 'LIBTOOL' is undefined
Makefile.am:4:   The usual way to define 'LIBTOOL' is to add 'LT_INIT'
Makefile.am:4:   to 'configure.ac' and run 'aclocal' and 'autoconf' again.
Makefile.am:4:   If 'LT_INIT' is in 'configure.ac', make sure
Makefile.am:4:   its definition is in aclocal's search path.
Makefile.am: installing './depcomp'
autoreconf: automake failed with exit status: 1
make: *** [Makefile:63: src/configure] Error 1

Compilation exited abnormally with code 2 at Sun Nov 29 10:12:39

Why does this emacs package install successfully in a docker container while failing to install normally? Do I need root access?

Fail to build on MacOS

Hi, I'm trying to get this working on a mac and the build fails.

ld: warning: ignoring file ./src/.libs/libzmq.a, file was built for archive which is not the architecture being linked (x86_64): ./src/.libs/libzmq.a
Undefined symbols for architecture x86_64:
  "zmq::radix_tree::add(unsigned char const*, unsigned long)", referenced from:
      _main in benchmark_radix_tree-benchmark_radix_tree.o
  "zmq::radix_tree::check(unsigned char const*, unsigned long)", referenced from:
      void benchmark_lookup<zmq::radix_tree>(zmq::radix_tree&, std::__1::vector<unsigned char*, std::__1::allocator<unsigned char*> >&, std::__1::vector<unsigned char*, std::__1::allocator<unsigned char*> >&) in benchmark_radix_tree-benchmark_radix_tree.o
  "zmq::radix_tree::radix_tree()", referenced from:
      _main in benchmark_radix_tree-benchmark_radix_tree.o
  "zmq::radix_tree::~radix_tree()", referenced from:
      _main in benchmark_radix_tree-benchmark_radix_tree.o
  "zmq::trie_t::add(unsigned char*, unsigned long)", referenced from:
      _main in benchmark_radix_tree-benchmark_radix_tree.o
  "zmq::trie_t::check(unsigned char*, unsigned long)", referenced from:
      void benchmark_lookup<zmq::trie_t>(zmq::trie_t&, std::__1::vector<unsigned char*, std::__1::allocator<unsigned char*> >&, std::__1::vector<unsigned char*, std::__1::allocator<unsigned char*> >&) in benchmark_radix_tree-benchmark_radix_tree.o
  "zmq::trie_t::trie_t()", referenced from:
      _main in benchmark_radix_tree-benchmark_radix_tree.o
  "zmq::trie_t::~trie_t()", referenced from:
      _main in benchmark_radix_tree-benchmark_radix_tree.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [perf/benchmark_radix_tree] Error 1
make[1]: *** [install-recursive] Error 1
make: *** [/Users/Will/.emacs.d/private/emacs-zmq/libzmq/build/v4.3.1/lib/pkgconfig/libzmq.pc] Error 2

For emacs-plus via homebrew make test results in Modules not supported.

I tried the current release from emacsfromacosx, which did seem to have modules support -- ZMQ module not found. Build it? (y or n) came up. However same error as above occurred.

Windows: Error zmq-ENOTSOCK

During the follow up in #3 (comment), I tried debugging on another Windows machine and ran into another error. Since it surfaces in the subprocessing, it might be related, but I thought opening a new issue would be good in any case. Using the precompiled DLLs, the tests work from the command line. But when actually used from within a GUI emacs with an org-mode source block, I get the error error in process filter: progn: Error in ZMQ subprocess: zmq-ENOTSOCK.

With (setq zmq--subprocess-debug t) here is the full traceback: https://gist.github.com/fleimgruber/7b0702b6f9beda90f125885de8be27d5

Automatic download of binaries

Hi,

I am trying to design an automatic install for emacs-jupyter and would like to avoid the prompt asking for the installation of the correct emacs-zmq module. Is there any way to not have this popup, especially if one knows if it is a linux/windows/mac machine?

This is obviously not an issue, but I couldn't find any other way of getting in touch.

Cheers!

Build fails on 64-bit OpenSUSE Tumbleweed

When building on a 64-bit system, the configure step fails after building a local libzmq, saying that libzmq can't be found.

By changing the Makefile, and setting ZMQ_PKG_CONFIG_DIR = $(ZMQ_BUILD_DIR)/lib64/pkgconfig rather than ZMQ_PKG_CONFIG_DIR = $(ZMQ_BUILD_DIR)/lib/pkgconfig, the issue is mitigated.

failed to build emacs-zmq module on an apple silicon Mac

update:

I was later able to build the emacs-zmq.so file after simply deleting and reinstalling the emacs-zmq package. I assume my previous attempt to build the the file left some traces in the package directory that prevented a successful building.


I use emacs-jupyter, which depends on emacs-zmq, in addition I use a m2 MacBook. I was able to build the emacs-zmq.so module on my old intel MacBook, but somehow I failed to build it on my m2 MacBook. If I run make in the emacs-zmq directory, I get the following messages:

make EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs
/Library/Developer/CommandLineTools/usr/bin/make configure
cd src && ./configure CPPFLAGS="" \
        --prefix=/Users/xxxxxxx/.emacs.d/elpa/zmq-20230214.36 \
		--enable-shared=emacs-zmq --enable-static=zeromq \
		--without-docs --enable-drafts=yes --enable-libunwind=no \
		--disable-curve-keygen --disable-perf --disable-eventfd
checking for a BSD-compatible install... /opt/homebrew/bin/ginstall -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /opt/homebrew/bin/gmkdir -p
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... none
checking for ar... ar
checking the archiver (ar) interface... ar
checking build system type... aarch64-apple-darwin22.4.0
checking host system type... aarch64-apple-darwin22.4.0
./configure: line 4403: syntax error near unexpected token `ZMQ,'
./configure: line 4403: `PKG_CHECK_MODULES(ZMQ, libzmq,'
make[1]: *** [configure] Error 2
make: *** [src/Makefile] Error 2

I would appreciate any interpretation about what could be wrong. For more information, before the building, I installed via homebrew automake, autoconf, libtool, and pkg-config.

Error with native-comp: Error in ZMQ subprocess: invalid-function, (" Error: Wrong type argument: listp, #<subr jupyter-server-ioloop--recv-messages>")

When trying to evaluate a code block, emacs-jupyter fails with:

error in process filter: zmq--subprocess-filter: Error in ZMQ subprocess: invalid-function, (" Error: Wrong type argument: listp, #<subr jupyter-server-ioloop--recv-messages>")
error in process filter: Error in ZMQ subprocess: invalid-function, (" Error: Wrong type argument: listp, #<subr jupyter-server-ioloop--recv-messages>")
error in process filter: zmq--subprocess-filter: Error in ZMQ subprocess: invalid-function, (" Error: Wrong type argument: listp, #<subr jupyter-server-ioloop--recv-messages>")
error in process filter: Error in ZMQ subprocess: invalid-function, (" Error: Wrong type argument: listp, #<subr jupyter-server-ioloop--recv-messages>")
Assertion failed: (process-live-p process)

This error is not seen on emacs 27 and emacs 28 without the native-comp.

Emacs 28 is built from 6ca6c71cd0bf8fc970d9b1477ea61a670469f672

Applying the #22 doesn't seem to affect this issue.

Keyword argument :coding-system not one of (:name :buffer :command :coding :noquery :stop :connection-type :filter :sentinel :stderr :file-handler)

Hi,

Traceback:

Debugger entered--Lisp error: (error "Keyword argument :coding-system not one of (:name :buffer :command :coding :noquery :stop :connection-type :filter :sentinel :stderr :file-handler)")
  signal(error ("Keyword argument :coding-system not one of (:name :buffer :command :coding :noquery :stop :connection-type :filter :sentinel :stderr :file-handler)"))
  error("Keyword argument %s not one of (:name :buffer :command :coding :noquery :stop :connection-type :filter :sentinel :stderr :file-handler)" :coding-system)
  make-process--with-editor-process-filter(#f(advice-wrapper :filter-args #<subr make-process> explain--wrap-make-process-sentinel-filter-callback) :name "zmq" :buffer #<buffer  *zmq*-762995> :noquery t :connection-type pipe :coding-system no-conversion :filter zmq--subprocess-filter :sentinel zmq--subprocess-sentinel :stderr #<process zmq stderr> :command ("/usr/bin/emacs-26.3" "-Q" "-batch" "-L" "/home/benneti/.emacs.d/.local/straight/build/zmq/" "-l" "/home/benneti/.emacs.d/.local/straight/build/zmq/zmq.elc" "--eval" "(zmq--init-subprocess nil)"))
  apply(make-process--with-editor-process-filter #f(advice-wrapper :filter-args #<subr make-process> explain--wrap-make-process-sentinel-filter-callback) (:name "zmq" :buffer #<buffer  *zmq*-762995> :noquery t :connection-type pipe :coding-system no-conversion :filter zmq--subprocess-filter :sentinel zmq--subprocess-sentinel :stderr #<process zmq stderr> :command ("/usr/bin/emacs-26.3" "-Q" "-batch" "-L" "/home/benneti/.emacs.d/.local/straight/build/zmq/" "-l" "/home/benneti/.emacs.d/.local/straight/build/zmq/zmq.elc" "--eval" "(zmq--init-subprocess nil)")))
  make-process(:name "zmq" :buffer #<buffer  *zmq*-762995> :noquery t :connection-type pipe :coding-system no-conversion :filter zmq--subprocess-filter :sentinel zmq--subprocess-sentinel :stderr #<process zmq stderr> :command ("/usr/bin/emacs-26.3" "-Q" "-batch" "-L" "/home/benneti/.emacs.d/.local/straight/build/zmq/" "-l" "/home/benneti/.emacs.d/.local/straight/build/zmq/zmq.elc" "--eval" "(zmq--init-subprocess nil)"))
  zmq-start-process((lambda (ctx) (push "/home/benneti/.emacs.d/.local/straight/build/jupyter/" load-path) (require (quote jupyter-ioloop)) (setq jupyter-ioloop-poller (zmq-poller)) (setq jupyter-ioloop-stdin (let ((sock (zmq-socket ctx zmq-PAIR))) (prog1 sock (zmq-connect sock (format "tcp://127.0.0.1:%s" 56338))))) (zmq-poller-add jupyter-ioloop-poller jupyter-ioloop-stdin zmq-POLLIN) (let (events) (condition-case nil (progn (setq jupyter-channel-ioloop-session (jupyter-session :id "ebf1afbe-0e31-479b-8f7d-fd3b8c9ed710" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb")) (require (quote jupyter-channel-ioloop)) (require (quote jupyter-zmq-channel-ioloop)) (push (quote jupyter-zmq-channel-ioloop--recv-messages) jupyter-ioloop-post-hook) (cl-loop for channel in (quote (:shell :stdin :iopub)) unless (object-assoc channel :type jupyter-channel-ioloop-channels) do (push (jupyter-zmq-channel :session jupyter-channel-ioloop-session :type channel) jupyter-channel-ioloop-channels)) (setq jupyter-ioloop-pre-hook (mapcar (lambda ... ...) (append jupyter-ioloop-pre-hook ...))) (zmq-prin1 (quote (start))) (let ((on-stdin ...)) (while t (run-hooks ...) (setq events ...) (let ... ...) (run-hook-with-args ... events)))) (quit (mapc (function jupyter-stop-channel) jupyter-channel-ioloop-channels) (zmq-prin1 (quote (quit))))))) :filter #f(compiled-function (event) #<bytecode 0x28e32d5>) :buffer nil)
  #f(compiled-function (arg1 arg2 &rest rest) #<bytecode 0x28dad55>)(#<jupyter-zmq-channel-ioloop jupyter-zmq-channel-ioloop> #<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm> :buffer nil)
  apply(#f(compiled-function (arg1 arg2 &rest rest) #<bytecode 0x28dad55>) (#<jupyter-zmq-channel-ioloop jupyter-zmq-channel-ioloop> #<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm> :buffer nil))
  #f(compiled-function (&rest cnm-args) #<bytecode 0x2856d45>)(#<jupyter-zmq-channel-ioloop jupyter-zmq-channel-ioloop> #<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm> :buffer nil)
  #f(compiled-function (arg1 arg2 arg3 arg4 &rest rest) "Start IOLOOP, using SESSION to set the `jupyter-channel-ioloop-session'.\nAdd setup forms to IOLOOP that will initialize the\n`jupyter-channel-ioloop-session' variable to a `jupyter-session'\nbased on SESSION's id and key.  Also add\n`jupyter-ioloop-recv-messages' to `jupyter-ioloop-post-hook'.  In\naddition add the events send, start-channel, and stop-channel\nthat the parent Emacs process can send to the IOLOOP.  See\n`jupyter-channel-ioloop-add-send-event',\n`jupyter-channel-ioloop-add-start-channel-event', and\n`jupyter-ioloop-add-stop-channel-event'.\n\nAfter doing the above initialization, start the IOLOOP.  OBJ and\nBUFFER have the same meaning as in the method definition for\n`jupyter-ioloop'." #<bytecode 0x2450f39>)(#f(compiled-function (&rest cnm-args) #<bytecode 0x2856d45>) #<jupyter-zmq-channel-ioloop jupyter-zmq-channel-ioloop> #s(jupyter-session :conn-info (:kernel_name "julia-1.4" :transport "tcp" :ip "127.0.0.1" :signature_scheme "hmac-sha256" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb" :hb_port 38787 :stdin_port 42793 :control_port 37905 :shell_port 36795 :iopub_port 46249) :id "ebf1afbe-0e31-479b-8f7d-fd3b8c9ed710" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb") #<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm>)
  apply(#f(compiled-function (arg1 arg2 arg3 arg4 &rest rest) "Start IOLOOP, using SESSION to set the `jupyter-channel-ioloop-session'.\nAdd setup forms to IOLOOP that will initialize the\n`jupyter-channel-ioloop-session' variable to a `jupyter-session'\nbased on SESSION's id and key.  Also add\n`jupyter-ioloop-recv-messages' to `jupyter-ioloop-post-hook'.  In\naddition add the events send, start-channel, and stop-channel\nthat the parent Emacs process can send to the IOLOOP.  See\n`jupyter-channel-ioloop-add-send-event',\n`jupyter-channel-ioloop-add-start-channel-event', and\n`jupyter-ioloop-add-stop-channel-event'.\n\nAfter doing the above initialization, start the IOLOOP.  OBJ and\nBUFFER have the same meaning as in the method definition for\n`jupyter-ioloop'." #<bytecode 0x2450f39>) #f(compiled-function (&rest cnm-args) #<bytecode 0x2856d45>) (#<jupyter-zmq-channel-ioloop jupyter-zmq-channel-ioloop> #s(jupyter-session :conn-info (:kernel_name "julia-1.4" :transport "tcp" :ip "127.0.0.1" :signature_scheme "hmac-sha256" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb" :hb_port 38787 :stdin_port 42793 :control_port 37905 :shell_port 36795 :iopub_port 46249) :id "ebf1afbe-0e31-479b-8f7d-fd3b8c9ed710" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb") #<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm>))
  #f(compiled-function (&rest args) #<bytecode 0x2856d29>)(#<jupyter-zmq-channel-ioloop jupyter-zmq-channel-ioloop> #s(jupyter-session :conn-info (:kernel_name "julia-1.4" :transport "tcp" :ip "127.0.0.1" :signature_scheme "hmac-sha256" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb" :hb_port 38787 :stdin_port 42793 :control_port 37905 :shell_port 36795 :iopub_port 46249) :id "ebf1afbe-0e31-479b-8f7d-fd3b8c9ed710" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb") #<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm>)
  apply(#f(compiled-function (&rest args) #<bytecode 0x2856d29>) #<jupyter-zmq-channel-ioloop jupyter-zmq-channel-ioloop> (#s(jupyter-session :conn-info (:kernel_name "julia-1.4" :transport "tcp" :ip "127.0.0.1" :signature_scheme "hmac-sha256" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb" :hb_port 38787 :stdin_port 42793 :control_port 37905 :shell_port 36795 :iopub_port 46249) :id "ebf1afbe-0e31-479b-8f7d-fd3b8c9ed710" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb") #<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm>))
  #f(compiled-function (arg &rest args) #<bytecode 0x28451e9>)(#<jupyter-zmq-channel-ioloop jupyter-zmq-channel-ioloop> #s(jupyter-session :conn-info (:kernel_name "julia-1.4" :transport "tcp" :ip "127.0.0.1" :signature_scheme "hmac-sha256" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb" :hb_port 38787 :stdin_port 42793 :control_port 37905 :shell_port 36795 :iopub_port 46249) :id "ebf1afbe-0e31-479b-8f7d-fd3b8c9ed710" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb") #<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm>)
  apply(#f(compiled-function (arg &rest args) #<bytecode 0x28451e9>) #<jupyter-zmq-channel-ioloop jupyter-zmq-channel-ioloop> #s(jupyter-session :conn-info (:kernel_name "julia-1.4" :transport "tcp" :ip "127.0.0.1" :signature_scheme "hmac-sha256" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb" :hb_port 38787 :stdin_port 42793 :control_port 37905 :shell_port 36795 :iopub_port 46249) :id "ebf1afbe-0e31-479b-8f7d-fd3b8c9ed710" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb") #<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm>)
  jupyter-ioloop-start(#<jupyter-zmq-channel-ioloop jupyter-zmq-channel-ioloop> #s(jupyter-session :conn-info (:kernel_name "julia-1.4" :transport "tcp" :ip "127.0.0.1" :signature_scheme "hmac-sha256" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb" :hb_port 38787 :stdin_port 42793 :control_port 37905 :shell_port 36795 :iopub_port 46249) :id "ebf1afbe-0e31-479b-8f7d-fd3b8c9ed710" :key "ee95da1a-bc7f-4c6d-9561-356581994cdb") #<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm>)
  #f(compiled-function (comm) #<bytecode 0x3dfa7d1>)(#<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm>)
  apply(#f(compiled-function (comm) #<bytecode 0x3dfa7d1>) #<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm> nil)
  jupyter-comm-start(#<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm>)
  #f(compiled-function (comm obj) #<bytecode 0x3ec474d>)(#<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm> #<jupyter-org-client jupyter-org-client>)
  apply(#f(compiled-function (comm obj) #<bytecode 0x3ec474d>) #<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm> #<jupyter-org-client jupyter-org-client>)
  jupyter-comm-add-handler(#<jupyter-channel-ioloop-comm jupyter-channel-ioloop-comm> #<jupyter-org-client jupyter-org-client>)
  #f(compiled-function (client) #<bytecode 0x3efc955>)(#<jupyter-org-client jupyter-org-client>)
  apply(#f(compiled-function (client) #<bytecode 0x3efc955>) #<jupyter-org-client jupyter-org-client> nil)
  jupyter-start-channels(#<jupyter-org-client jupyter-org-client>)
  jupyter-start-new-kernel("julia-1.4" jupyter-org-client)
  jupyter-run-repl("julia-1.4" nil nil jupyter-org-client)
  (progn (jupyter-run-repl kernel nil nil (quote jupyter-org-client)))
  (closure (cl-struct-org-babel-jupyter-server-session-tags cl-struct-org-babel-jupyter-remote-session-tags cl-struct-org-babel-jupyter-session-tags t) (_session kernel) "Call `jupyter-run-repl', passing KERNEL as argument." (progn (jupyter-run-repl kernel nil nil (quote jupyter-org-client))))(#s(org-babel-jupyter-session :name "jjsd") "julia-1.4")
  apply((closure (cl-struct-org-babel-jupyter-server-session-tags cl-struct-org-babel-jupyter-remote-session-tags cl-struct-org-babel-jupyter-session-tags t) (_session kernel) "Call `jupyter-run-repl', passing KERNEL as argument." (progn (jupyter-run-repl kernel nil nil (quote jupyter-org-client)))) (#s(org-babel-jupyter-session :name "jjsd") "julia-1.4"))
  #f(compiled-function (&rest cnm-args) #<bytecode 0x15bda9d>)()
  funcall(#f(compiled-function (&rest cnm-args) #<bytecode 0x15bda9d>))
  (let ((client (funcall cl--cnm))) (prog1 client (jupyter-set client (quote jupyter-include-other-output) nil) (save-current-buffer (set-buffer (eieio-oref client (quote buffer))) (let ((inhibit-read-only t)) (prog1 (progn (let (...) (if ... ...))) (let ((win ...)) (if win (progn ...))))))))
  (progn (let ((client (funcall cl--cnm))) (prog1 client (jupyter-set client (quote jupyter-include-other-output) nil) (save-current-buffer (set-buffer (eieio-oref client (quote buffer))) (let ((inhibit-read-only t)) (prog1 (progn (let ... ...)) (let (...) (if win ...))))))))
  (closure (cl-struct-org-babel-jupyter-server-session-tags cl-struct-org-babel-jupyter-remote-session-tags cl-struct-org-babel-jupyter-session-tags t) (cl--cnm session _kernel) "Rename the returned client's REPL buffer to include SESSION's name.\nAlso set `jupyter-include-other-output' to nil for the session so\nthat output produced by other clients do not get handled by the\nclient." (progn (let ((client (funcall cl--cnm))) (prog1 client (jupyter-set client (quote jupyter-include-other-output) nil) (save-current-buffer (set-buffer (eieio-oref client (quote buffer))) (let ((inhibit-read-only t)) (prog1 (progn ...) (let ... ...))))))))(#f(compiled-function (&rest cnm-args) #<bytecode 0x15bda9d>) #s(org-babel-jupyter-session :name "jjsd") "julia-1.4")
  apply((closure (cl-struct-org-babel-jupyter-server-session-tags cl-struct-org-babel-jupyter-remote-session-tags cl-struct-org-babel-jupyter-session-tags t) (cl--cnm session _kernel) "Rename the returned client's REPL buffer to include SESSION's name.\nAlso set `jupyter-include-other-output' to nil for the session so\nthat output produced by other clients do not get handled by the\nclient." (progn (let ((client (funcall cl--cnm))) (prog1 client (jupyter-set client (quote jupyter-include-other-output) nil) (save-current-buffer (set-buffer (eieio-oref client ...)) (let (...) (prog1 ... ...))))))) #f(compiled-function (&rest cnm-args) #<bytecode 0x15bda9d>) (#s(org-babel-jupyter-session :name "jjsd") "julia-1.4"))
  #f(compiled-function (&rest args) #<bytecode 0x1627455>)(#s(org-babel-jupyter-session :name "jjsd") "julia-1.4")
  apply(#f(compiled-function (&rest args) #<bytecode 0x1627455>) #s(org-babel-jupyter-session :name "jjsd") "julia-1.4")
  org-babel-jupyter-initiate-client(#s(org-babel-jupyter-session :name "jjsd") "julia-1.4")
  (setq client (org-babel-jupyter-initiate-client (org-babel-jupyter-parse-session session) kernel))
  (if client nil (setq client (org-babel-jupyter-initiate-client (org-babel-jupyter-parse-session session) kernel)) (puthash key client org-babel-jupyter-session-clients) (save-current-buffer (set-buffer (eieio-oref client (quote buffer))) (let ((inhibit-read-only t)) (prog1 (progn (let ((forget-client ...)) (add-hook (quote kill-buffer-hook) forget-client nil t))) (let ((win (get-buffer-window))) (if win (progn (set-window-point win ...))))))))
  (let* ((kernel (alist-get :kernel params)) (key (org-babel-jupyter-session-key params)) (client (gethash key org-babel-jupyter-session-clients))) (if client nil (setq client (org-babel-jupyter-initiate-client (org-babel-jupyter-parse-session session) kernel)) (puthash key client org-babel-jupyter-session-clients) (save-current-buffer (set-buffer (eieio-oref client (quote buffer))) (let ((inhibit-read-only t)) (prog1 (progn (let (...) (add-hook ... forget-client nil t))) (let ((win ...)) (if win (progn ...))))))) (eieio-oref client (quote buffer)))
  org-babel-jupyter-initiate-session-by-key("jjsd" ((:colname-names) (:rowname-names) (:result-params "raw" "silent") (:result-type . value) (:results . "raw silent") (:exports . "both") (:cache . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no") (:kernel . "julia-1.4") (:async . "yes") (:eval . "no-export") (:session . "jjsd")))
  (if (equal session "none") (error "Need a session to run") (org-babel-jupyter-initiate-session-by-key session params))
  org-babel-jupyter-initiate-session("jjsd" ((:colname-names) (:rowname-names) (:result-params "raw" "silent") (:result-type . value) (:results . "raw silent") (:exports . "both") (:cache . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no") (:kernel . "julia-1.4") (:async . "yes") (:eval . "no-export") (:session . "jjsd")))
  (buffer-local-value (quote jupyter-current-client) (org-babel-jupyter-initiate-session (alist-get :session params) params))
  (let* ((org-babel-jupyter-current-src-block-params params) (jupyter-current-client (buffer-local-value (quote jupyter-current-client) (org-babel-jupyter-initiate-session (alist-get :session params) params))) (kernel-lang (jupyter-kernel-language jupyter-current-client)) (vars (org-babel-variable-assignments:jupyter params kernel-lang)) (code (org-babel-expand-body:jupyter body params vars kernel-lang)) (result-params (assq :result-params params)) (async-p (or (equal (alist-get :async params) "yes") (plist-member params :async))) (req (jupyter-send-execute-request jupyter-current-client :code code))) (if (member "replace" (assq :result-params params)) (progn (org-babel-jupyter-cleanup-file-links))) (if (and (member "file" result-params) (or async-p (not (or (member "link" result-params) (member "graphics" result-params))))) (progn (org-babel-jupyter--remove-file-param params))) (cond (async-p (let (--cl-sync-on-export--) (setq --cl-sync-on-export-- (function (lambda nil (progn ... ...)))) (if (and (boundp (quote org-export-current-backend)) org-export-current-backend) (progn (add-hook (quote org-babel-after-execute-hook) --cl-sync-on-export-- t t))) (if (progn (or (and ... t) (signal ... ...)) (aref req 13)) org-babel-jupyter-async-inline-results-pending-indicator (jupyter-org-pending-async-results req)))) (t (while (null (jupyter-wait-until-idle req jupyter-long-timeout))) (if (progn (or (and (memq ... cl-struct-jupyter-org-request-tags) t) (signal (quote wrong-type-argument) (list ... req))) (aref req 13)) (car (progn (or (and ... t) (signal ... ...)) (aref req 10))) (prog1 (jupyter-org-sync-results req) (nconc (alist-get :result-params params) (list "raw")))))))
  org-babel-execute:jupyter-julia("using LinearAlgebra\n\ncomm(A,B) = A*B - B*A\n\nusing SymPy\nimport Base.imag\nimport Base.real\nimag(x::Sym) = sympy.im(x)\nreal(x::Sym) = sympy.re(x)\nimport Base.adjoint\nadjoint(x::Sym) = conj(x)\n\nusing Plots\ntheme(:default)\npgfplotsx()\ndefault(tickfontsize=11, legendfontsize=11, guidefontsize=11, framestyle=:box)\ndefault(gridlinewidth=1)\ndefault(linewidth=2)\ndefault(tex_output_standalone = true)\npush!(PGFPlotsX.CUSTOM_PREAMBLE, raw\"\\usepackage{amsmath}\")\npush!(PGFPlotsX.CUSTOM_PREAMBLE, raw\"\\usepackage{physics}\")\npush!(PGFPlotsX.CUSTOM_PREAMBLE, raw\"\\usepackage{nicefrac}\")\n\nusing TikzPictures\nfunction tikzvec(v)\n  l = length(v)\n  @assert 2 <= l <=3\n  if l == 2\n    return \"({$(v[1])}, {$(v[2])})\"\n  elseif l == 3\n    # we need the minus sign here to get the right handed rotations\n    return \"({$(v[1])}, {$(v[3])}, {$(-v[2])})\"\n  end\nend\n\nusing LaTeXStrings\nusing Latexify\nfunction latex(key)\n  temp = replace(\"$key\", r\"([CSσ])([\\dd])_(\\d)([mp]*)\" => s\"\\1_{\\2,\\3\\4}\")\n  temp = replace(temp, r\"([AET])([\\d])\" => s\"\\1_{\\2}\")\n  temp = replace(temp, \"p\"=>\"+\")\n  temp = replace(temp, \"m\"=>\"-\")\n  temp = replace(temp, \"σ\"=>\"\\\\sigma\")\n  temp = replace(temp, \"C3v\"=>\"C_{3v}\")\n  temp = replace(temp, \"Td\"=>\"T_d\")\n  \"\\\\( $temp \\\\)\"\nend\nlatex(key::Sym) = sympy.latex(key)\n\nusing Unitful\nusing PhysicalConstants: CODATA2018\nCD18 = CODATA2018\n\nval(x::Number) = x\nval(x::Quantity) = x.val\n\nfunction createJoperators(j)\n  length = convert(Int, 2*j+1)\n  ms = j:-1:-j\n  Jplus = [(ms[i1]-ms[i2])==1 ? sqrt(j*(j+1)-ms[i2]*(ms[i2]+1)) : convert(typeof(j), 0)\n       for i1 in 1:length, i2 in 1:length]\n  Jminus = [(ms[i2]-ms[i1])==1 ? sqrt(j*(j+1)-ms[i2]*(ms[i2]-1)) : convert(typeof(j), 0)\n       for i1 in 1:length, i2 in 1:length]\n  Jx = (Jplus .+ Jminus)./2\n  Jy = (Jplus .- Jminus)./(2im)\n  Jz = diagm([ms[i] for i in 1:length])\n  (Jx, Jy, Jz, Jplus, Jminus)\nend\n\n# sakurai p. 528\nfunction sphericalharmonics(l::Int,m::Int;\n              θ=symbols(\"theta\",positive=true),φ=symbols(\"varphi\",positive=true))\n  @assert l >= 0\n  @assert l >= abs(m)\n  if m < 0\n    return (-1)^(-m) * conj(sphericalharmonics(l,-m; θ=θ, φ=φ))\n  end\n  norm = (-1)^m * sqrt((2*l+1)/(4*PI) * factorial(l-m)/Sym(factorial(l+m)))\n  x=symbols(\"x\")\n  pl = (-1)^l/(Sym(2^l)*factorial(l))*diff((1-x^2)^(l), x, l)\n  plm = (1-cos(θ)^2)^(m/Sym(2)) * subs(diff(pl, x, m), x=>cos(θ))\n  norm * exp(1im*m*φ) * plm\nend\n\nfunction clebschgordancoefficient((p, s), (q, t), (r, u); α=1, kys=nothing)\n  kys = kys==nothing ? keys(q) : kys\n  if α==0\n    return Sym(0)\n  elseif α==1\n    g = length(kys)\n    d_q = convert(Int64, tr(q[:E]))\n    d_p = convert(Int64, tr(p[:E]))\n    d_r = convert(Int64, tr(r[:E]))\n    dnm = Sym(0)\n    for j in 1:d_p, k in 1:d_q, l in 1:d_r\n      dnm = expand(sum(p[key][j,j]*q[key][k,k]*conj(r[key][l,l]) for key in kys),\n             complex=true)\n      if dnm != 0\n        return expand(sqrt(Sym(d_r)/Sym(g))*\n               sum(p[key][s,j]*q[key][t,k]*conj(r[key][u,l]) for key in kys)/\n               dnm,\n               complex=true)\n      end\n    end\n    @assert dnm != 0\n  else\n    @error α>1\n  end\nend\n\nfunction normalizedcgc((p, s), (q, t), (r, u); α=1)\n  d_q = convert(Int64, tr(q[:E]))\n  d_p = convert(Int64, tr(p[:E]))\n  d_r = convert(Int64, tr(r[:E]))\n  temp = [clebschgordancoefficient((p, j), (q, k), (r, u); α=α)\n      for j in 1:d_p, k in 1:d_q]\n  simplify.(expand.(temp[s,t]/(nm = norm(reshape(temp[:,:], d_q*d_p));\n                 nm == 0 ? 1 : nm), complex=true))\nend\n\nrotatevector_x(φ) = [one(φ) zero(φ) zero(φ);\n           zero(φ) cos(φ) -sin(φ);\n           zero(φ) sin(φ) cos(φ)]\nrotatevector_y(φ) = [cos(φ) zero(φ) sin(φ);\n           zero(φ) one(φ) zero(φ);\n           -sin(φ) zero(φ) cos(φ)]\nrotatevector_z(φ) = [cos(φ) -sin(φ) zero(φ);\n           sin(φ) cos(φ) zero(φ);\n           zero(φ) zero(φ) one(φ)]" ((:colname-names) (:rowname-names) (:result-params "raw" "silent") (:result-type . value) (:results . "raw silent") (:exports . "both") (:cache . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no") (:kernel . "julia-1.4") (:async . "yes") (:eval . "no-export") (:session . "jjsd")))
  org-babel-execute-src-block(nil ("jupyter-julia" "using LinearAlgebra\n\ncomm(A,B) = A*B - B*A\n\nusing SymPy\nimport Base.imag\nimport Base.real\nimag(x::Sym) = sympy.im(x)\nreal(x::Sym) = sympy.re(x)\nimport Base.adjoint\nadjoint(x::Sym) = conj(x)\n\nusing Plots\ntheme(:default)\npgfplotsx()\ndefault(tickfontsize=11, legendfontsize=11, guidefontsize=11, framestyle=:box)\ndefault(gridlinewidth=1)\ndefault(linewidth=2)\ndefault(tex_output_standalone = true)\npush!(PGFPlotsX.CUSTOM_PREAMBLE, raw\"\\usepackage{amsmath}\")\npush!(PGFPlotsX.CUSTOM_PREAMBLE, raw\"\\usepackage{physics}\")\npush!(PGFPlotsX.CUSTOM_PREAMBLE, raw\"\\usepackage{nicefrac}\")\n\nusing TikzPictures\nfunction tikzvec(v)\n  l = length(v)\n  @assert 2 <= l <=3\n  if l == 2\n    return \"({$(v[1])}, {$(v[2])})\"\n  elseif l == 3\n    # we need the minus sign here to get the right handed rotations\n    return \"({$(v[1])}, {$(v[3])}, {$(-v[2])})\"\n  end\nend\n\nusing LaTeXStrings\nusing Latexify\nfunction latex(key)\n  temp = replace(\"$key\", r\"([CSσ])([\\dd])_(\\d)([mp]*)\" => s\"\\1_{\\2,\\3\\4}\")\n  temp = replace(temp, r\"([AET])([\\d])\" => s\"\\1_{\\2}\")\n  temp = replace(temp, \"p\"=>\"+\")\n  temp = replace(temp, \"m\"=>\"-\")\n  temp = replace(temp, \"σ\"=>\"\\\\sigma\")\n  temp = replace(temp, \"C3v\"=>\"C_{3v}\")\n  temp = replace(temp, \"Td\"=>\"T_d\")\n  \"\\\\( $temp \\\\)\"\nend\nlatex(key::Sym) = sympy.latex(key)\n\nusing Unitful\nusing PhysicalConstants: CODATA2018\nCD18 = CODATA2018\n\nval(x::Number) = x\nval(x::Quantity) = x.val\n\nfunction createJoperators(j)\n  length = convert(Int, 2*j+1)\n  ms = j:-1:-j\n  Jplus = [(ms[i1]-ms[i2])==1 ? sqrt(j*(j+1)-ms[i2]*(ms[i2]+1)) : convert(typeof(j), 0)\n       for i1 in 1:length, i2 in 1:length]\n  Jminus = [(ms[i2]-ms[i1])==1 ? sqrt(j*(j+1)-ms[i2]*(ms[i2]-1)) : convert(typeof(j), 0)\n       for i1 in 1:length, i2 in 1:length]\n  Jx = (Jplus .+ Jminus)./2\n  Jy = (Jplus .- Jminus)./(2im)\n  Jz = diagm([ms[i] for i in 1:length])\n  (Jx, Jy, Jz, Jplus, Jminus)\nend\n\n# sakurai p. 528\nfunction sphericalharmonics(l::Int,m::Int;\n              θ=symbols(\"theta\",positive=true),φ=symbols(\"varphi\",positive=true))\n  @assert l >= 0\n  @assert l >= abs(m)\n  if m < 0\n    return (-1)^(-m) * conj(sphericalharmonics(l,-m; θ=θ, φ=φ))\n  end\n  norm = (-1)^m * sqrt((2*l+1)/(4*PI) * factorial(l-m)/Sym(factorial(l+m)))\n  x=symbols(\"x\")\n  pl = (-1)^l/(Sym(2^l)*factorial(l))*diff((1-x^2)^(l), x, l)\n  plm = (1-cos(θ)^2)^(m/Sym(2)) * subs(diff(pl, x, m), x=>cos(θ))\n  norm * exp(1im*m*φ) * plm\nend\n\nfunction clebschgordancoefficient((p, s), (q, t), (r, u); α=1, kys=nothing)\n  kys = kys==nothing ? keys(q) : kys\n  if α==0\n    return Sym(0)\n  elseif α==1\n    g = length(kys)\n    d_q = convert(Int64, tr(q[:E]))\n    d_p = convert(Int64, tr(p[:E]))\n    d_r = convert(Int64, tr(r[:E]))\n    dnm = Sym(0)\n    for j in 1:d_p, k in 1:d_q, l in 1:d_r\n      dnm = expand(sum(p[key][j,j]*q[key][k,k]*conj(r[key][l,l]) for key in kys),\n             complex=true)\n      if dnm != 0\n        return expand(sqrt(Sym(d_r)/Sym(g))*\n               sum(p[key][s,j]*q[key][t,k]*conj(r[key][u,l]) for key in kys)/\n               dnm,\n               complex=true)\n      end\n    end\n    @assert dnm != 0\n  else\n    @error α>1\n  end\nend\n\nfunction normalizedcgc((p, s), (q, t), (r, u); α=1)\n  d_q = convert(Int64, tr(q[:E]))\n  d_p = convert(Int64, tr(p[:E]))\n  d_r = convert(Int64, tr(r[:E]))\n  temp = [clebschgordancoefficient((p, j), (q, k), (r, u); α=α)\n      for j in 1:d_p, k in 1:d_q]\n  simplify.(expand.(temp[s,t]/(nm = norm(reshape(temp[:,:], d_q*d_p));\n                 nm == 0 ? 1 : nm), complex=true))\nend\n\nrotatevector_x(φ) = [one(φ) zero(φ) zero(φ);\n           zero(φ) cos(φ) -sin(φ);\n           zero(φ) sin(φ) cos(φ)]\nrotatevector_y(φ) = [cos(φ) zero(φ) sin(φ);\n           zero(φ) one(φ) zero(φ);\n           -sin(φ) zero(φ) cos(φ)]\nrotatevector_z(φ) = [cos(φ) -sin(φ) zero(φ);\n           sin(φ) cos(φ) zero(φ);\n           zero(φ) zero(φ) one(φ)]" ((:colname-names) (:rowname-names) (:result-params "silent" "raw") (:result-type . value) (:results . "silent raw") (:exports . "both") (:session . "jjsd") (:eval . "no-export") (:async . "yes") (:kernel . "julia-1.4") (:tangle . "no") (:hlines . "no") (:noweb . "no") (:cache . "no")) "" nil 361 "(ref:%s)"))
  org-ctrl-c-ctrl-c(nil)
  funcall-interactively(org-ctrl-c-ctrl-c nil)
  call-interactively(org-ctrl-c-ctrl-c nil nil)
  command-execute(org-ctrl-c-ctrl-c)

This is fixed by replacing

                   ;; :coding-system 'no-conversion
                   :coding 'no-conversion

in zmq.el line 515.
I would guess that the naming of the keyword arguments of make-process changed because until today it was working.

Unable to install emacs-zmq (LinuxMint 20.2)

I need to have emacs-zmq for running emacs-jupyter. I installed zmq with M_x package-install RET zmq RET, which went fine. Then M-: (require 'zmq) fails with:

Debugger entered--Lisp error: (wrong-type-argument sequencep t)
byte-code("\010\205\016\0\301\302\010P\303\304\305!!"\207" [module-file-suffix expand-file-name "emacs-zmq" file-name-directory locate-library "zmq"] 5)
(defconst zmq-module-file (byte-code "\010\205\016\0\301\302\010P\303\304\305!!"\207" [module-file-suffix expand-file-name "emacs-zmq" file-name-directory locate-library "zmq"] 5) ("/home/petit/.emacs.d/elpa/zmq-20220510.1820/zmq.elc" . 599))
require(zmq)
eval((require (quote zmq)) nil)
eval-expression((require (quote zmq)) nil nil 127)
funcall-interactively(eval-expression (require (quote zmq)) nil nil 127)
call-interactively(eval-expression nil nil)
command-execute(eval-expression)

I then realize that module zmq is not installed (I've installed libzmq5, but seems to not be the correct version). So I went into zmq-20220510_1820, and tried to compile the module. After failing miserably yesterday, it worked today, with the same branch of zmq, and it worked fine today.

Anyhow, I tried again to start zmq in emacs, and still got the very same error message:

Debugger entered--Lisp error: (wrong-type-argument sequencep t)
byte-code("\010\205\016\0\301\302\010P\303\304\305!!"\207" [module-file-suffix expand-file-name "emacs-zmq" file-name-directory locate-library "zmq"] 5)
(defconst zmq-module-file (byte-code "\010\205\016\0\301\302\010P\303\304\305!!"\207" [module-file-suffix expand-file-name "emacs-zmq" file-name-directory locate-library "zmq"] 5) ("/home/petit/.emacs.d/elpa/zmq-20220510.1820/zmq.elc" . 599))
require(zmq)
eval((require (quote zmq)) nil)
eval-expression((require (quote zmq)) nil nil 127)
funcall-interactively(eval-expression (require (quote zmq)) nil nil 127)
call-interactively(eval-expression nil nil)
command-execute(eval-expression)

Any idea what is going on ? This is very limiting as I'd really like to use Jupyter for Python and Julia in Org-mode.

Many thanks, Jean-Marc Petit

Getting error configure: error: C compiler cannot create executables *** [Makefile:49: configure] Error 77 *** [Makefile:61: src/Makefile] Error 2

Trying to install ZMQ for emacs jupyter.

Get the following error when attempting to build the module from emacs, as well as when downloading from source and running the make file:

configure: error: C compiler cannot create executables
See `config.log' for more details
configure: error: ./configure failed for libzmq
make[1]: *** [Makefile:49: configure] Error 77
make[1]: Leaving directory
make: *** [Makefile:61: src/Makefile] Error 2

Autotools and pkg-config are installed. Fedora 34, zeromq 4.3.4, emacs 27.2, gcc (GCC) 11.1.1 20210531, g++ (GCC) 11.1.1 20210531

See config.log attached.

Thanks,

config.log

Error (fatal) on compile and launch, emacs-zmq.dylib, Symbol not found

original ticket from: emacs-jupyter/jupyter#469

Hi

I had upgraded to the latest version on melpa (20230608.1856) recently and are now facing this weird error:

Compiling file /Users/<my-name>/.emacs.d/elpa/jupyter-20230608.1504/jupyter-channel-ioloop.el at Mon Jun 19 20:27:59 2023
jupyter-channel-ioloop.el:67:1: Error: Module could not be opened: "/Users/<my-name>/.emacs.d/elpa/zmq-20230608.1856/emacs-zmq.dylib", "dlopen(/Users/<my-name>/.emacs.d/elpa/zmq-20230608.1856/emacs-zmq.dylib, 1): Symbol not found: __ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv
  Referenced from: /Users/<my-name>/.emacs.d/elpa/zmq-20230608.1856/emacs-zmq.dylib
  Expected in: flat namespace

In which the symbol is a mangled version of this object:

❯ c++filt '__ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv'
std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::str() const

After replacing the emacs-zmq.so / emacs-zmq.dylib file with an older one that I have from backup (emacs-zmq-x86_64-apple-darwin17.4.0) have fixed this issue.

Here are the outputs of otool

❯ otool -Lv emacs-zmq.dylib.bak
emacs-zmq.dylib.bak:
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1319.0.0)
	time stamp 2 Thu Jan  1 08:00:02 1970
❯ otool -Lv emacs-zmq.so
emacs-zmq.so:
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.0.0)
	time stamp 2 Thu Jan  1 08:00:02 1970

Maybe the culprit is the version of this shared library (/usr/lib/libSystem.B.dylib)?

System:

OS: macOS Big Sur 11.4 20F71 x86_64
Shell: zsh 5.8
Terminal: kitty 0.28.1
GNU Emacs 28.2
emacs-jupyter 20230608.1504
zmq-20230608.1856

Please let me know if you would need the full log.

Incompatible with UCRT Mingw

I compile emacs with msys2 UCRT64, and emacs-zmq can't be loaded.

If I compile the lib using ucrt64, it reports:

libtool:   error: can't build x86_64-w64-mingw32 shared library unless -no-undefined is specified
make[2]: *** [Makefile:494: emacs-zmq.la] Error 1

windows install with pre-built libraries

windows 10
emacs 27.0.50
zmq-20190408.1552

I have compiled emacs with --with-modules option . Then I download the pre-built libraries from last release (29 Mar) and put them in root zmq project.
I have added (require 'zmq) in my init file.
Eval with emacs --debug-init:

Debugger entered--Lisp error: (module-open-failed "c:/Users/PC/.emacs.d/elpa/zmq-20190408.1552/emacs-zmq.dll" "\315\345 \355\340\351\344\345\355 \363\352\340\347\340\355\355\373\351 \354\356\344\363\353\374.")
  load("c:/Users/PC/.emacs.d/elpa/zmq-20190408.1552/emacs-zmq.dll" nil nil t)
  load-file("c:/Users/PC/.emacs.d/elpa/zmq-20190408.1552/emacs-zmq.dll")
  zmq-load()
  byte-code("\300 \210\301\302!\207" [zmq-load provide zmq] 2)
  require(zmq)
  eval-buffer(#<buffer  *load*> nil "c:/Users/PC/.emacs.d/init.el" nil t)  ; Reading at buffer position 6107
  load-with-code-conversion("c:/Users/PC/.emacs.d/init.el" "c:/Users/PC/.emacs.d/init.el" t t)
  load("c:/Users/PC/.emacs.d/init" noerror nomessage)
  startup--load-user-init-file(#f(compiled-function () #<bytecode 0x115d5df>) #f(compiled-function () #<bytecode 0x115d5af>) t)
  command-line()
  normal-top-level()

Could you help me with this issue?

JSON parsing error in `zmq--download-module`

When trying to run tests/compilation for emacs-jupyter I started encountering an End of file while parsing JSON error. On further investigation this happens when zmq--download-module function is called.

Here's an example:

jack@jaheira:~/src/emacs-zmq (git)-[master]- % make test
emacs -nw -Q -batch -L . -l ert -l zmq-tests.el \
        --eval "(ert-run-tests-batch-and-exit)"
Checking for compatible module binary to download
Contacting host: api.github.com:443
End of file while parsing JSON
make: *** [Makefile:64: test] Error 255

Tracking the issue further, the error happens because zmq--download-url inserts an empty string into the buffer instead of the expected JSON.

The problem seems to be with url-retrieve-synchronously. In particular, running the following prints the empty string "" on my system:

(setq url-debug t)
(with-temp-buffer
  (url-insert
   (url-retrieve-synchronously
    "https://api.github.com/repos/dzop/emacs-zmq/releases/tags/v0.10.9"))
  (print (buffer-string)))

The *URL-DEBUG* log buffer shows:

http -> Contacting host: api.github.com:443
http -> Marking connection as busy: api.github.com:443 #<process api.github.com>
http -> Request is: 
GET /repos/dzop/emacs-zmq/releases/tags/v0.10.9 HTTP/1.1
MIME-Version: 1.0
Connection: keep-alive
Extension: Security/Digest Security/SSL
Host: api.github.com
Accept-encoding: gzip
Accept: */*
User-Agent: URL/Emacs Emacs/26.2 (X11; x86_64-pc-linux-gnu)
Cookie: logged_in=no


retrieval -> Spinning in url-retrieve-synchronously: nil (#<buffer  *http api.github.com:443*>)
http -> url-http-end-of-document-sentinel in buffer ( *http api.github.com:443*)
http -> Contacting host: api.github.com:443
http -> Marking connection as busy: api.github.com:443 #<process api.github.com>
http -> Request is: 
GET /repos/dzop/emacs-zmq/releases/tags/v0.10.9 HTTP/1.1
MIME-Version: 1.0
Connection: keep-alive
Extension: Security/Digest Security/SSL
Host: api.github.com
Accept-encoding: gzip
Accept: */*
User-Agent: URL/Emacs Emacs/26.2 (X11; x86_64-pc-linux-gnu)
Cookie: logged_in=no


retrieval -> Spinning in url-retrieve-synchronously: nil (#<buffer  *http api.github.com:443*>)
http -> url-http-end-of-document-sentinel in buffer ( *http api.github.com:443*)
http -> Marking connection as free: api.github.com:443 #<process api.github.com>
http -> Activating callback in buffer ( *http api.github.com:443*): #[128 "\302\303\304p#\210\300\305\240\210\301p\240\207" [(nil) (#<buffer  *http api.github.com:443*>) url-debug retrieval "Synchronous fetching done (%S)" t] 5 "

(fn &rest IGNORED)"] (nil)
retrieval -> Synchronous fetching done (#<buffer  *http api.github.com:443*>)

The strange part is that, if I call url-retrieve as follows, I get the expected result:

(url-retrieve
 "https://api.github.com/repos/dzop/emacs-zmq/releases/tags/v0.10.9"
 (lambda (status) (print (buffer-string))))

Then, the even stranger part: after calling url-retrieve once, subsequent calls to url-retrieve-synchronously suddenly start to work correctly! Here is the *URL-DEBUG* log for one of these subsequent calls:

http -> Found existing connection: api.github.com:443 #<process api.github.com>
http -> Reusing existing connection: api.github.com:443
http -> Marking connection as busy: api.github.com:443 #<process api.github.com>
http -> Request is: 
GET /repos/dzop/emacs-zmq/releases/tags/v0.10.9 HTTP/1.1
MIME-Version: 1.0
Connection: keep-alive
Extension: Security/Digest Security/SSL
Host: api.github.com
Accept-encoding: gzip
Accept: */*
User-Agent: URL/Emacs Emacs/26.2 (X11; x86_64-pc-linux-gnu)
Cookie: logged_in=no


retrieval -> Spinning in url-retrieve-synchronously: nil (#<buffer  *http api.github.com:443*-689991>)
http -> Calling after change function `url-http-wait-for-headers-change-function' for `#<process api.github.com>'
http -> url-http-wait-for-headers-change-function ( *http api.github.com:443*-689991)
http -> Saw end of headers... ( *http api.github.com:443*-689991)
http -> url-http-parse-response called in ( *http api.github.com:443*-689991)
http -> Saw chunked encoding.
http -> Calling initial chunked-encoding for extra data at end of headers
http -> Reading chunk 0 (1036 1346 310)
http -> Saw start of chunk 1 (length=1112, start=1037
http -> Reading chunk 1 (1036 1346 310)
http -> Still need 803 bytes to hit end of chunk
http -> Still spinning for next chunk...
http -> Spinning waiting for headers...
http -> Calling after change function `url-http-chunked-encoding-after-change-function' for `#<process api.github.com>'
http -> Reading chunk 1 (1341 2156 815)
http -> Got to the end of chunk #1!
http -> Saw start of chunk 2 (length=0, start=2149
http -> Saw end of stream chunk!
http -> Removing terminator of last chunk
http -> Marking connection as free: api.github.com:443 #<process api.github.com>
http -> url-http-parse-headers called in ( *http api.github.com:443*-689991)
http -> url-http-parse-response called in ( *http api.github.com:443*-689991)
http -> Parsed HTTP headers: class=2 status=200
http -> Finished parsing HTTP headers: t
http -> Marking connection as free: api.github.com:443 #<process api.github.com>
http -> Activating callback in buffer ( *http api.github.com:443*-689991): #[128 "\302\303\304p#\210\300\305\240\210\301p\240\207" [(nil) (#<buffer  *http api.github.com:443*-689991>) url-debug retrieval "Synchronous fetching done (%S)" t] 5 "

(fn &rest IGNORED)"] ((:peer (:certificate (:version 3 :serial-number "04:30:d9:79:1f:fc:b5:20:ac:33:9f:a4:a7:3a:7b:76" :issuer "C=US,O=DigiCert Inc,OU=www.digicert.com,CN=DigiCert SHA2 High Assurance Server CA" :valid-from "2018-06-19" :valid-to "2019-07-10" :subject "C=US,ST=California,L=San Francisco,O=GitHub\\, Inc.,CN=*.github.com" :public-key-algorithm "RSA" :certificate-security-level "Medium" :signature-algorithm "RSA-SHA256" :public-key-id "sha1:4e:0a:00:36:1e:9d:51:52:3b:c2:f2:92:89:4f:6e:8b:56:22:15:e6" :certificate-id "sha1:5f:f1:60:31:09:04:3e:f2:90:d2:b0:8a:50:38:04:e8:37:9f:bc:76") :key-exchange "ECDHE-RSA" :protocol "TLS1.3" :cipher "AES-128-GCM" :mac "AEAD")))
retrieval -> Synchronous fetching done (#<buffer  *http api.github.com:443*-689991>)

I'm using emacs 26.2 on Archlinux.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.