From: stevenknight Date: Tue, 17 Jun 2003 20:54:43 +0000 (+0000) Subject: When linking long command lines, use a '.lnk' suffix on the temporary file name.... X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=a4d6a70f0149d5c7c8cd73069fe316506d6dc7af;p=scons.git When linking long command lines, use a '.lnk' suffix on the temporary file name. (Charles Crain) git-svn-id: http://scons.tigris.org/svn/scons/trunk@715 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 6cb5ed8d..1222d441 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -10,21 +10,11 @@ RELEASE 0.15 - XXX - From Chad Austin: - - - Fix the _concat() documentation, and add a test for it. - - - Portability fixes for non-GNU versions of lex and yacc. - From Matt Balvin: - Fix handling of library prefixes when the subdirectory matches the prefix. - From Timothee Bessett: - - - Add an M4 Builder. - From Charles Crain: - Use '.lnk' as the suffix on the temporary file for linking long @@ -36,51 +26,19 @@ RELEASE 0.15 - XXX must have the same form as valid Python identifiers. - Fix man page bugs: remove duplicate AddPostAction() description; - document no_import_lib; mention that CPPFLAGS does not contain - $_CPPINCFLAGS; mention that F77FLAGS does not contain $_F77INCFLAGS; - mention that LINKFLAGS and SHLINKFLAGS contains neither $_LIBFLAGS - nor $_LIBDIRFLAGS. + document no_import_lib. - Eliminate a dependency on the distutils.fancy_getopt module by copying and pasting its wrap_text() function directly. - - Make the Script.Options() subclass match the underlying base class - implementation. - From Steve Leblanc: - Don't update the .sconsign files when run with -n. - From Gary Oberbrunner: - - - Add support for the Intel C Compiler (icl.exe). - - From Anthony Roach - - - Fix Import('*'). - - From David Snopek - - - Fix use of SConf in paths with white space in them. - - - Add CheckFunc and CheckType functionality to SConf. - - - Fix use of SConf with Builders that return a list of nodes. - From David Snopek and Christoph Wiedemann - Fix use of the SConf subsystem with SConscriptChdir(). - From Greg Spencer - - - Check for the existence of MS Visual Studio on disk before using it, - to avoid getting fooled by leftover junk in the registry. - - - Add support for MSVC++ .NET. - - - Add support for MS Visual Studio project files (DSP, DSW, - SLN and VCPROJ files). - RELEASE 0.14 - Wed, 21 May 2003 05:16:32 -0500 diff --git a/src/engine/SCons/Platform/win32.py b/src/engine/SCons/Platform/win32.py index 6aafa95d..6874d015 100644 --- a/src/engine/SCons/Platform/win32.py +++ b/src/engine/SCons/Platform/win32.py @@ -68,7 +68,11 @@ class TempFileMunge: # a bug in Win32 that will use a forward slash as a path # delimiter. Win32's link mistakes that for a command line # switch and barfs. - tmp = os.path.normpath(tempfile.mktemp()) + # + # We use the .lnk suffix for the benefit of the Phar Lap + # linkloc linker, which likes to append an .lnk suffix if + # none is given. + tmp = os.path.normpath(tempfile.mktemp('.lnk')) native_tmp = SCons.Util.get_native_path(tmp) # The sh shell will try to escape the backslashes in the @@ -156,8 +160,9 @@ def spawn(sh, escape, cmd, args, env): sys.stderr.write("scons: %s: %s\n" % (cmd, e[1])) return ret -# Windows does not allow special characters in file names anyway, so -# no need for a complex escape function, we will just quote the arg. +# Windows does not allow special characters in file names +# anyway, so no need for an escape function, we will just quote +# the arg. escape = lambda x: '"' + x + '"' # Get the windows system directory name @@ -228,30 +233,10 @@ def generate(env): cmd_interp = os.path.join(val, 'command.com') except: pass - - # For the special case of not having access to the registry, we - # use a temporary path and pathext to attempt to find the command - # interpreter. If we fail, we try to find the interpreter through - # the env's PATH. The problem with that is that it might not - # contain an ENV and a PATH. - if not cmd_interp: - systemroot = r'C:\Windows' - if os.environ.has_key('SYSTEMROOT'): - systemroot = os.environ['SYSTEMROOT'] - tmp_path = systemroot + os.pathsep + \ - os.path.join(systemroot,'System32') - tmp_pathext = '.com;.exe;.bat;.cmd' - if os.environ.has_key('PATHEXT'): - tmp_pathext = os.environ['PATHEXT'] - cmd_interp = SCons.Util.WhereIs('cmd', tmp_path, tmp_pathext) - if not cmd_interp: - cmd_interp = SCons.Util.WhereIs('command', tmp_path, tmp_pathext) - if not cmd_interp: cmd_interp = env.Detect('cmd') if not cmd_interp: cmd_interp = env.Detect('command') - if not env.has_key('ENV'): env['ENV'] = {}