GNU bug report logs -
#11578
24.1.50; Can't 'make install' on Windows
Previous Next
Reported by: Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>
Date: Tue, 29 May 2012 14:06:02 UTC
Severity: normal
Found in version 24.1.50
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 11578 in the body.
You can then email your comments to 11578 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#11578
; Package
emacs
.
(Tue, 29 May 2012 14:06:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Tue, 29 May 2012 14:06:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
When I run configure.bat with --prefix option, 'make install' with
MinGW fails.
> make: Circular D:/bin/emacs_trunk <- D:/bin/emacs_trunk dependency dropped.
> make -C ../lib-src install
> [Please ignore a syntax error on the next line - it is intentional]
> /bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
> /bin/sh: -c: line 1: syntax error: unexpected end of file
> make[1]: Entering directory `/f/build/emacs-trunk/lib-src'
> mkdir "D:/bin/emacs_trunk /bin"
> mkdir: cannot create directory `D:/bin/emacs_trunk /bin': No such file or directory
> make[1]: [install] Error 1 (ignored)
> cp -f oo-spd/i386/etags.exe D:/bin/emacs_trunk /bin
> cp: omitting directory `D:/bin/emacs_trunk'
> make[1]: *** [install] Error 1
> make[1]: Leaving directory `/f/build/emacs-trunk/lib-src'
> make: *** [install-other-dirs-gmake] Error 2
In the above, 'D:/bin/emacs_trunk' is argument of --prefix option. It
seems that makefile.w32-in does not assume INSTALL_DIR has trailing
space.
--
Kazuhiro Ito
Reply sent
to
Eli Zaretskii <eliz <at> gnu.org>
:
You have taken responsibility.
(Tue, 29 May 2012 16:00:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>
:
bug acknowledged by developer.
(Tue, 29 May 2012 16:00:03 GMT)
Full text and
rfc822 format available.
Message #10 received at 11578-done <at> debbugs.gnu.org (full text, mbox):
> Date: Tue, 29 May 2012 23:03:37 +0900
> From: Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>
>
> When I run configure.bat with --prefix option, 'make install' with
> MinGW fails.
>
> > make: Circular D:/bin/emacs_trunk <- D:/bin/emacs_trunk dependency dropped.
> > make -C ../lib-src install
> > [Please ignore a syntax error on the next line - it is intentional]
> > /bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
> > /bin/sh: -c: line 1: syntax error: unexpected end of file
> > make[1]: Entering directory `/f/build/emacs-trunk/lib-src'
> > mkdir "D:/bin/emacs_trunk /bin"
> > mkdir: cannot create directory `D:/bin/emacs_trunk /bin': No such file or directory
> > make[1]: [install] Error 1 (ignored)
> > cp -f oo-spd/i386/etags.exe D:/bin/emacs_trunk /bin
> > cp: omitting directory `D:/bin/emacs_trunk'
> > make[1]: *** [install] Error 1
> > make[1]: Leaving directory `/f/build/emacs-trunk/lib-src'
> > make: *** [install-other-dirs-gmake] Error 2
This was reported to me yesterday off-list, and I fixed it on the
emacs-24 branch in revision 108019. The patch is below, if you cannot
wait for the next merge from emacs-24 to the trunk.
> In the above, 'D:/bin/emacs_trunk' is argument of --prefix option. It
> seems that makefile.w32-in does not assume INSTALL_DIR has trailing
> space.
No, the problem is a subtlety of the cmd.exe "echo" command. If you
say
echo foo=bar >>file
the blank between "bar" and the redirection symbol winds up in the
file. The fix for that, which doesn't re-introduce a different, but
related bug fixed in r108005, is somewhat tricky, as you see below.
A workaround is not to use --prefix at configure time and instead set
INSTALL_DIR at "make install" time, like this:
make install INSTALL_DIR=d:/bin/emacs_trunk
(If you are installing in the source tree, you need neither --prefix
nor INSTALL_DIR= at "make install" time, since that's the default
INSTALL_DIR anyway.)
=== modified file 'nt/ChangeLog'
--- nt/ChangeLog 2012-05-18 08:21:19 +0000
+++ nt/ChangeLog 2012-05-28 16:17:35 +0000
@@ -1,3 +1,12 @@
+2012-05-28 Eli Zaretskii <eliz <at> gnu.org>
+
+ * configure.bat (genmakefiles): Move the redirection away from the
+ end of the command, to avoid excess whitespace at the end of Make
+ variables created at configure time, and also avoid things like
+ "FOO1>>config.settings", where "1" gets interpreted as the file
+ descriptor and eaten up. This fixes breakage introduced by the
+ last change, without reintroducing the bug fixed by that change.
+
2012-05-18 Eli Zaretskii <eliz <at> gnu.org>
* configure.bat: Ensure a space between %var% expansion and
=== modified file 'nt/configure.bat'
--- nt/configure.bat 2012-05-18 08:21:19 +0000
+++ nt/configure.bat 2012-05-28 16:17:35 +0000
@@ -721,29 +721,36 @@ if %COMPILER% == gcc set MAKECMD=gmake
if %COMPILER% == cl set MAKECMD=nmake
rem Pass on chosen settings to makefiles.
-rem NB. Be very careful to not have a space before redirection symbols
-rem except when there is a preceding digit, when a space is required.
rem
+rem The weird place we put the redirection is to make sure no extra
+rem whitespace winds up at the end of the Make variables, since some
+rem variables, e.g. INSTALL_DIR, cannot stand that. Yes, echo will
+rem write the blanks between the end of command arguments and the
+rem redirection symbol to the file. OTOH, we cannot put the
+rem redirection immediately after the last character of the command,
+rem because environment variable expansion can yield a digit there,
+rem which will then be misinterpreted as the file descriptor to
+rem redirect...
echo # Start of settings from configure.bat >config.settings
-echo COMPILER=%COMPILER% >>config.settings
-if not "(%mf%)" == "()" echo MCPU_FLAG=%mf% >>config.settings
-if not "(%dbginfo%)" == "()" echo DEBUG_INFO=%dbginfo% >>config.settings
-if (%nodebug%) == (Y) echo NODEBUG=1 >>config.settings
-if (%noopt%) == (Y) echo NOOPT=1 >>config.settings
-if (%enablechecking%) == (Y) echo ENABLECHECKS=1 >>config.settings
-if (%profile%) == (Y) echo PROFILE=1 >>config.settings
-if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings
-if not "(%prefix%)" == "()" echo INSTALL_DIR=%prefix% >>config.settings
-if not "(%distfiles%)" == "()" echo DIST_FILES=%distfiles% >>config.settings
+>>config.settings echo COMPILER=%COMPILER%
+if not "(%mf%)" == "()" >>config.settings echo MCPU_FLAG=%mf%
+if not "(%dbginfo%)" == "()" >>config.settings echo DEBUG_INFO=%dbginfo%
+if (%nodebug%) == (Y) >>config.settings echo NODEBUG=1
+if (%noopt%) == (Y) >>config.settings echo NOOPT=1
+if (%enablechecking%) == (Y) >>config.settings echo ENABLECHECKS=1
+if (%profile%) == (Y) >>config.settings echo PROFILE=1
+if (%nocygwin%) == (Y) >>config.settings echo NOCYGWIN=1
+if not "(%prefix%)" == "()" >>config.settings echo INSTALL_DIR=%prefix%
+if not "(%distfiles%)" == "()" >>config.settings echo DIST_FILES=%distfiles%
rem We go thru docflags because usercflags could be "-DFOO=bar" -something
rem and the if command cannot cope with this
for %%v in (%usercflags%) do if not (%%v)==() set docflags=Y
-if (%docflags%)==(Y) echo USER_CFLAGS=%usercflags% >>config.settings
-if (%docflags%)==(Y) echo ESC_USER_CFLAGS=%escusercflags% >>config.settings
+if (%docflags%)==(Y) >>config.settings echo USER_CFLAGS=%usercflags%
+if (%docflags%)==(Y) >>config.settings echo ESC_USER_CFLAGS=%escusercflags%
for %%v in (%userldflags%) do if not (%%v)==() set doldflags=Y
-if (%doldflags%)==(Y) echo USER_LDFLAGS=%userldflags% >>config.settings
+if (%doldflags%)==(Y) >>config.settings echo USER_LDFLAGS=%userldflags%
for %%v in (%extrauserlibs%) do if not (%%v)==() set doextralibs=Y
-if (%doextralibs%)==(Y) echo USER_LIBS=%extrauserlibs% >>config.settings
+if (%doextralibs%)==(Y) >>config.settings echo USER_LIBS=%extrauserlibs%
echo # End of settings from configure.bat>>config.settings
echo. >>config.settings
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Wed, 27 Jun 2012 11:24:04 GMT)
Full text and
rfc822 format available.
This bug report was last modified 12 years and 358 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.