emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Building cvs emacs on a dual-core machine


From: Eric Lilja
Subject: Re: Building cvs emacs on a dual-core machine
Date: Sat, 23 Dec 2006 00:30:54 +0100
User-agent: Thunderbird 1.5.0.9 (Windows/20061207)

Eli Zaretskii skrev:
From: Eric Lilja <address@hidden>
Date: Thu, 21 Dec 2006 01:14:45 +0100

Eli Zaretskii wrote:
From: Eric Lilja <address@hidden>
Date: Wed, 20 Dec 2006 22:03:56 +0100

Ok, here's where it errors out (same with --jobs=2 and --jobs=4):
gcc -I. -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0400 -D_X86_=1 -c -mno-cygwin -mtune=pentium4 -O2 -Di386 -D_CRTAPI1
=_cdecl    -o oo-spd/i386/preprep.o preprep.c
gcc -o oo-spd/i386/preprep.exe \
                     -mno-cygwin  oo-spd/i386/preprep.o

Essential Lisp files seem to be missing.  You should either
do `make bootstrap' or create `lisp/abbrev.elc' somehow.

mingw32-make: *** [maybe-bootstrap-SH] Error 255

Yes, sorry, I'm on Windows.
That's an important piece of knowledge ;-)

What version of Make do you have?  What does "mingw32-make --version"
print?  The --jobs option started to work correctly on Windows only in
the latest version 3.81 of GNU Make.  If you don't have that version
of Make, --jobs will be very unreliable on Windows.
$ mingw32-make --version
GNU Make 3.81

I found and fixed several problems with Windows makefile's which
prevented parallel builds.  Please resync with CVS and try again, I
hope it will work now.

Note that, since the native Windows build of Make (including
mingw32-make) doesn't yet support the jobserver feature, it by default
invokes sub-Make's with --jobs=1 switch, and thus defeats parallelism
in recursive Make invocations.  I made a provision for working around
this; to use it, invoke the top-level Make in the nt/ subdirectory
like this:

    mingw32-make bootstrap --jobs=2 XMFLAGS="--jobs=2"

The XMFLAGS variable is used to pass an explicit --jobs option to
sub-Make's, overriding the default --jobs=1.  (There's no requirement
that the argument to --jobs on the command line must be identical to
what you put in XMFLAGS, you can use different numbers if you wish.)

Please tell if you have any additional problems with parallel builds
on Windows.

And thanks again for drawing our attention to this.

I tried your changes on a fresh checkout (sorry for using time but I thought it would work and wanted to see how big decrease in compile time I would get with your fixes):
$ time mingw32-make bootstrap --jobs=2 XMFLAGS="--jobs=2"
[Please ignore a syntax error on the next line - it is intentional]
/usr/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/usr/bin/sh: -c: line 1: syntax error: unexpected end of file
mkdir "oo-spd"
mkdir "oo-spd/i386"
echo oo-spd/i386 > stamp_BLD
gcc -I. -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0400 -D_X86_=1 -c -mno-cygwin -mtune=pentium4 -O2 -Di386 -D_CRTAPI1
=_cdecl    -o oo-spd/i386/addsection.o addsection.c
gcc -o oo-spd/i386/addsection.exe \
                    -mno-cygwin  oo-spd/i386/addsection.o   -luser32
c:/mingw32-make-3.81-1/bin/mingw32-make -j 1 --jobs=2 -C ../lisp bootstrap-clean
[Please ignore a syntax error on the next line - it is intentional]
/usr/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/usr/bin/sh: -c: line 1: syntax error: unexpected end of file
mingw32-make[1]: Entering directory `c:/cvsemacs/emacs/lisp'
cp c:/cvsemacs/emacs/lisp/ldefs-boot.el c:/cvsemacs/emacs/lisp/loaddefs.el
c:/mingw32-make-3.81-1/bin/mingw32-make -wj 1 loaddefs.el-SH
for dir in . calc calendar emacs-lisp emulation erc eshell gnus international language mail mh-e net play progmodes
term textmodes url obsolete; do rm -f $dir/*.elc; done
[Please ignore a syntax error on the next line - it is intentional]
/usr/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/usr/bin/sh: -c: line 1: syntax error: unexpected end of file
mingw32-make[2]: Entering directory `c:/cvsemacs/emacs/lisp'
echo ";;; loaddefs.el --- automatically extracted autoloads" > loaddefs.el-SH
echo ";;" >> loaddefs.el-SH; echo ";;; Code:" >> loaddefs.el-SH
echo "(autoload 'define-minor-mode \"easy-mmode\")" >>loaddefs.el-SH
echo "(autoload 'define-ccl-program \"ccl\")" >>loaddefs.el-SH
echo "(autoload 'regexp-opt \"regexp-opt\")" >>loaddefs.el-SH
echo "(autoload 'string-to-list \"mule-util\")" >>loaddefs.el-SH
echo "(autoload 'define-derived-mode \"derived\")" >>loaddefs.el-SH
echo "(autoload 'encoded-kbd-mode \"encoded-kb\")" >>loaddefs.el-SH
echo "(defvar cvs-global-menu nil)" >>loaddefs.el-SH
echo "♀" >> loaddefs.el-SH
echo ";;; Local Variables:" >> loaddefs.el-SH
echo ";;; version-control: never" >> loaddefs.el-SH
echo ";;; no-byte-compile: t" >> loaddefs.el-SH
echo ";;; no-update-autoloads: t" >> loaddefs.el-SH
echo ";;; End:" >> loaddefs.el-SH
echo ";;; loaddefs.el ends here" >> loaddefs.el-SH
mingw32-make[2]: Leaving directory `c:/cvsemacs/emacs/lisp'
cp loaddefs.el-SH c:/cvsemacs/emacs/lisp/loaddefs.el
rm loaddefs.el-SH
mingw32-make[1]: Leaving directory `c:/cvsemacs/emacs/lisp'
c:/mingw32-make-3.81-1/bin/mingw32-make -j 1 --jobs=2 -C ../src clean
[Please ignore a syntax error on the next line - it is intentional]
/usr/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/usr/bin/sh: -c: line 1: syntax error: unexpected end of file
mingw32-make[1]: Entering directory `c:/cvsemacs/emacs/src'
rm *~ "s/*~" "m/*~"
rm: cannot remove `*~': No such file or directory
rm: cannot remove `s/*~': No such file or directory
rm: cannot remove `m/*~': No such file or directory
mingw32-make[1]: [clean] Error 1 (ignored)
rm
rm: missing operand
Try `rm --help' for more information.
mingw32-make[1]: [clean] Error 1 (ignored)
rm -r oo-spd
rm: cannot remove `oo-spd': No such file or directory
mingw32-make[1]: [clean] Error 1 (ignored)
rm stamp_BLD
rm: cannot remove `stamp_BLD': No such file or directory
mingw32-make[1]: [clean] Error 1 (ignored)
mingw32-make[1]: Leaving directory `c:/cvsemacs/emacs/src'
c:/mingw32-make-3.81-1/bin/mingw32-make -j 1 --jobs=2 -C ../lib-src clean
[Please ignore a syntax error on the next line - it is intentional]
/usr/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/usr/bin/sh: -c: line 1: syntax error: unexpected end of file
mingw32-make[1]: Entering directory `c:/cvsemacs/emacs/lib-src'
rm *~ DOC*
rm: cannot remove `*~': No such file or directory
rm: cannot remove `DOC*': No such file or directory
mingw32-make[1]: [clean] Error 1 (ignored)
rm ctags.c
rm: cannot remove `ctags.c': No such file or directory
mingw32-make[1]: [clean] Error 1 (ignored)
rm getopt.h
rm: cannot remove `getopt.h': No such file or directory
mingw32-make[1]: [clean] Error 1 (ignored)
rm -r oo-spd
rm: cannot remove `oo-spd': No such file or directory
mingw32-make[1]: [clean] Error 1 (ignored)
rm stamp_BLD
rm: cannot remove `stamp_BLD': No such file or directory
mingw32-make[1]: [clean] Error 1 (ignored)
mingw32-make[1]: Leaving directory `c:/cvsemacs/emacs/lib-src'
c:/mingw32-make-3.81-1/bin/mingw32-make -j 1 --jobs=2 XMFLAGS="--jobs=2" -C ../src bootstrap
[Please ignore a syntax error on the next line - it is intentional]
/usr/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/usr/bin/sh: -c: line 1: syntax error: unexpected end of file
mingw32-make[1]: Entering directory `c:/cvsemacs/emacs/nt'
mingw32-make[1]: Nothing to be done for `../src'.
c:/mingw32-make-3.81-1/bin/mingw32-make -wj 1 --jobs=2 -C -C ../lisp bootstrap-clean
mingw32-make: Entering an unknown directory
mingw32-make: *** -C: No such file or directory.  Stop.
mingw32-make: Leaving an unknown directory
mingw32-make[1]: *** [bootstrap-gmake] Error 2
mingw32-make[1]: Leaving directory `c:/cvsemacs/emacs/nt'
mingw32-make: *** [bootstrap-gmake] Error 2

real    0m5.093s
user    0m0.015s
sys     0m0.000s

address@hidden /cygdrive/c/cvsemacs/emacs/nt
$


Also, doing an ordinary bootstrap without specifying jobs or XMFLAGS doesn't seem to work right now either.

- Eric





reply via email to

[Prev in Thread] Current Thread [Next in Thread]