@@ -5,134 +5,149 @@ import subprocess
55import sys
66import os
77import os.path
8- import shutil
98import VersionControl
10- VersionControl.setVersion( "IEBuild" )
9+
10+ VersionControl.setVersion("IEBuild")
1111import IEBuild
1212
1313##########################################################################
1414# parse SConstruct file for the cortex version
1515##########################################################################
1616
1717## \todo: this is duplicated from ./options but can we centralize it instead?
18- def cortexRegistryVersion() :
19-
20- import re
21- varsFound = {}
22- varsToFind = [ "ieCoreMilestoneVersion", "ieCoreMajorVersion" ]
23-
24- with open( "SConstruct", "r" ) as f :
25- for line in f :
26- for varName in varsToFind :
27- match = re.match( "^\s*%s\s*=\s*(?P<value>\d+).*$" % varName, line )
28- if match :
29- varsFound[varName] = match.groupdict()["value"]
30- varsToFind.remove( varName )
31- break
32- if not varsToFind:
33- break
34-
35- if varsToFind :
36- raise Exception( "Could not find the Cortex version in the SConstruct file. Please review the parsing rules." )
37-
38- return varsFound["ieCoreMilestoneVersion"] + "." + varsFound["ieCoreMajorVersion"]
18+ def cortexVersion():
19+ import re
20+
21+ varsFound = {}
22+ varNames = [
23+ "ieCoreMilestoneVersion", "ieCoreMajorVersion", "ieCoreMinorVersion", "ieCorePatchVersion"
24+ ]
25+ varsToFind = list(varNames)
26+
27+ with open("SConstruct", "r") as f:
28+ for line in f:
29+ for varName in varsToFind:
30+ match = re.match("^\s*%s\s*=\s*(?P<value>\d+).*$" % varName, line)
31+ if match:
32+ varsFound[varName] = match.groupdict()["value"]
33+ varsToFind.remove(varName)
34+ break
35+ if not varsToFind:
36+ break
37+
38+ if varsToFind:
39+ raise Exception(
40+ "Could not find the Cortex version in the SConstruct file. Please review the parsing"
41+ " rules."
42+ )
43+
44+ return ".".join([varsFound[k] for k in varNames])
45+
46+
47+ currentCortexVersion = cortexVersion()
48+ cortexReg = IEEnv.findRegistryRoot("cortex", currentCortexVersion)
3949
4050platform = IEEnv.platform()
41- cortexCompatibilityVersion = cortexRegistryVersion()
42- cortexReg = IEEnv.registry["libraries"]["cortex"][cortexCompatibilityVersion][platform]
4351
4452##########################################################################
4553# Run a single build
4654##########################################################################
4755
48- def build( extraArgs = [] ) :
4956
50- sysArgs = sys.argv[1:]
57+ def build(extraArgs=[]):
58+ sysArgs = sys.argv[1:]
5159
52- install = False
53- if "install" in sysArgs :
54- install = True
55- sysArgs.remove( "install" )
60+ install = False
61+ if "install" in sysArgs:
62+ install = True
63+ sysArgs.remove("install")
5664
57- release = False
58- if "RELEASE=1" in sysArgs :
59- release = True
65+ release = False
66+ if "RELEASE=1" in sysArgs:
67+ release = True
6068
61- if "J=" in " ".join( sysArgs ) :
62- sysArgs = " ".join( sysArgs ).replace( "J=", "-j " ).split( " " )
69+ if "J=" in " ".join(sysArgs) :
70+ sysArgs = " ".join(sysArgs).replace("J=", "-j ").split(" ")
6371
64- installPrefix = "/software" if release else os.path.expanduser( "~" )
65- buildArgs = [ "INSTALL_PREFIX=" + installPrefix ]
66- buildArgs.extend( extraArgs )
67- buildArgs.extend( sysArgs )
72+ installPrefix = "/software" if release else os.path.expanduser("~")
73+ buildArgs = ["INSTALL_PREFIX=" + installPrefix]
74+ buildArgs.extend(extraArgs)
75+ buildArgs.extend(sysArgs)
6876
69- argsToValidate = [ "CORTEX_VERSION={}".format( cortexCompatibilityVersion ) ] + extraArgs
70- if not IEEnv.Registry.validateVariation( argsToValidate ) :
71- print( "Skipped invalid variation combination: " + str(argsToValidate) + "\n" )
72- return
77+ argsToValidate = ["CORTEX_VERSION={}".format(currentCortexVersion) ] + extraArgs
78+ if not IEEnv.Registry.validateVariation(argsToValidate) :
79+ print("Skipped invalid variation combination: " + str(argsToValidate) + "\n")
80+ return
7381
74- cmd = [ "scons", "install" ] if install or release else [ "scons" ]
82+ cmd = ["scons", "install"] if install or release else ["scons"]
7583
76- print( " ".join( cmd + buildArgs ) )
77- if "DRYRUN=1" in sysArgs :
78- return
84+ print(" ".join(cmd + buildArgs))
85+ if "DRYRUN=1" in sysArgs:
86+ return
87+
88+ if subprocess.call(cmd + buildArgs) != 0:
89+ raise RuntimeError("Error : " + str(" ".join(cmd + buildArgs)))
90+ print("Build succeeded: " + " ".join(cmd + buildArgs) + "\n")
7991
80- if subprocess.call( cmd + buildArgs ) != 0 :
81- raise RuntimeError( "Error : " + str( " ".join( cmd + buildArgs ) ) )
82- print( "Build succeeded: " + " ".join( cmd + buildArgs ) + "\n" )
8392
8493##########################################################################
8594# Build docs only
8695##########################################################################
8796
88- def installDocs() :
8997
90- sysArgs = sys.argv[1:]
98+ def installDocs():
99+ sysArgs = sys.argv[1:]
91100
92- if "RELEASE=1" not in sysArgs :
93- return
101+ if "RELEASE=1" not in sysArgs:
102+ return
94103
95- buildArgs = [ "INSTALL_PREFIX=/software" ]
96- buildArgs.extend( sysArgs )
104+ buildArgs = ["INSTALL_PREFIX=/software"]
105+ buildArgs.extend(sysArgs)
97106
98- cmd = [ "scons", "installDoc" ]
99- print( " ".join( cmd + buildArgs ) )
100- if "DRYRUN=1" in sysArgs :
101- return
107+ cmd = ["scons", "installDoc"]
108+ print(" ".join(cmd + buildArgs) )
109+ if "DRYRUN=1" in sysArgs:
110+ return
102111
103- if subprocess.call( cmd + buildArgs ) != 0 :
112+ if subprocess.call(cmd + buildArgs) != 0:
113+ raise RuntimeError("Error : scons installDoc " + str(" ".join(buildArgs)))
104114
105- raise RuntimeError("Error : scons installDoc " + str( " ".join( buildArgs ) ) )
106115
107116##########################################################################
108117# Loop over all builds
109118##########################################################################
110119
111- compilerVersions = IEBuild.utils.versionsToInstall( "gcc" )
112- pythonVersions = IEBuild.utils.versionsToInstall( "python" )
113- mayaVersions = IEBuild.utils.versionsToInstall( "maya" )
114- nukeVersions = IEBuild.utils.versionsToInstall( "nuke" )
115- houdiniVersions = IEBuild.utils.versionsToInstall( "houdini" )
116- rvVersions = IEBuild.utils.versionsToInstall( "rv" )
120+ compilerVersions = IEBuild.utils.versionsToInstall("gcc")
121+ pythonVersions = IEBuild.utils.versionsToInstall("python")
122+ mayaVersions = IEBuild.utils.versionsToInstall("maya")
123+ nukeVersions = IEBuild.utils.versionsToInstall("nuke")
124+ houdiniVersions = IEBuild.utils.versionsToInstall("houdini")
125+ rvVersions = IEBuild.utils.versionsToInstall("rv")
117126
118127
119128for compilerVersion in compilerVersions:
120- for pythonVersion in pythonVersions :
121- build( [ "COMPILER_VERSION="+compilerVersion, "PYTHON_VERSION="+pythonVersion, "DL_VERSION=UNDEFINED" ] )
122-
123- for mayaVersion in mayaVersions :
124- compilerVersion = IEEnv.registry["apps"]["maya"][mayaVersion][platform]["compilerVersion"]
125- build( [ "APP=maya", "APP_VERSION="+mayaVersion ] )
126-
127- for nukeVersion in nukeVersions :
128- compilerVersion = IEEnv.registry["apps"]["nuke"][nukeVersion][platform]["compilerVersion"]
129- build( [ "APP=nuke", "APP_VERSION="+nukeVersion ] )
130-
131- for houdiniVersion in houdiniVersions :
132- compilerVersion = IEEnv.registry["apps"]["houdini"][houdiniVersion][platform]["compilerVersion"]
133- build( [ "APP=houdini", "APP_VERSION="+houdiniVersion ] )
134-
135- for rvVersion in rvVersions :
136- build( [ "APP=rv", "APP_VERSION="+rvVersion, "DL_VERSION=UNDEFINED" ] )
129+ for pythonVersion in pythonVersions:
130+ build(
131+ [
132+ "COMPILER_VERSION=" + compilerVersion,
133+ "PYTHON_VERSION=" + pythonVersion,
134+ "DL_VERSION=UNDEFINED",
135+ ]
136+ )
137+
138+ for mayaVersion in mayaVersions:
139+ compilerVersion = IEEnv.registry["apps"]["maya"][mayaVersion][platform]["compilerVersion"]
140+ build(["APP=maya", "APP_VERSION=" + mayaVersion])
141+
142+ for nukeVersion in nukeVersions:
143+ compilerVersion = IEEnv.registry["apps"]["nuke"][nukeVersion][platform]["compilerVersion"]
144+ build(["APP=nuke", "APP_VERSION=" + nukeVersion])
145+
146+ for houdiniVersion in houdiniVersions:
147+ compilerVersion = IEEnv.registry["apps"]["houdini"][houdiniVersion][platform]["compilerVersion"]
148+ build(["APP=houdini", "APP_VERSION=" + houdiniVersion])
149+
150+ for rvVersion in rvVersions:
151+ build(["APP=rv", "APP_VERSION=" + rvVersion, "DL_VERSION=UNDEFINED"])
137152
138153installDocs()
0 commit comments