GNU bug report logs - #78860
30.1.90; eshell: wrong-number-of-arguments

Previous Next

Package: emacs;

Reported by: Christopher Howard <christopher <at> librehacker.com>

Date: Sun, 22 Jun 2025 04:26:03 UTC

Severity: normal

Found in version 30.1.90

Done: Christopher Howard <christopher <at> librehacker.com>

To reply to this bug, email your comments to 78860 AT debbugs.gnu.org.
There is no need to reopen the bug first.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#78860; Package emacs. (Sun, 22 Jun 2025 04:26:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Christopher Howard <christopher <at> librehacker.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 22 Jun 2025 04:26:03 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Christopher Howard <christopher <at> librehacker.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.1.90; eshell: wrong-number-of-arguments
Date: Sat, 21 Jun 2025 20:24:38 -0800
When I run the command "git status" in eshell, I am getting the error "wrong-number-of-arguments".

M-x package-isolate <ENTER> <ENTER>
M-x eshell <ENTER>
git status <ENTER> [or] *git status <ENTER>

With debug-on-error, here is the backtrace:

```
Debugger entered--Lisp error: (wrong-number-of-arguments (1 . 1) 2)
  eshell-stringify("status" nil)
  #f(compiled-function (i) #<bytecode 0x12a893834464da57>)("status")
  mapcar(#f(compiled-function (i) #<bytecode 0x12a893834464da57>) ("status"))
  eshell-connection-local-command("/home/christopher/.guix-home/profile/bin/git" ("status"))
  eshell-external-command("/home/christopher/.guix-home/profile/bin/git" ("status"))
  eshell-explicit-command("*git" ("status"))
  run-hook-with-args-until-success(eshell-explicit-command "*git" ("status"))
  eshell-named-command("*git" ("status"))
  eval((eshell-named-command '"*git" '("status")))
  eshell-do-eval((eshell-named-command '"*git" '("status")) nil)
  eshell-do-eval((unwind-protect (eshell-named-command '"*git" '("status")) (mapc #'funcall eshell-this-command-hook)) nil)
  #f(compiled-function () #<bytecode -0x165b8d1d61fa8b16>)()
  funcall(#f(compiled-function () #<bytecode -0x165b8d1d61fa8b16>))
  (let ((eshell-this-command-hook '(ignore))) (funcall '#f(compiled-function () #<bytecode -0x165b8d1d61fa8b16>)))
  eval((let ((eshell-this-command-hook '(ignore))) (funcall '#f(compiled-function () #<bytecode -0x165b8d1d61fa8b16>))))
  eshell-do-eval((let ((eshell-this-command-hook '(ignore))) (unwind-protect (eshell-named-command '"*git" '("status")) (mapc #'funcall eshell-this-command-hook))) nil)
  (condition-case err (eshell-do-eval '(let ((eshell-this-command-hook '(ignore))) (unwind-protect (eshell-named-command '"*git" '("status")) (mapc #'funcall eshell-this-command-hook))) nil) ((debug error) (eshell-errorn (error-message-string err)) (eshell-close-handles 1)))
  eval((condition-case err (eshell-do-eval '(let ((eshell-this-command-hook '...)) (unwind-protect (eshell-named-command '"*git" '...) (mapc #'funcall eshell-this-command-hook))) nil) ((debug error) (eshell-errorn (error-message-string err)) (eshell-close-handles 1))))
  eshell-do-eval((condition-case err (eshell-do-eval '(let ((eshell-this-command-hook '...)) (unwind-protect (eshell-named-command '"*git" '...) (mapc #'funcall eshell-this-command-hook))) nil) ((debug error) (eshell-errorn (error-message-string err)) (eshell-close-handles 1))) nil)
  eshell-do-eval((condition-case err (eshell-do-eval '(let ((eshell-this-command-hook '...)) (unwind-protect (eshell-named-command '"*git" '...) (mapc #'funcall eshell-this-command-hook))) nil) ((debug error) (eshell-errorn (error-message-string err)) (eshell-close-handles 1))) nil)
  #f(compiled-function () #<bytecode -0x165b8d1d61fa8b16>)()
  funcall(#f(compiled-function () #<bytecode -0x165b8d1d61fa8b16>))
  (let ((eshell-current-handles '[nil (((t) . 2) t) (((t) . 2) t)])) (funcall '#f(compiled-function () #<bytecode -0x165b8d1d61fa8b16>)))
  eval((let ((eshell-current-handles '[nil ((... . 2) t) ((... . 2) t)])) (funcall '#f(compiled-function () #<bytecode -0x165b8d1d61fa8b16>))))
  eshell-do-eval((let ((eshell-current-handles '[nil ((... . 2) t) ((... . 2) t)])) (condition-case err (eshell-do-eval '(let ((eshell-this-command-hook ...)) (unwind-protect (eshell-named-command ... ...) (mapc ... eshell-this-command-hook))) nil) ((debug error) (eshell-errorn (error-message-string err)) (eshell-close-handles 1)))) nil)
  eshell-do-eval((progn (let ((eshell-current-handles '[nil (... t) (... t)])) (condition-case err (eshell-do-eval '(let (...) (unwind-protect ... ...)) nil) ((debug error) (eshell-errorn (error-message-string err)) (eshell-close-handles 1))))) nil)
  eshell-do-eval((unwind-protect (progn (let ((eshell-current-handles '[nil ... ...])) (condition-case err (eshell-do-eval '(let ... ...) nil) ((debug error) (eshell-errorn (error-message-string err)) (eshell-close-handles 1))))) (run-hooks 'eshell-post-command-hook)) nil)
  eshell-do-eval((progn 'nil (unwind-protect (progn (let ((eshell-current-handles '...)) (condition-case err (eshell-do-eval '... nil) ((debug error) (eshell-errorn ...) (eshell-close-handles 1))))) (run-hooks 'eshell-post-command-hook))) nil)
  #f(compiled-function () #<bytecode -0x165b8d1d61fa8b16>)()
  funcall(#f(compiled-function () #<bytecode -0x165b8d1d61fa8b16>))
  (let ((eshell-current-handles '[nil (((t) . 2) t) (((t) . 2) t)]) (eshell-current-subjob-p 'nil)) (funcall '#f(compiled-function () #<bytecode -0x165b8d1d61fa8b16>)))
  eval((let ((eshell-current-handles '[nil ((... . 2) t) ((... . 2) t)]) (eshell-current-subjob-p 'nil)) (funcall '#f(compiled-function () #<bytecode -0x165b8d1d61fa8b16>))))
  eshell-do-eval((let ((eshell-current-handles '[nil ((... . 2) t) ((... . 2) t)]) eshell-current-subjob-p) (progn 'nil (unwind-protect (progn (let ((eshell-current-handles ...)) (condition-case err (eshell-do-eval ... nil) (... ... ...)))) (run-hooks 'eshell-post-command-hook)))))
  eshell-resume-eval((nil (let ((eshell-current-handles '[nil (... t) (... t)]) eshell-current-subjob-p) (progn 'nil (unwind-protect (progn (let (...) (condition-case err ... ...))) (run-hooks 'eshell-post-command-hook)))) nil))
  eshell-eval-command((let ((eshell-current-handles '[nil ((... . 2) t) ((... . 2) t)]) eshell-current-subjob-p) (progn 'nil (unwind-protect (progn (let ((eshell-current-handles ...)) (condition-case err (eshell-do-eval ... nil) (... ... ...)))) (run-hooks 'eshell-post-command-hook)))) "*git status")
  eshell-send-input(nil)
  funcall-interactively(eshell-send-input nil)
  call-interactively(eshell-send-input nil nil)
  command-execute(eshell-send-input)
```


In GNU Emacs 30.1.90 (build 5, x86_64-pc-linux-gnu, GTK+ Version
 3.24.43, cairo version 1.18.4) of 2025-06-16 built on nightshade
Repository revision: a2bfce5d2a7d046a45c25364f3c69b3d8a776081
Repository branch: emacs-30
Windowing system distributor 'The X.Org Foundation', version 11.0.12101015
System Description: Guix System

Configured using:
 'configure --prefix=/home/christopher/local'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSELINUX LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY PDUMPER
PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $EMACSLOADPATH: /home/christopher/local/share/emacs/30.1.90/lisp
  value of $LANG: en_US.utf8
  locale-coding-system: utf-8-unix

Major mode: Eshell

Minor modes in effect:
  eshell-prompt-mode: t
  eshell-pred-mode: t
  eshell-hist-mode: t
  eshell-cmpl-mode: t
  eshell-proc-mode: t
  eshell-arg-mode: t
  repeat-mode: t
  rcirc-track-minor-mode: t
  server-mode: t
  minibuffer-depth-indicate-mode: t
  global-display-line-numbers-mode: t
  display-line-numbers-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  minibuffer-regexp-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort flyspell ispell face-remap mail-extr emacsbug message
yank-media puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config
gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils help-fns radix-tree cl-print debug backtrace
find-func em-xtra em-unix em-tramp em-term term disp-table ehelp
em-smart em-script em-prompt em-pred em-ls em-hist em-glob em-extpipe
em-elecslash thingatpt tramp trampver tramp-integration tramp-message
tramp-compat xdg shell format-spec tramp-loaddefs em-cmpl em-dirs
em-basic em-banner em-alias esh-mode esh-var eshell esh-cmd generator
esh-ext esh-opt esh-proc esh-io esh-arg pcomplete esh-module
esh-module-loaddefs esh-util pcase ange-ftp comint ansi-osc ansi-color
files-x rx jka-compr misearch multi-isearch vc-git diff-mode
track-changes easy-mmode vc-dispatcher bookmark text-property-search pp
repeat rcirc parse-time iso8601 time-date ring dired-x dired
dired-loaddefs cl-extra help-mode use-package-core server kmacro
mb-depth display-line-numbers cus-load green-phosphor-theme finder-inf
package browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie generate-lisp-file url-domsuf url-util mailcap
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs icons
password-cache json subr-x map byte-opt gv bytecomp byte-compile
url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd touch-screen tool-bar dnd fontset
image regexp-opt fringe tabulated-list replace newcomment text-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo gtk
x-toolkit xinput2 x multi-tty move-toolbar make-network-process emacs)

Memory information:
((conses 16 179702 28595) (symbols 48 16464 2) (strings 32 53212 2712)
 (string-bytes 1 1428680) (vectors 16 32306)
 (vector-slots 8 1023137 126537) (floats 8 73 34)
 (intervals 56 2312 489) (buffers 992 16))

-- 
馃摏 Christopher Howard
馃殌 gemini://gem.librehacker.com
馃寪 http://gem.librehacker.com

讘专讗砖讬转 讘专讗 讗诇讛讬诐 讗转 讛砖诪讬诐 讜讗转 讛讗专抓




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78860; Package emacs. (Sun, 22 Jun 2025 06:00:02 GMT) Full text and rfc822 format available.

Message #8 received at 78860 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Christopher Howard <christopher <at> librehacker.com>
Cc: 78860 <at> debbugs.gnu.org
Subject: Re: bug#78860: 30.1.90; eshell: wrong-number-of-arguments
Date: Sun, 22 Jun 2025 08:59:11 +0300
> From: Christopher Howard <christopher <at> librehacker.com>
> Date: Sat, 21 Jun 2025 20:24:38 -0800
> 
> 
> When I run the command "git status" in eshell, I am getting the error "wrong-number-of-arguments".
> 
> M-x package-isolate <ENTER> <ENTER>
> M-x eshell <ENTER>
> git status <ENTER> [or] *git status <ENTER>
> 
> With debug-on-error, here is the backtrace:
> 
> ```
> Debugger entered--Lisp error: (wrong-number-of-arguments (1 . 1) 2)
>   eshell-stringify("status" nil)
>   #f(compiled-function (i) #<bytecode 0x12a893834464da57>)("status")
>   mapcar(#f(compiled-function (i) #<bytecode 0x12a893834464da57>) ("status"))
>   eshell-connection-local-command("/home/christopher/.guix-home/profile/bin/git" ("status"))
>   eshell-external-command("/home/christopher/.guix-home/profile/bin/git" ("status"))
>   eshell-explicit-command("*git" ("status"))

Crystal ball says you a version mismatch between the code that calls
Eshell and Eshell itself.  Because eshell-stringify indeed accepted
only 1 argument in Emacs 30, but in Emacs 31 it can accept 2.

FTR: I cannot reproduce this problem.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78860; Package emacs. (Sun, 22 Jun 2025 14:40:04 GMT) Full text and rfc822 format available.

Message #11 received at 78860 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Howard <christopher <at> librehacker.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 78860 <at> debbugs.gnu.org
Subject: Re: bug#78860: 30.1.90; eshell: wrong-number-of-arguments
Date: Sun, 22 Jun 2025 06:38:47 -0800
Eli Zaretskii <eliz <at> gnu.org> writes:

> Crystal ball says you a version mismatch between the code that calls
> Eshell and Eshell itself.  Because eshell-stringify indeed accepted
> only 1 argument in Emacs 30, but in Emacs 31 it can accept 2.

Do you see anything in the bug report info that might suggest I am pulling in code from a weird place? At first, I was sure it must be something weird in my configuration or the packages I was using. So I did two things:

(1) I adjusted my emacs start script to unset EMACSNATIVELOADPATH, so that emacs is not pulling code from any Emacs packages installed by Guix. EMACSLOADPATH only points to /home/christopher/local/share/emacs/30.1.90/lisp.

(2) I used package-isolate to test this, with no packages, which in my understanding launches an instance of emacs that does not use my init file and does not have any packages loaded. I think that would also mean that the instance would not have any special eshell options set, nor be using any eshell special modules.

If I follow each of the underlined functions in the backtrace, they each take me either to a file in ~/local/share/emacs/30.1.90/lisp/ or ~/Repos/emacs-30/src/.

So I'm wondering where I went wrong. Maybe some bad code cached somewhere? Or something wrong with my checkout of the emacs-30 branch?

I confirmed also this problem does not occur in the emacs-29 installed by Guix.

-- 
Christopher Howard




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78860; Package emacs. (Sun, 22 Jun 2025 15:05:03 GMT) Full text and rfc822 format available.

Message #14 received at 78860 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Christopher Howard <christopher <at> librehacker.com>
Cc: 78860 <at> debbugs.gnu.org
Subject: Re: bug#78860: 30.1.90; eshell: wrong-number-of-arguments
Date: Sun, 22 Jun 2025 18:04:52 +0300
> X-Spam-Status: No, score=0 tagged_above=-10 required=5 tests=[none]
>  autolearn=ham autolearn_force=no
> From: Christopher Howard <christopher <at> librehacker.com>
> Cc: 78860 <at> debbugs.gnu.org
> Date: Sun, 22 Jun 2025 06:38:47 -0800
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> > Crystal ball says you a version mismatch between the code that calls
> > Eshell and Eshell itself.  Because eshell-stringify indeed accepted
> > only 1 argument in Emacs 30, but in Emacs 31 it can accept 2.
> 
> Do you see anything in the bug report info that might suggest I am pulling in code from a weird place?

I don't have enough information to say anything definitive, but the
backtrace you posted, viz.:

> Debugger entered--Lisp error: (wrong-number-of-arguments (1 . 1) 2)
>   eshell-stringify("status" nil)
>   #f(compiled-function (i) #<bytecode 0x12a893834464da57>)("status")
>   mapcar(#f(compiled-function (i) #<bytecode 0x12a893834464da57>) ("status"))
>   eshell-connection-local-command("/home/christopher/.guix-home/profile/bin/git" ("status"))
>   eshell-external-command("/home/christopher/.guix-home/profile/bin/git" ("status"))
>   eshell-explicit-command("*git" ("status"))

clearly shows that some byte-compiled function called from
eshell-connection-local-command called eshell-stringify with 2
arguments, something that will only work in Emacs 31.  Whereas your
bug report says you are running Emacs 30.1.90.

My first suspect would be Eshell, but that's all I could say.

> So I'm wondering where I went wrong. Maybe some bad code cached somewhere? Or something wrong with my checkout of the emacs-30 branch?

Maybe look at the value of load-history, it could tell you where you
are loading Lisp packages from.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78860; Package emacs. (Sun, 22 Jun 2025 15:53:03 GMT) Full text and rfc822 format available.

Message #17 received at 78860 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: christopher <at> librehacker.com
Cc: 78860 <at> debbugs.gnu.org
Subject: Re: bug#78860: 30.1.90; eshell: wrong-number-of-arguments
Date: Sun, 22 Jun 2025 18:51:33 +0300
> Cc: 78860 <at> debbugs.gnu.org
> Date: Sun, 22 Jun 2025 18:04:52 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> 
> > X-Spam-Status: No, score=0 tagged_above=-10 required=5 tests=[none]
> >  autolearn=ham autolearn_force=no
> > From: Christopher Howard <christopher <at> librehacker.com>
> > Cc: 78860 <at> debbugs.gnu.org
> > Date: Sun, 22 Jun 2025 06:38:47 -0800
> > 
> > Eli Zaretskii <eliz <at> gnu.org> writes:
> > 
> > > Crystal ball says you a version mismatch between the code that calls
> > > Eshell and Eshell itself.  Because eshell-stringify indeed accepted
> > > only 1 argument in Emacs 30, but in Emacs 31 it can accept 2.
> > 
> > Do you see anything in the bug report info that might suggest I am pulling in code from a weird place?
> 
> I don't have enough information to say anything definitive, but the
> backtrace you posted, viz.:
> 
> > Debugger entered--Lisp error: (wrong-number-of-arguments (1 . 1) 2)
> >   eshell-stringify("status" nil)
> >   #f(compiled-function (i) #<bytecode 0x12a893834464da57>)("status")
> >   mapcar(#f(compiled-function (i) #<bytecode 0x12a893834464da57>) ("status"))
> >   eshell-connection-local-command("/home/christopher/.guix-home/profile/bin/git" ("status"))
> >   eshell-external-command("/home/christopher/.guix-home/profile/bin/git" ("status"))
> >   eshell-explicit-command("*git" ("status"))
> 
> clearly shows that some byte-compiled function called from
> eshell-connection-local-command called eshell-stringify with 2
> arguments, something that will only work in Emacs 31.  Whereas your
> bug report says you are running Emacs 30.1.90.

I think this comes from here:

  (defun eshell-connection-local-command (command args)
    "Insert output from an external COMMAND, using ARGS.
  This always runs COMMAND using the connection associated with the
  current working directory."
    (setq args (eshell-stringify-list (flatten-tree args))) <<<<<<<<<<<<

eshell-stringify-list is a defsubst in esh-util.el:

  (defsubst eshell-stringify-list (args &optional quoted)
    "Convert each element of ARGS into a string value."
    (mapcar (lambda (i) (eshell-stringify i quoted)) args))

The above is the version from Emacs 31, which clearly calls
eshell-stringify with 2 arguments.

So my guess is that your Eshell was somehow compiled when loading
esh-util.el brought in the version from Emacs 31, and now esh-ext.elc
(or the corresponding *.eln?) has the wrong definition of
eshell-stringify-list expanded in it.

My suggestion is to recompile all the *.el files under
/home/christopher/local/share/emacs/30.1.90/lisp/eshell/, or maybe
rebuild and reinstall Emacs anew.




Reply sent to Christopher Howard <christopher <at> librehacker.com>:
You have taken responsibility. (Mon, 23 Jun 2025 02:38:02 GMT) Full text and rfc822 format available.

Notification sent to Christopher Howard <christopher <at> librehacker.com>:
bug acknowledged by developer. (Mon, 23 Jun 2025 02:38:02 GMT) Full text and rfc822 format available.

Message #22 received at 78860-done <at> debbugs.gnu.org (full text, mbox):

From: Christopher Howard <christopher <at> librehacker.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 78860-done <at> debbugs.gnu.org
Subject: Re: bug#78860: 30.1.90; eshell: wrong-number-of-arguments
Date: Sun, 22 Jun 2025 18:36:51 -0800
I determined that, for some unknown reason the elc file for esh-ext.el was not being recompiled, even after a "make clean". I was able to resolve this issue by running a "make distclean" instead, which deletes the all the elc files under the lisp directory.

I'm mildy curious why that "make clean" does not delete elc files. In most projects I've used, make clean delete all compiled files. But I'm sure there must be some arcane reason for it, probably documented in some installation instructions I didn't bother to read.

-- 
Christopher Howard




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78860; Package emacs. (Mon, 23 Jun 2025 11:36:03 GMT) Full text and rfc822 format available.

Message #25 received at 78860 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Christopher Howard <christopher <at> librehacker.com>
Cc: 78860 <at> debbugs.gnu.org
Subject: Re: bug#78860: 30.1.90; eshell: wrong-number-of-arguments
Date: Mon, 23 Jun 2025 14:35:14 +0300
> From: Christopher Howard <christopher <at> librehacker.com>
> Cc: 78860-done <at> debbugs.gnu.org
> Date: Sun, 22 Jun 2025 18:36:51 -0800
> 
> I determined that, for some unknown reason the elc file for esh-ext.el was not being recompiled, even after a "make clean". I was able to resolve this issue by running a "make distclean" instead, which deletes the all the elc files under the lisp directory.

OK, thanks.

> I'm mildy curious why that "make clean" does not delete elc files. In most projects I've used, make clean delete all compiled files. But I'm sure there must be some arcane reason for it, probably documented in some installation instructions I didn't bother to read.

The reason why we don't delete *.elc files as part of "make clean" is
that Emacs release tarballs come with the *.elc files, and therefore
they technically aren't considered "compiled by the build process".

But "make distclean" doesn't remove the *.elc files, either, for the
same reason.  You need to use "make maintainer-clean" for that.




This bug report was last modified 1 day ago.

Previous Next


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