Doom-emacs: [BUG] Doom Refresh schlägt unter Windows fehl

Erstellt am 6. Jan. 2020  ·  23Kommentare  ·  Quelle: hlissner/doom-emacs

Was hast du erwartet?
doom refresh sollte unter Windows funktionieren.

Was wirklich passierte?
Ich schaff das:
`` `x Es ist ein unerwarteter Fehler aufgetreten:
Typ: Dateifehler
Botschaft:
Dateifehler
Daten:
"Laichkindprozess"
"Exec-Formatfehler"

Führen Sie den Befehl erneut mit der Option -d (oder --debug) aus, um das Debuggen zu aktivieren
Modus und (hoffentlich) eine Rückverfolgung aus diesem Fehler generieren:

Untergang -d aktualisieren

Wenn Sie einen Fehlerbericht einreichen, fügen Sie ihn bitte bei!

DOOM Doom Hook ausführen: doom-init-theme-h
DOOM Doom Hook ausführen: Window-Divider-Modus
Suche nach Programm: xclip, keine solche Datei


But after the xclip patch I still get this

Ladepaket allgemein ...
Paket allgemein laden ... fertig (0.024s)

Neu kompilierte elc-Dateien neu kompilieren ...
Neu kompilierte 0/0 Datei (en) (168 ignoriert)
x Es ist ein unerwarteter Fehler aufgetreten:
Typ: Dateifehler
Botschaft:
Dateifehler
Daten:
"Laichkindprozess"
"Exec-Formatfehler"

Führen Sie den Befehl erneut mit der Option -d (oder --debug) aus, um das Debuggen zu aktivieren
Modus und (hoffentlich) eine Rückverfolgung aus diesem Fehler generieren:

Untergang -d aktualisieren

Wenn Sie einen Fehlerbericht einreichen, fügen Sie ihn bitte bei!

DOOM Doom Hook ausführen: doom-init-theme-h
DOOM Doom Hook ausführen: Window-Divider-Modus
`` `

Das ist sehr ähnlich, aber ohne eine Meldung, die angibt, was die schlechte ausführbare Datei ist.

Zusätzliche Details:
https://github.com/r-darwish/.doom.d

Ich weiß, dass Windows in Doom nicht "Tier 1" ist, daher werde ich das Problem gerne beheben und eine PR öffnen. Da diesmal jedoch keine Fehlermeldung angezeigt wird, würde ich mich über Ratschläge zum Debuggen freuen.

Schritte zum Reproduzieren:
Führen Sie Doom Refresh aus

System Information:


((Emacs
(Version. "26.2")
(Funktionen. "XPM JPEG TIFF GIF PNG RSVG SOUND NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS THREADS LCMS2")
(Build. "13. April 2019")
(buildopts "--without-dbus --host = x86_64-w64-mingw32 --without-compress-install 'CFLAGS = -O2 -static -g3'")
(windowsys. batch)
(Daemonp))
(Untergang
(Version. "2.0.9")
(build. "HEAD -> entwickeln, Ursprung / Entwickeln, Ursprung / KOPF 0d4315960 2020-01-06 15:08:15 -0500")
(dir. "c: /Users/roey/.doom.d/"))
(System
(Typ. Windows-nt)
(Konfiguration "x86_64-w64-mingw32")
(Shell. "C: /Users/roey/scoop/apps/emacs/current/libexec/emacs/26.2/x86_64-w64-mingw32/cmdproxy.exe")
(uname. "n / a")
(Pfad "c: / Programme (x86) / Intel / iCLS-Client /" "C: / Programme / Intel / iCLS-Client /" "C: / Windows / system32" "C: / Windows" "C: / Windows / System32 / Wbem C: /Windows/System32/WindowsPowerShell/v1.0/ C: / Programme (x86) / NVIDIA Corporation / PhysX / Common C: / Programme (x86) / MiKTeX 2.9 / miktex / bin / "" C: / Programme (x86) / LyX 2.2 / Perl / bin "" C: / WINDOWS / system32 "" C: / WINDOWS "" C: / WINDOWS / System32 / Wbem "" C: / WINDOWS / System32 / WindowsPowerShell / v1.0 / "" C: / Programmdateien (x86) / Intel / Intel (R) Management Engine-Komponenten / DAL "" C: / Programmdateien / Intel / Intel (R) Management Engine-Komponenten / DAL C: / Programmdateien (x86) / Intel / Intel (R) Management Engine-Komponenten / IPT C: / Programme / Intel / Intel (R) Management Engine-Komponenten / IPT C: / ProgramData / schokoladig / bin "" C: / Programme (x86) / vim / vim80 "" C: / WINDOWS / System32 / OpenSSH / "" C: / Programme / Calibre2 / "" C: / Programme (x86) / Windows Kits /8.1/Windows Performance Toolkit / "" C: / Programme / NVIDIA Corporation / NVIDIA NvDLISR "" C: / WINDOWS / system 32 C: / WINDOWS C: / WINDOWS / System32 / Wbem C: /WINDOWS/System32/WindowsPowerShell/v1.0/ C: / WINDOWS / System32 / OpenSSH / C: / Programme / PowerShell / 6 / "" C: / Benutzer / roey / scoop / apps / python / current "" C: / Benutzer / roey / scoop / apps / python / current / Scripts "" C: / Users / roey / AppData / Lokal / Programme / Python / Launcher / "" C: / Users / roey / scoop / shims "" C: /Users/roey/.cargo/bin "" C: / Users / roey / AppData / Local / Microsoft / WindowsApps " "C: / Programme / Oracle / VirtualBox" "C: / ProgramData / emacs / bin" "C: /Users/roey/.local/bin" "C: / Users / roey / AppData / Roaming / Python / Python37 / Skripte "" C: / Users / roey / AppData / Local / Microsoft / WindowsApps "" c: /Users/roey/scoop/apps/emacs/current/libexec/emacs/26.2/x86_64-w64-mingw32 "))
(config
(envfile)
(elc-files. 0)
(Module: Abschlussfirma (Efeu + Kinderrahmen + Symbole): UI Doom Doom-Dashboard Hl-ToDo Hydra Modeline Nav-Flash-Ophints (Popup + Alle + Standardeinstellungen) VC-Rinne Vi-Tilde-Rand Fensterauswahl: Editor (Böse +) Überall) Dateivorlagen falten (Format + Onsave) Lispy Multiple-Cursor drehen Text-Snippets: Emacs dired elektrischen Ibuffer VC: Tools (Eval + Overlay) Flycheck (Lookup + Docsets) Lsp Macos Magit: Lang Daten Emacs-Lisp (Java + lsp) Javascript Markdown (org + dragndrop + present) python rust sh web: config (Standard + Bindungen))
(Pakete Highlight-Symbol Git-Link Syntax-Unterwort)
(elpa "n / a")))

external bidoom windows resolved-elsewhere

Hilfreichster Kommentar

@hlissner , nachdem ich doom build , kann ich bestätigen, dass straight.el in .local/straight/build/straight/ geändert wurde, aber es wird immer noch "Exec format error" ausgegeben.

Alle 23 Kommentare

Hmm. Das ist keine sehr hilfreiche Fehlermeldung, und ich gehe davon aus, dass es keine Rückverfolgung erzeugt? Ich fürchte, ich habe keine Ahnung, wohin ich von hier aus gehen soll.

Es gibt kein Traceback und -d hilft nicht viel. Ich werde versuchen, einige Druckanweisungen hinzuzufügen, bis ich etwas Nützliches finde

@hlissner Gibt es eine Möglichkeit, doom refresh von einer laufenden Instanz von Emacs aus auszuführen, sodass toggle-debug-on-error bei Fehlern angezeigt wird?

Dies scheint auf https://github.com/raxod502/straight.el/issues/393 zurückzuführen zu sein.

Das Hinzufügen von (print! (with-current-buffer "*straight-process*" (buffer-string))) half beim Debuggen. Vielleicht ist es am besten, das immer zu tun, wenn -d angegeben ist?

Wie auch immer, die empfohlene Schadensbegrenzung in https://github.com/raxod502/straight.el/issues/393 besteht darin, exec-path vor dem direkten Laden festzulegen. Dies ist derzeit in ~/.doom.d und muss durch Bearbeiten von ~/.emacs.d/bin/doom . Haben Sie zufällig einen Vorschlag, wie Doom einen Mechanismus zum Festlegen von exec-path bereitstellen kann?

Vielleicht indem Sie PATH direkt einstellen, während Sie bin/doom . z.B

PATH="some/path:$PATH" doom refresh

Ich bin auf dasselbe Problem gestoßen und musste den folgenden Hack für straight.el ausführen, um es zu umgehen.

diff --git a/straight.el b/straight.el
index 93f137d..ff0982a 100644
--- a/straight.el
+++ b/straight.el
@@ -3584,7 +3584,7 @@ modified since their last builds.")
                           (append (list "-o"
                                         "-path"
                                         (expand-file-name
-                                         "*" (straight--repos-dir local-repo))
+                                         "\"*\"" (straight--repos-dir local-repo))
                                         newer-or-newermt
                                         mtime-or-file
                                         "-print")

@ dp12 Ich habe immer noch "Exec format error", nachdem ich Ihren Patch manuell

C:\Users\UserName\.emacs.d\.local\straight\repos\straight.el\straight.el

Habe ich die falsche Datei bearbeitet?

@ skywind3000 Sie müssen das Paket mit doom build -r neu erstellen. Dieses Byte kompiliert und verknüpft die Dateien von Straight mit .local/straight/build/straight/ .

Wenn Sie nicht sehen, dass straight auf doom build -r , versuchen Sie stattdessen doom build .

@hlissner , nachdem ich doom build , kann ich bestätigen, dass straight.el in .local/straight/build/straight/ geändert wurde, aber es wird immer noch "Exec format error" ausgegeben.

Ich hatte das gleiche Problem und kann bestätigen, dass es für mich behoben wurde.

Speziell:

  1. Anfangs hatte ich das unter https://github.com/hlissner/doom-emacs/issues/2323 beschriebene Problem mit der Beschwerde "/ usr / bin / find: Pfade müssen vor dem Ausdruck stehen:` c: /Users/myname/.emacs .d / .local / Straight / Repos / Link-Hinweis.el / README.org '"
  2. C:\Users\myname\.emacs.d\.local\straight\repos\straight.el\straight.el wie oben beschrieben bearbeitet.
  3. Ran bin/doom build -r der Meldung "Keine Pakete müssen neu erstellt werden".
  4. Ran bin/doom build die gerade wieder aufgebaut.

Nach diesen Schritten sind bin/doom sync vergangen und Änderungen in .doom/init.el wirksam.

Beim Versuch, eine Synchronisierung durchzuführen, wurde ein "Exec-Formatfehler" angezeigt. Ich würde einen doom build -Anruf ohne Probleme durchstehen, aber doom sync gab mir irgendwann während der Phase "(Neu-) Erstellen von Paketen ..." Probleme.

Ich habe die Quelle auf die Datei core/cli/packages.el in der Funktion doom-cli-packages-build . Es sind zwei Funktionsaufrufe eingeschlossen, es sei denn:

(unless force-p
    (straight--make-build-cache-available)
    (straight--make-package-modifications-available))

Es gibt einen find -Aufruf in der Straße - make-package-modifikationen-verfügbar mit vielen Argumenten. Ich entschuldige mich für meinen Mangel an Wissen, aber es könnte ein Fehler in der Art und Weise sein, wie die Argumente aufgebaut sind, der zum "Exec-Formatfehler" führt. Ich glaube, das war das Ziel des oben vorgeschlagenen Fixes mit dem "\"*\"" . Dieses Update hat das Problem jedoch nicht für mich gelöst.

Da es nicht ausgeführt wird, wenn force-p wahr ist, habe ich den Code auskommentiert und die Doom-Synchronisierung konnte ohne Fehler für mich ausgeführt werden.

Um klar zu sein, bestand meine Lösung darin, den vorhergehenden Code von core/cli/packages.el in der Funktion doom-cli-packages-build

Hoffentlich wird dies behoben, sobald https://github.com/raxod502/straight.el/pull/473 zusammengeführt wird

Mit raxod502 / hetero.el / pull / 473 zusammengeführt sollte dieses Problem behoben werden. Ein Doom-Upgrade sollte das Problem beheben. Wenn Sie Probleme haben, löschen Sie ~ / .emacs.d / .local / Straight / {Build, Repos} / {Straight, Straight.el} und führen Sie dann die Synchronisierung aus.

Lassen Sie mich wissen, ob das Problem erneut auftritt, und ich werde das Problem erneut öffnen. Vielen Dank, dass Sie mich darauf aufmerksam gemacht haben!

Hallo,

Ich glaube, ich habe immer noch dieses Problem mit Emacs 26.3 unter Windows mit einer Neuinstallation von Doom-Emacs.
Es sieht verwandt aus, also habe ich es hier kommentiert. Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

> doom refresh
> Synchronizing your config with Doom Emacs...
  > Regenerating envvars file at "c:/Users/bram.boris.meerlo/.emacs.d/.local/env"
  - Scraping shell environment
    - Ignoring PROMPT=$P$G
        Successfully generated "c:/Users/bram.boris.meerlo/.emacs.d/.local/env"
  > (Re)generating core autoloads...
    > Generating core autoloads...
    > Byte-compiling core autoloads file...
        Generated .local/autoloads.elc
  > Installing packages...
    - No packages need to be installed
  > (Re)building packages...
There was an unexpected error:
  Type: file-error
  Message:
    File error
  Data:
    "Spawning child process"
    "Exec format error"

Debug-Modus
Ich habe einen Kern geschaffen

Ich habe dieses Problem auch immer noch bei einer Neuinstallation, aber der Fix von @ ctm22396 hat bei mir funktioniert (der Fix von

Ich stelle fest, dass der Fehler davon abhängt, welche Module ich in meinem .doom.d/init.el aktiviert habe. treemacs und neotree brechen es immer. Wenn ich sie auskommentiere und aktualisiere, wird der Fehler nicht angezeigt und der Aktualisierungsvorgang wird erfolgreich abgeschlossen. Vielleicht gibt es in bestimmten Paketen einige Pfade, die den Befehl find ungültig machen?

In jedem Fall handelt es sich immer noch entweder direkt oder indirekt um einen Upstream-Fehler in straight.el .

Ich habe ein anderes Problem festgestellt, als ich versucht habe, Doom neu zu installieren, nachdem der Patch von Straight zusammengeführt wurde:

https://github.com/hlissner/doom-emacs/issues/2513

Jetzt reagiert "doom install" nicht mehr, wenn Sie versuchen, es in Windows neu zu installieren.

@ ctm22396 kann ich Sie nur bitten, zu bestätigen, wie Sie Ihre Arbeit implementieren. Ist es:

Kommentar wie unten in Funktion doom-cli-packages-build aus Datei core/cli/packages.el

;;(unless force-p
;;    (straight--make-build-cache-available)
;;    (straight--make-package-modifications-available))

dann doom build -r gefolgt von doom sync ? - Ich habe auch ein doom refresh ausprobiert - und Ihr Fix scheint alle Fehler zu unterdrücken. Ist das korrekt? Welcher Befehl macht force-p wahr? Entschuldigung - neu in diesem Bereich

BEARBEITEN: Ich sollte hinzufügen, dass Änderungen am ~\.doom.d\init.el implementiert wurden, als ich ein doom refresh mit den Änderungen an core\cli\packages.el

@ rjl6789

Das ist richtig. Ich glaube, force-p wird auf t wenn Sie bin/doom build ohne das Flag -r ausführen. Wenn die Kraft-p nil , die doom-cli-packages-build Funktion erscheint die verwenden straight Paket Pakete in Ihrem Emacs Ökosystem zu finden , die veraltet sind , so dass sie neu erstellt werden können. Wenn es t , erstellt der Befehl einfach jedes Paket (neu). Tatsächlich wäre eine bessere Problemumgehung als die von mir vorgeschlagene, force-p während des Aufrufs zum Neuladen / Aktualisieren / Synchronisieren auf t zu setzen, damit Sie sicherstellen, dass alle Pakete neu erstellt werden. Es dauert jedoch einige Zeit, bis alle wieder aufgebaut sind.

BEARBEITEN: Ich denke, es muss eine Möglichkeit geben, diese selektive Neuerstellung zu implementieren, die nicht auf find beruht, was unter Windows anscheinend große Probleme verursacht

@ ctm22396 hat Ihr find.exe in meinem Pfad und erhalte immer noch den Fehler, der seltsam ist, da er behoben wurde, nachdem straight.el das Problem behoben hat an ihrer Seite

P:\home\.emacs.d\bin>where find
P:\apps\cmder-full\current\vendor\git-for-windows\usr\bin\find.exe
C:\Windows\System32\find.exe
P:\shims\find.exe

FWIW, auch ich bin hierher gekommen, um Hilfe bei genau demselben Problem zu suchen (Windows 10 "Doom Refresh" schlägt mit den oben genannten Fehlermeldungen fehl), und @ ctm22396 Mitigation hat auch bei mir funktioniert.

@xeijin , ich habe dieses Problem gelöst, indem ich eine andere "find.exe" (mit scoop install findutils ) installiert und den Scoop-Binärpfad vor c:\windows\system32 temporär gesetzt habe, wenn doom refresh :

set "PATH=%USERPROFILE%\scoop\shims;%PATH%"

Und ohne einige Pakete wie cc zu installieren, funktioniert mein doom refresh jetzt korrekt.

Übrigens: Ich habe den Patch von @ ctm22396 nicht angewendet. find Tool, aber wenn ich einige Pakete wie cc aktiviere, wird es wieder kaputt gehen.

Ist es eine hilfreiche Information zum Debuggen?

@ skywind3000 @maciekk @xeijin @ ctm22396 @ Bram-Boris @ rjl6789 Ein weiteres Problem wurde für Ihr Problem Exec format error behoben . Siehe # 2556.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen