2012-03-29 5 views
2

Ich versuche, Emacs zu bauen auf 64-Bit-Windows-7 Cyqwin mit:Rezept für Ziel `autoloads ist fehlgeschlagen, während Emacs Gebäude in Cygwin

Emacs 23.3 oder 23.4

CYGWIN_NT-6.1-WOW64 1.7.11 (0,260/5/3) 2012-02-24 14.05 i686 Cygwin

ein paar Informationen von configure log:

What compiler should emacs be built with?  
    gcc -g -O2 -Wdeclarati 
    What operating system and machine description files should Emacs use? 
    `s/cygwin.h' and `m/intel386.h' 

ich bin in der Lage Makefile problemlos zu erstellen. wenn ich make Verfahren jedoch laufen, es baut für ein paar Minuten ist dann in bestimmtem Punkt, wird es für 2 Minuten stecken und dann produziert Fehler:

Makefile:149: recipe for target `autoloads' failed 
make[2]: *** [autoloads] Interrupt 
Makefile:198: recipe for target `/cygdrive/c/emacs-23.3/src/../lisp/loaddefs.el' failed 
make[1]: *** [/cygdrive/c/emacs-23.3/src/../lisp/loaddefs.el] Interrupt 
Makefile:339: recipe for target `src' failed 
make: *** [src] Interrupt 

In beiden Fällen (Emacs 23.3 und 23.4) Makefile: 149 verweist auf denselben Teil eines Makefiles im Emacs \ lisp-Ordner:

149 autoloads: $(LOADDEFS) doit 
    150 , chmod +w $(lisp)/ps-print.el $(lisp)/emulation/tpu-edt.el \ 
    151 $(lisp)/emacs-lisp/cl-loaddefs.el $(lisp)/mail/rmail.el \ 
    152 $(lisp)/dired.el $(lisp)/ibuffer.el 
    153 wd=$(lisp); $(setwins_almost); \ 
    154 echo Directories: $$wins; \ 
    155 $(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins 

in Version 23.3. wird das Gebäude stecken beim Generieren autoloads für * .el Dateien:

Generating autoloads for progmodes/cc-mode.el... 
    Generating autoloads for progmodes/cc-mode.el...done 
    Generating autoloads for progmodes/cc-styles.el... 
    Generating autoloads for progmodes/cc-styles.el...done 
    Generating autoloads for progmodes/cc-vars.el... 
    Generating autoloads for progmodes/cc-vars.el...done 
    Generating autoloads for international/ccl.el... 
    Makefile:149: recipe for target `autoloads' failed 
    make[2]: *** [autoloads] Interrupt 

in verison 23.4 das Gebäude stecken bleibt, während loaddefs Sparend:

make[2]: Entering directory `/cygdrive/c/emacs-23.4/lisp' 
    chmod +w /cygdrive/c/emacs-23.4/lisp/ps-print.el /cygdrive/c/emacs-23.4/lisp/emulation/tpu-edt.el \ 
    /cygdrive/c/emacs-23.4/lisp/emacs-lisp/cl-loaddefs.el /cygdrive/c/emacs-23.4/lisp/mail/rmail.el \ 
    /cygdrive/c/emacs-23.4/lisp/dired.el /cygdrive/c/emacs-23.4/lisp/ibuffer.el 
    wd=/cygdrive/c/emacs-23.4/lisp; subdirs=`(cd $wd; find . -type d -print)`; for file in $subdirs; do case $file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* | */obsolete | */term) ;; *) wins="$wins $wd/$file" ;; esac; done   ; \ 
    echo Directories: $wins; \ 
    EMACSLOADPATH=/cygdrive/c/emacs-23.4/lisp LC_ALL=C ../src/bootstrap-emacs.exe -batch --no-site-file --multibyte -l autoload --eval '(setq generated-autoload-file "/cygdrive/c/emacs-23.4/lisp/loaddefs.el")' -f batch-update-autoloads $wins 
    Directories: /cygdrive/c/emacs-23.4/lisp/. /cygdrive/c/emacs-23.4/lisp/./calc /cygdrive/c/emacs-23.4/lisp/./calendar /cygdrive/c/emacs-23.4/lisp/./cedet /cygdrive/c/emacs-23.4/lisp/./cedet/ede /cygdrive/c/emacs-23.4/lisp/./cedet/semantic /cygdrive/c/emacs-23.4/lisp/./cedet/semantic/analyze /cygdrive/c/emacs-23.4/lisp/./cedet/semantic/bovine /cygdrive/c/emacs-23.4/lisp/./cedet/semantic/decorate/cygdrive/c/emacs-23.4/lisp/./cedet/semantic/symref /cygdrive/c/emacs-23.4/lisp/./cedet/semantic/wisent /cygdrive/c/emacs-23.4/lisp/./cedet/srecode /cygdrive/c/emacs-23.4/lisp/./emacs-lisp /cygdrive/c/emacs-23.4/lisp/./emulation /cygdrive/c/emacs-23.4/lisp/./erc /cygdrive/c/emacs-23.4/lisp/./eshell /cygdrive/c/emacs-23.4/lisp/./gnus /cygdrive/c/emacs-23.4/lisp/./international /cygdrive/c/emacs-23.4/lisp/./language /cygdrive/c/emacs-23.4/lisp/./mail /cygdrive/c/emacs-23.4/lisp/./mh-e /cygdrive/c/emacs-23.4/lisp/./net /cygdrive/c/emacs-23.4/lisp/./nxml /cygdrive/c/emacs-23.4/lisp/./org /cygdrive/c/emacs-23.4/lisp/./play /cygdrive/c/emacs-23.4/lisp/./progmodes /cygdrive/c/emacs-23.4/lisp/./textmodes /cygdrive/c/emacs-23.4/lisp/./url 
    Saving file /cygdrive/c/emacs-23.4/lisp/loaddefs.el... 
    Makefile:149: recipe for target `autoloads' failed 
    make[2]: *** [autoloads] Interrupt 

Hat Ahnung jemand, wie kann ich diesen Fehler beheben? Falscher C-Compiler? Makefile ändern? Verwenden Sie 'make' mit einem Parameter?

Vielen Dank für jede Hilfe oder Referenz.

** * ** * ** * ***PART2* ** * ** * ** * **

Ok, also hier ist das Fortfahren nach Ihren Ratschlägen:

1 # make autoloads ist nicht möglich, da es, weil dieser Unterteil ist im Sub-Make-Datei ist, so dass es Fehler produzieren:

$ make autoloads 
chmod +w /cygdrive/c/emacs-23.4/lisp/ps-print.el /cygdrive/c/emacs-23.4/lisp/emulation/tpu-edt.el \ 
    /cygdrive/c/emacs-23.4/lisp/emacs-lisp/cl-loaddefs.el /cygdrive/c/emacs-23.4/lisps/mail/rmail.el \ 
    /cygdrive/c/emacs-23.4/lisp/dired.el /cygdrive/c/emacs-23.4/lisp/ibuffer.el 
wd=/cygdrive/c/emacs-23.4/lisp; subdirs=`(cd $wd; find . -type d -print)`; for file in $subdirs; do case $file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* | */obsolete | */term) ;; *) wins="$wins $wd/$file" ;; esac; done; \ 
echo Directories: $wins; \ 
EMACSLOADPATH=/cygdrive/c/emacs-23.4/lisp LC_ALL=C ../src/emacs -batch --no-site-file --multibyte -l autoload --eval '(setq generated-autoload-file "/cygdrive/c/emacs-23.4/lisp/loaddefs.el")' -f batch-update-autoloads $wins 
Directories: /cygdrive/c/emacs-23.4/lisp/. /cygdrive/c/emacs-23.4/lisp/./calc /cygdrive/c/emacs-23.4/lisp/./calendar /cygdrive/c/emacs-23.4/lisp/./cedet /cygdrive/c/emacs-23.4/lisp/./cedet/ede /cygdrive/c/emacs-23.4/lisp/./cedet/semantic /cygdrive/c/emacs-23.4/lisp/./cedet/semantic/analyze /cygdrive/c/emacs-23.4/lisp/./cedet/semantic/bovine /cygdrive/c/emacs-23.4/lisp/./cedet/semantic/decorate /cygdrive/c/emacs-23.4/lisp/./cedet/semantic/symref /cygdrive/c/emacs-23.4/lisp/./cedet/semantic/wisent /cygdrive/c/emacs-23.4/lisp/./cedet/srecode /cygdrive/c/emacs-23.4/lisp/./emacs-lisp /cygdrive/c/emacs-23.4/lisp/./emulation /cygdrive/c/emacs-23.4/lisp/./erc /cygdrive/c/emacs-23.4/lisp/./eshell /cygdrive/c/emacs-23.4/lisp/./gnus /cygdrive/c/emacs-23.4/lisp/./international /cygdrive/c/emacs-23.4/lisp/./language /cygdrive/c/emacs-23.4/lisp/./mail /cygdrive/c/emacs-23.4/lisp/./mh-e /cygdrive/c/emacs-23.4/lisp/./net /cygdrive/c/emacs-23.4/lisp/./nxml /cygdrive/c/emacs-23.4/lisp/./org /cygdrive/c/emacs-23.4/lisp/./play /cygdrive/c/emacs-23.4/lisp/./progmodes /cygdrive/c/emacs-23.4/lisp/./textmodes /cygdrive/c/emacs-23.4/lisp/./url 
/bin/sh: line 2: ../src/emacs: No such file or directory 
Makefile:149: recipe for target `autoloads' failed 
make: *** [autoloads] Error 127 

Wenn ich etwas falsch tue, mich bitte korrigieren.

2 # $(LOADDEFS) doit in der Tat das Entfernen das Ergebnis

3 #

autoloads: 
    chmod +w $(lisp)/ps-print.el $(lisp)/emulation/tpu-edt.el \ 
    $(lisp)/emacs-lisp/cl-loaddefs.el $(lisp)/mail/rmail.el \ 
    $(lisp)/dired.el $(lisp)/ibuffer.el 

löst, nur der erste Teil

jedoch nach 20 innerhalb autoloads in keinem Fehler auszuführen nicht ändert Es gefriert für eine Weile und erzeugt einen weiteren Fehler

(descriptio n für dieses Problem ist unten)

4 # den zweiten Teil nur ausgeführt:

autoloads: 
    wd=$(lisp); $(setwins_almost); \ 
    echo Directories: $$wins; \ 
    $(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins 

creshed mit Ursprungsfehler

5 # autoloads wie in 3 # auch laufen mit

wd=$(lisp); 

autoloads ohne Fehler, später gleiche Fehler wie in 3 #

6 # Lauf autoloads mit wd=$(lisp);$(setwins_almost); autoloads ohne Fehler, später gleiche Fehler wie in 3 #

7 # auch hinzufügen Linie

echo Directories: $$wins; 

autoloads ohne Fehler, später gleiche Fehler wie in 3 #

8 # add auch Linie

$(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins 

der Ursprung Fehler, natürlich

Beschreibung des zweiten ERROR (Teil 3 #):

make[2]: Entering directory `/cygdrive/c/emacs-23.4/lisp' 
Compiling /cygdrive/c/emacs-23.4/src/../lisp/abbrev.el 
>>Error occurred processing /cygdrive/c/emacs-23.4/src/../lisp/abbrev.el: Symbol's value as variabl      e is void ((warning-series)) 
Makefile:1478: recipe for target `compile-onefile' failed 
make[2]: *** [compile-onefile] Error 1 
make[2]: Leaving directory `/cygdrive/c/emacs-23.4/lisp' 
Makefile:195: recipe for target `/cygdrive/c/emacs-23.4/src/../lisp/abbrev.elc' failed 
make[1]: *** [/cygdrive/c/emacs-23.4/src/../lisp/abbrev.elc] Error 2 
make[1]: Leaving directory `/cygdrive/c/emacs-23.4/src' 
Makefile:339: recipe for target `src' failed 
make: *** [src] Error 2 

vor, dass eine Menge * .el Dateien

Teil des Makefiles in lisp/

zusammengestellt
 # The src/Makefile.in has its own set of dependencies and when they decide 
    # that one Lisp file needs to be re-compiled, we had better recompile it as 
    # well, otherwise every subsequent make will again call us, until we finally 
    # end up deciding that yes, the file deserves recompilation. 
    # One option is to try and reproduce exactly the same dependencies here as 
    # we have in src/Makefile.in, but it turns out to be painful 
    # (e.g. src/Makefile.in may have a dependency for ../lisp/foo.elc where we 
    # only know of $(lisp)/foo.elc). So instead we provide a direct way for 
    # src/Makefile.in to rebuild a particular Lisp file, no questions asked. 
    # Use byte-compile-refresh-preloaded to try and work around some of 
    # the most common problems of not bootstrapping from a clean state. 
1477  compile-onefile: 
1478   @echo Compiling $(THEFILE) 
1479   @# Use byte-compile-refresh-preloaded to try and work around some of 
1480   @# the most common bootstrapping problems. 
1481   @$(emacs) -l bytecomp -f byte-compile-refresh-preloaded $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $(THEFILE) 

Es gibt eine Liste von ELC-Dateien in Makefile:

## Explicitly list the .elc files, for the sake of parallel builds. 
## http://lists.gnu.org/archive/html/bug-gnu-emacs/2008-05/msg00016.html 
## This can probably be done more elegantly, but needs to be portable. 
ELCFILES = \ 
    $(lisp)/abbrev.elc \ 
    $(lisp)/abbrevlist.elc \ 
    $(lisp)/add-log.elc \ 
    $(lisp)/align.elc \ 
    $(lisp)/allout.elc \ 
    $(lisp)/ansi-color.elc \ 
    $(lisp)/apropos.elc \ 
    $(lisp)/arc-mode.elc \ 

...

$(lisp)/info.elc \ 
    $(lisp)/informat.elc \ 
    $(lisp)/international/ccl.elc \ 
    $(lisp)/international/characters.elc \ 
    $(lisp)/international/fontset.elc \ 
    $(lisp)/international/isearch-x.elc \ 

Die neu erstellt Makefile somewhy * .el Dateien vielleicht aus * .elc Dateien jedoch alle * .el Dateien bereits vorhanden sind. OK jetzt habe ich zwei Fehler von eins:) (wenn es natürlich nicht verbunden ist)

Nochmals vielen Dank.

+0

+1 nur für eine schön präzise und gründliche Fehlerbericht. – Beta

Antwort

0

Generierte Makefiles sind notorisch schwer zu pflegen und zu beheben, aber wir können es versuchen.Die Regel in Frage hat zwei Voraussetzungen und zwei Befehle, die zweite besteht aus vier Shell-Befehle aneinandergereiht:

autoloads: $(LOADDEFS) doit 
    chmod +w $(lisp)/ps-print.el $(lisp)/emulation/tpu-edt.el \ 
    $(lisp)/emacs-lisp/cl-loaddefs.el $(lisp)/mail/rmail.el \ 
    $(lisp)/dired.el $(lisp)/ibuffer.el 
    wd=$(lisp); $(setwins_almost); \ 
    echo Directories: $$wins; \ 
    $(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins 

Zuerst würde ich make autoloads versuchen. Wenn dies den gleichen Fehler ergibt, können wir fortfahren, andernfalls die Ergebnisse veröffentlichen.

entfernen Sie dann die Voraussetzungen ($(LOADDEFS) doit), da sie idempotent sein sollte, und haben keine Auswirkungen des Betriebs von dieser Regel (es sei denn, die Make-Datei wirklich gewunden ist) und versuchen Sie es erneut.

Dann teilen Sie den Befehl in kleinere Befehle und versuchen Sie es nacheinander. Zuerst

autoloads: 
    chmod +w $(lisp)/ps-print.el $(lisp)/emulation/tpu-edt.el \ 
    $(lisp)/emacs-lisp/cl-loaddefs.el $(lisp)/mail/rmail.el \ 
    $(lisp)/dired.el $(lisp)/ibuffer.el 

Dies sollte keinen Fehler geben. Wenn dies der Fall ist, fehlt wahrscheinlich eine dieser Dateien. Veröffentlichen Sie die Ergebnisse. Wenn nicht, dann versuche den zweiten Befehl ohne den ersten:

autoloads: 
    wd=$(lisp); $(setwins_almost); \ 
    echo Directories: $$wins; \ 
    $(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins 

Ich erwarte, dass dies den gleichen Fehler wie ursprünglich geben wird; Wenn nicht, setze einfach den ersten Befehl zurück und fahre fort.

Jetzt brechen Sie den zweiten Befehl auf. Wir können die frühen Teile nicht weglassen, da die späteren Teile von ihnen abhängig sind, so versuchen Sie zuerst

autoloads: 
    wd=$(lisp); 

, die funktionieren sollte, es sei denn, lisp ist etwas seltsam (ja, ja, ich weiß). Dann

autoloads: 
    wd=$(lisp); $(setwins_almost); 

Ich wette, das ist, wo es fehlschlägt, aber wenn nicht, weiter:

autoloads: 
    wd=$(lisp); $(setwins_almost); \ 
    echo Directories: $$wins; 

Das sollte funktionieren. Dann

autoloads: 
    wd=$(lisp); $(setwins_almost); \ 
    echo Directories: $$wins; \ 
    $(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins 

wird fast sicher fehlschlagen.

Das ist genug für einen ersten Durchlauf. Erzählen Sie uns die Ergebnisse und wir werden fortfahren.

+0

Zunächst möchte ich Ihnen für Ihre Sorge danken, hoffentlich wird es irgendwo führen. Die Ergebnisse Ihrer Vorschläge werden der Ursprungsfrage hinzugefügt (TEIL2). – MasterPJ

+0

Auch wie Sie die andere Antwort von Benutzer Stafan sehen können, war ich in der Lage, Emacs 24 zu kompilieren. Wenn Sie nicht wirklich interessiert sind, was falsch ist, müssen Sie nicht versuchen, die Lösung zu finden, da die Lösung dieses Problems keinen Nutzen hat nicht mehr. Zumindest für mich. Aber danke nochmal. – MasterPJ

0

Ich würde empfehlen, dass Sie stattdessen mit dem Emacs-24-Vortest versuchen, und wenn das fehlschlägt, melden Sie es als einen Fehler.

+0

Was kann ich sagen:) Sie haben meine Frage nicht beantwortet, aber Sie haben mein Problem gelöst. Ich hatte kein Problem damit Emacs 24 zu bauen. Vielen Dank für Ihre Antwort! – MasterPJ

Verwandte Themen