summaryrefslogtreecommitdiff
path: root/Mac
diff options
context:
space:
mode:
authorNed Deily <nad@python.org>2017-07-24 04:29:32 -0400
committerGitHub <noreply@github.com>2017-07-24 04:29:32 -0400
commit123a58bfc893ee30498b0d208dc1bbef34324772 (patch)
treeba40304b8f6baa57445ae8f944d08fbdabac8593 /Mac
parent8d41de62b9e21090c3a1ccb951ba7034a2b74180 (diff)
downloadcpython-git-123a58bfc893ee30498b0d208dc1bbef34324772.tar.gz
Backport Mac installer fixes for git-based workflow (#2837)
Diffstat (limited to 'Mac')
-rwxr-xr-xMac/BuildScript/build-installer.py35
1 files changed, 25 insertions, 10 deletions
diff --git a/Mac/BuildScript/build-installer.py b/Mac/BuildScript/build-installer.py
index c7b2e8c590..cf395fb38f 100755
--- a/Mac/BuildScript/build-installer.py
+++ b/Mac/BuildScript/build-installer.py
@@ -13,7 +13,7 @@ sphinx-build and the current versions of Sphinx now require at least
Python 2.6.
In addition to what is supplied with OS X 10.5+ and Xcode 3+, the script
-requires an installed version of hg and a third-party version of
+requires an installed third-party version of
Tcl/Tk 8.4 (for OS X 10.4 and 10.5 deployment targets) or Tcl/TK 8.5
(for 10.6 or later) installed in /Library/Frameworks. When installed,
the Python built by this script will attempt to dynamically link first to
@@ -23,7 +23,7 @@ installing the most recent ActiveTcl 8.4 or 8.5 version.
32-bit-only installer builds are still possible on OS X 10.4 with Xcode 2.5
and the installation of additional components, such as a newer Python
-(2.5 is needed for Python parser updates), hg, and for the documentation
+(2.5 is needed for Python parser updates) and for the documentation
build either svn (pre-3.4.1) or sphinx-build (3.4.1 and later).
Usage: see USAGE variable in the script.
@@ -577,7 +577,7 @@ def getTclTkVersion(configfile, versionline):
"""
try:
f = open(configfile, "r")
- except:
+ except OSError:
fatal("Framework configuration file not found: %s" % configfile)
for l in f:
@@ -663,9 +663,8 @@ def checkEnvironment():
base_path = base_path + ':' + OLD_DEVELOPER_TOOLS
os.environ['PATH'] = base_path
print("Setting default PATH: %s"%(os.environ['PATH']))
- # Ensure ws have access to hg and to sphinx-build.
- # You may have to create links in /usr/bin for them.
- runCommand('hg --version')
+ # Ensure we have access to sphinx-build.
+ # You may have to create a link in /usr/bin for it.
runCommand('sphinx-build --version')
def parseOptions(args=None):
@@ -819,7 +818,7 @@ def downloadURL(url, fname):
except:
try:
os.unlink(fname)
- except:
+ except OSError:
pass
def verifyThirdPartyFile(url, checksum, fname):
@@ -1115,7 +1114,6 @@ def buildPythonDocs():
docdir = os.path.join(rootDir, 'pydocs')
curDir = os.getcwd()
os.chdir(buildDir)
- # The Doc build changed for 3.4 (technically, for 3.4.1) and for 2.7.9
runCommand('make clean')
# Assume sphinx-build is on our PATH, checked in checkEnvironment
runCommand('make html')
@@ -1168,8 +1166,25 @@ def buildPython():
shellQuote(WORKDIR)[1:-1],
shellQuote(WORKDIR)[1:-1]))
- print("Running make")
- runCommand("make")
+ # Look for environment value BUILDINSTALLER_BUILDPYTHON_MAKE_EXTRAS
+ # and, if defined, append its value to the make command. This allows
+ # us to pass in version control tags, like GITTAG, to a build from a
+ # tarball rather than from a vcs checkout, thus eliminating the need
+ # to have a working copy of the vcs program on the build machine.
+ #
+ # A typical use might be:
+ # export BUILDINSTALLER_BUILDPYTHON_MAKE_EXTRAS=" \
+ # GITVERSION='echo 123456789a' \
+ # GITTAG='echo v3.6.0' \
+ # GITBRANCH='echo 3.6'"
+
+ make_extras = os.getenv("BUILDINSTALLER_BUILDPYTHON_MAKE_EXTRAS")
+ if make_extras:
+ make_cmd = "make " + make_extras
+ else:
+ make_cmd = "make"
+ print("Running " + make_cmd)
+ runCommand(make_cmd)
print("Running make install")
runCommand("make install DESTDIR=%s"%(