Eli Zaretskii writes: All of the spurious warnings I'm seeing dont appear in batch compilation with batch-byte-compile. Here is the file on Github: https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-preamble.el#L91 Separately: when I batch-byte-compile emacspeak, I pass in commandline flags that loads emacspeak-loaddefs.el (analogous to Emacs' own loaddefs.el) is it possible to batch-native-compile (that function does exist) but I have no idea where the generated files end up ie if they go somewhere different than when generated from a running Emacs. >> From: "T.V Raman" >> Date: Sun, 16 May 2021 13:51:02 -0700 (PDT) >> >> Here is an example. >> >> eak/lisp/emacspeak-preamble.el: Error: Symbol's value as variable is >> void emacspeak-user-directory Disable showing Disable logging >> The above file contains this innocent looking defvar: >> (defvar emacspeak-user-directory (expand-file-name "~/.emacspeak/") >> "Emacspeak resources, e.g. pronunciation dicts.") >> >> The only library it has required at that point is cl-lib >> >> In the running emacs, the variable emacspeak-user-directory has the >> expected value: >> "/home/raman/.emacspeak/" >> >> So why the warning above? > > How can we know without seeing the Lisp source file(s) relevant to > this compilation? The answer is somewhere in those files. > > In general, native-compilation runs in a separate process that doesn't > inherit the environment and loaded packages of your interactive > session, so it is more sensitive to problems than when you > byte-compile the same source from your interactive session. In > particular, the Emacs sub-process that runs native-compilation is run > in the batch mode, which doesn't load your init files. > > So you could try byte-compiling the same file from the shell prompt in > batch mode, as an approximation to what native-compilation does; any > warning or error you see in this batch byte-compilation will also > happen in the async native-compilation. -- Thanks, --Raman ♈ Id: kg:/m/0285kf1 🦮