I'm struggling to set up Org-Roam on a minimal GUIX set-up. There is an attempt to compile Compiling EmacSQL SQL binary
which throws an error No EmacSQL SQLite binary available
. I have installed both gcc and clang and the correct path (ie. the same as is returned by which gcc
) is found using eg. (executable-find "clang")
(the code tries gcc before clang so I have tried removing the former with the same results). With apologies, I am typing out a couple of lines of the *Backtrace* as my GUIX is a very minimal writing set-up but the first two lines are the following:
error("No EmacSQL SQLite binary available, aborting")
emacsql-sqlite-ensure-binary()
This error is thrown by, for example, running (org-roam-node-find)
The *Backtrace* shows a call to make-instance(emacsql-sqlite-connection :file "~/.emacs.d/org-roam.db")
followed by a number of calls such as apply(#f(compiled-function (&rest args) #<bytecode [...])(#<emacs-sqlite-connection emacsql-sqlite-connection-[...]> (:file "~/.emacs.d/org-roam.db"))
.
A file named emacsql-sqlite.elc (7.4k) exists in a directory in .emacs.d/elpa/emacsql-sqlite-20230118.2015
. Another directory exists in .emacs.d/elpa/ named emacsql-20230118.2020.
These directories are repopulated upon running (org-roam-node-find)
when they are deleted or moved.
Internet searches have thrown up problems with Windows and Mac OS all of which appear to be resolved by installing gcc or clang.
sqlite3
package using your distro's package manager. This is not an Emacs problem.sqlite3
in eshell takes me to a SQL prompt, typingwhich sqlite3
gives me its location, and executing(executable-find "sqlite3")
in the *scratch* buffer gives me the same location.emacsql-sqlite-ensure-binary
tries to find the binary, it does(file-exists-p emacsql-sqlite-executable)
- so you have to setemacsql-sqlite-executable
to the full path of the binary you found above. In particular, it is not usingexecutable-find
.