diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -90,4 +90,5 @@ Modules/_testembed .coverage coverage/ +external-*/ htmlcov/ diff --git a/Lib/tkinter/_fix.py b/Lib/tkinter/_fix.py --- a/Lib/tkinter/_fix.py +++ b/Lib/tkinter/_fix.py @@ -48,8 +48,8 @@ prefix = os.path.join(sys.base_prefix,"tcl") if not os.path.exists(prefix): - # devdir/../tcltk/lib - prefix = os.path.join(sys.base_prefix, os.path.pardir, "tcltk", "lib") + # devdir/external-/tcltk/lib + prefix = os.path.join(sys.base_prefix, "external-34", "tcltk", "lib") prefix = os.path.abspath(prefix) # if this does not exist, no further search is needed if os.path.exists(prefix): diff --git a/PCbuild/build_ssl.py b/PCbuild/build_ssl.py --- a/PCbuild/build_ssl.py +++ b/PCbuild/build_ssl.py @@ -67,8 +67,10 @@ def get_ssl_dir(): propfile = (os.path.join(os.path.dirname(__file__), 'pyproject.props')) with open(propfile) as f: - m = re.search('openssl-([^<]+)<', f.read()) - return "..\..\openssl-"+m.group(1) + data = f.read() + dir = re.search('([^>]+)', data).group(1) + version = re.search('openssl-([^<]+)<', data).group(1) + return dir + "\openssl-" + version def create_makefile64(makefile, m32): diff --git a/PCbuild/pyproject.props b/PCbuild/pyproject.props --- a/PCbuild/pyproject.props +++ b/PCbuild/pyproject.props @@ -16,7 +16,7 @@ python34$(PyDebugExt) $(OutDir)python$(PyDebugExt).exe $(OutDir)kill_python$(PyDebugExt).exe - ..\.. + ..\external-34 $(externalsDir)\sqlite-3.7.12 $(externalsDir)\bzip2-1.0.6 $(externalsDir)\xz-5.0.3 diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -106,9 +106,9 @@ Wraps the Tk windowing system. Unlike _sqlite3, there's no corresponding tcltk.vcproj-type project that builds Tcl/Tk from vcproj's within our pcbuild.sln, which means this module expects to find a - pre-built Tcl/Tk in either ..\..\tcltk for 32-bit or ..\..\tcltk64 for - 64-bit (relative to this directory). See below for instructions to build - Tcl/Tk. + pre-built Tcl/Tk in either ..\external-\tcltk for 32-bit or + ..\external-\tcltk64 for 64-bit (relative to this directory). + See below for instructions to build Tcl/Tk. _bz2 Python wrapper for the libbzip2 compression library. Homepage http://www.bzip.org/ @@ -134,7 +134,7 @@ Python wrapper for the liblzma compression library. Download the pre-built Windows binaries from http://tukaani.org/xz/, and - extract to ..\xz-5.0.3. If you are using a more recent version of liblzma, + extract to ..\external-\xz-5.0.3. If you are using a more recent version of liblzma, it will be necessary to rename the directory from xz- to xz-5.0.3. _ssl @@ -196,7 +196,8 @@ This extracts all the external subprojects from http://svn.python.org/external via Subversion (so you'll need an svn.exe on your PATH) and places them in -..\.. (relative to this directory). The external(-amd64).bat scripts will +..\external- (relative to this directory, where is the +version of Python checked out, i.e. "external-34"). The external(-amd64).bat scripts will also build a debug build of Tcl/Tk; there aren't any equivalent batch files for building release versions of Tcl/Tk lying around in the Tools\buildbot directory. If you need to build a release version of Tcl/Tk it isn't hard @@ -218,36 +219,6 @@ sqlite3.vcproj file, which will remove the need for Tcl/Tk to be built separately via a batch file. -XXX trent.nelson 02-Apr-08: - Having the external subprojects in ..\.. relative to this directory is a - bit of a nuisance when you're working on py3k and trunk in parallel and - your directory layout mimics that of Python's subversion layout, e.g.: - - C:\..\svn.python.org\projects\python\trunk - C:\..\svn.python.org\projects\python\branches\py3k - C:\..\svn.python.org\projects\python\branches\release25-maint - - I'd like to change things so that external subprojects are fetched from - ..\external instead of ..\.., then provide some helper scripts or batch - files that would set up a new ..\external directory with svn checkouts of - the relevant branches in http://svn.python.org/projects/external/, or - alternatively, use junctions to link ..\external with a pre-existing - externals directory being used by another branch. i.e. if I'm usually - working on trunk (and have previously created trunk\external via the - provided batch file), and want to do some work on py3k, I'd set up a - junction as follows (using the directory structure above as an example): - - C:\..\python\trunk\external <- already exists and has built versions - of the external subprojects - - C:\..\python\branches\py3k>linkd.exe external ..\..\trunk\external - Link created at: external - - Only a slight tweak would be needed to the buildbots such that bots - building trunk and py3k could make use of the same facility. (2.5.x - builds need to be kept separate as they're using Visual Studio 7.1.) -/XXX trent.nelson 02-Apr-08 - Building for Itanium -------------------- diff --git a/PCbuild/rt.bat b/PCbuild/rt.bat --- a/PCbuild/rt.bat +++ b/PCbuild/rt.bat @@ -38,7 +38,7 @@ if "%1"=="-d" (set suffix=_d) & shift & goto CheckOpts if "%1"=="-x64" (set prefix=amd64) & (set tcltk=tcltk64) & shift & goto CheckOpts -PATH %PATH%;%~dp0..\..\%tcltk%\bin +PATH %PATH%;%~dp0..\external-34\%tcltk%\bin set exe=%prefix%\python%suffix% set cmd=%exe% %dashO% -Wd -E -bb ../lib/test/regrtest.py %1 %2 %3 %4 %5 %6 %7 %8 %9 if defined qmode goto Qmode diff --git a/Tools/buildbot/external-common.bat b/Tools/buildbot/external-common.bat --- a/Tools/buildbot/external-common.bat +++ b/Tools/buildbot/external-common.bat @@ -1,7 +1,8 @@ @rem Common file shared between external.bat and external-amd64.bat. Responsible for -@rem fetching external components into the root\.. buildbot directories. +@rem fetching external components into the root\external- directory. -cd .. +if not exist external-34 mkdir external-34 +cd external-34 @rem XXX: If you need to force the buildbots to start from a fresh environment, uncomment @rem the following, check it in, then check it out, comment it out, then check it back in. @rem if exist bzip2-1.0.6 rd /s/q bzip2-1.0.6