emacs-devel
[Top][All Lists]
Advanced

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

Re: Two strange messages while building Emacs on MS-Windows


From: Óscar Fuentes
Subject: Re: Two strange messages while building Emacs on MS-Windows
Date: Sun, 09 Dec 2012 02:18:41 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

Eli Zaretskii <address@hidden> writes:

>> From: Óscar Fuentes <address@hidden>
>> Date: Sat, 08 Dec 2012 14:24:23 +0100
>> 
>> So Wine is neglecting cmd.exe. Using one from a Windows XP install
>> allows the script to complete. Then, buildobj.h causes a failure because
>> it contains too much " and '. Apparently make-buildobj-SH: is used
>> instead of make-buildobj-CMD.
>
> Maybe the Windows makefiles assume something that is false in Wine.
> The test for the shell type is in nt/gmake.defs:
>
>   # Determine whether make is using sh or cmd/command as shell; cmd.exe
>   # will output "ECHO is on" when echo is given by itself, while sh will
>   # not produce any output.
>   sh_output := $(shell echo)
>   ifeq "$(findstring ECHO, $(sh_output))" "ECHO"
>   THE_SHELL = $(COMSPEC)$(ComSpec)
>   SHELLTYPE=CMD
>   SWITCHCHAR=/
>   else
>   USING_SH = 1
>   THE_SHELL = $(SHELL)
>   SHELLTYPE=SH
>
> Which part(s) of this do(es)n't work in Wine?

cmd.exe from Wine outputs

Echo is off

(note the capitalization), while the one taken from the Spanish Windows
XP outputs

ECHO está activado

I don't know why the test fails with that cmd.exe, it was copied from
the virtual machine where I build Emacs. Possibly my mistake, because at
some point I realized that COMSPEC was not set and restarted the whole
process, but maybe some generated makefile was not deleted.

BTW, Wine's cmd.exe seems unable to get the quoting right while
generating buildobj.h. I tried multiple combinations, but haven't found
a method for outputting one double-quote to the file.

>> mingw32-make[1]: Entering directory `D:/exp/emacs/emacs/lib-src'
>> mmingw32-make[1]: Leaving directory `D:/exp/emacs/emacs/lib-src'
>> ingw32-make[1]: *** No rule to make target `../lisp/abbrev.elc', needed by 
>> `DOC'.  Stop.
>> mingw32-make: *** [all-other-dirs-gmake] Error 2
>
> You need to say "make bootstrap" explicitly, the Windows build scripts
> cannot automatically intuit that a bootstrap is needed.

Yes, I started with `make bootstrap' but, after fixing buildobj.h,
just executed `make'.

[snip]

After undoing the workarounds for the DOC target mentioned on my
previous message and commenting out the test for the shell type quoted
at the beginning of this one, hence forcing all makefiles to use the
copied cmd.exe, the build continued all along, except for about 30 .el
files which failed to compile crashing emacs but didn't stop the build.
Then `make install' failed with

mingw32-make[2]: Entering directory `D:/exp/emacs/emacs/lisp'
cp -f *.el "d:\exp\emacs\installed/lisp"
fixme:process:CmdBatNotification 1
cp: cannot stat `*.el': Invalid argument
fixme:process:CmdBatNotification 0
mingw32-make[2]: *** [install-lisp-CMD] Error 1
mingw32-make[2]: Leaving directory `D:/exp/emacs/emacs/lisp'

The `fixme' comes from Wine, there are a lot of them about
CmdBatNotification. The second most popular is

fixme:msvcrt:MSVCRT__sopen_s : pmode 0x81b6 ignored

At this point I gave out, as Wine seems too unreliable for the task.
Also I had the impression that the Wine build is slower than the
virtualized Windows XP build running on the same physical machine.




reply via email to

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