comparison mx/commands.py @ 4155:394404b2d9bd

Removed strict requirement for GRAAL environment variable. It only needs to be set now if the graal directory is not in the directory hierarchy of GraalVM JDK.
author Doug Simon <doug.simon@oracle.com>
date Wed, 21 Dec 2011 11:25:27 +0100
parents 38c782b84ac2
children 843c8d6720da
comparison
equal deleted inserted replaced
4154:9a4f210abb5e 4155:394404b2d9bd
105 for check in checks: 105 for check in checks:
106 if not sanitycheck.runSanityCheck(check['cmd'], check['success']): 106 if not sanitycheck.runSanityCheck(check['cmd'], check['success']):
107 mx.abort("Sanity checks FAILED") 107 mx.abort("Sanity checks FAILED")
108 mx.log("Sanity checks PASSED") 108 mx.log("Sanity checks PASSED")
109 109
110 def _jdk7(build='product', create=False): 110 def _jdk(build='product', create=False):
111 jdk7 = join(_graal_home, 'jdk1.7.0') 111 """
112 if not exists(jdk7): 112 Get the JDK into which Graal is installed, creating it first if necessary.
113 # Assume we are running with a JDK7 113 """
114 assert mx.java().version.startswith('1.7') 114 jdk = join(_graal_home, 'jdk' + mx.java().version)
115 if not exists(jdk):
115 srcJdk = mx.java().jdk 116 srcJdk = mx.java().jdk
116 mx.log('Creating ' + jdk7 + ' from ' + srcJdk) 117 mx.log('Creating ' + jdk + ' from ' + srcJdk)
117 os.mkdir(jdk7) 118 os.mkdir(jdk)
118 for d in ['bin', 'db', 'include', 'jre', 'lib', 'man']: 119 for d in ['bin', 'db', 'include', 'jre', 'lib', 'man']:
119 src = join(srcJdk, d) 120 src = join(srcJdk, d)
120 dst = join(jdk7, d) 121 dst = join(jdk, d)
121 if not exists(src): 122 if not exists(src):
122 mx.abort('Host JDK 7 directory is missing: ' + src) 123 mx.abort('Host JDK directory is missing: ' + src)
123 shutil.copytree(src, dst) 124 shutil.copytree(src, dst)
124 125
126 jvmCfg = join(jdk, 'jre', 'lib', 'amd64', 'jvm.cfg')
127 found = False
128 if not exists(jvmCfg):
129 mx.abort(jvmCfg + ' does not exist')
130
131 with open(jvmCfg) as f:
132 for line in f:
133 if '-graal KNOWN' in line:
134 found = True
135 break
136 if not found:
137 mx.log('Appending "-graal KNOWN" to ' + jvmCfg)
138 with open(jvmCfg, 'a') as f:
139 f.write('-graal KNOWN\n')
140
125 if build == 'product': 141 if build == 'product':
126 return jdk7 142 return jdk
127 elif build in ['debug', 'fastdebug', 'optimized']: 143 elif build in ['debug', 'fastdebug', 'optimized']:
128 res = join(jdk7, build) 144 res = join(jdk, build)
129 if not exists(res): 145 if not exists(res):
130 if not create: 146 if not create:
131 mx.abort('The ' + build + ' VM has not been created - run \'mx clean; mx make ' + build + '\'') 147 mx.abort('The ' + build + ' VM has not been created - run \'mx clean; mx make ' + build + '\'')
132 mx.log('Creating ' + res) 148 mx.log('Creating ' + res)
133 os.mkdir(res) 149 os.mkdir(res)
134 for d in ['bin', 'db', 'include', 'jre', 'lib', 'man']: 150 for d in ['bin', 'db', 'include', 'jre', 'lib', 'man']:
135 shutil.copytree(join(jdk7, d), join(res, d)) 151 shutil.copytree(join(jdk, d), join(res, d))
136 return res 152 return res
137 else: 153 else:
138 mx.abort('Unknown build type: ' + build) 154 mx.abort('Unknown build type: ' + build)
139 155
140 def build(args): 156 def build(args):
147 build = args.pop(0) 163 build = args.pop(0)
148 164
149 # Call mx.build to compile the Java sources 165 # Call mx.build to compile the Java sources
150 mx.build(args + ['--source', '1.7']) 166 mx.build(args + ['--source', '1.7'])
151 167
152 def fix_jvm_cfg(jdk): 168 jdk = _jdk(build, True)
153 jvmCfg = join(jdk, 'jre', 'lib', 'amd64', 'jvm.cfg')
154 found = False
155 if not exists(jvmCfg):
156 mx.abort(jvmCfg + ' does not exist')
157
158 with open(jvmCfg) as f:
159 for line in f:
160 if '-graal KNOWN' in line:
161 found = True
162 break
163 if not found:
164 mx.log('Appending "-graal KNOWN" to ' + jvmCfg)
165 with open(jvmCfg, 'a') as f:
166 f.write('-graal KNOWN\n')
167
168
169 jdk7 = _jdk7(build, True)
170 if build == 'debug': 169 if build == 'debug':
171 build = 'jvmg' 170 build = 'jvmg'
172 171
173 fix_jvm_cfg(jdk7) 172 graalVmDir = join(jdk, 'jre', 'lib', 'amd64', 'graal')
174
175 graalVmDir = join(jdk7, 'jre', 'lib', 'amd64', 'graal')
176 if not exists(graalVmDir): 173 if not exists(graalVmDir):
177 mx.log('Creating Graal directory in JDK7: ' + graalVmDir) 174 mx.log('Creating Graal directory in JDK7: ' + graalVmDir)
178 os.makedirs(graalVmDir) 175 os.makedirs(graalVmDir)
179 176
180 def filterXusage(line): 177 def filterXusage(line):
181 if not 'Xusage.txt' in line: 178 if not 'Xusage.txt' in line:
182 sys.stderr.write(line + os.linesep) 179 sys.stderr.write(line + os.linesep)
183 180
184 os.environ.update(ARCH_DATA_MODEL='64', LANG='C', HOTSPOT_BUILD_JOBS='3', ALT_BOOTDIR=jdk7, INSTALL='y') 181 os.environ.update(ARCH_DATA_MODEL='64', LANG='C', HOTSPOT_BUILD_JOBS='3', ALT_BOOTDIR=jdk, INSTALL='y')
185 mx.run([mx.gmake_cmd(), build + 'graal'], cwd=join(_graal_home, 'make'), err=filterXusage) 182 mx.run([mx.gmake_cmd(), build + 'graal'], cwd=join(_graal_home, 'make'), err=filterXusage)
186 183
187 def vm(args, vm='-graal', nonZeroIsFatal=True, out=None, err=None, cwd=None): 184 def vm(args, vm='-graal', nonZeroIsFatal=True, out=None, err=None, cwd=None):
188 """run the GraalVM""" 185 """run the GraalVM"""
189 186
190 build = _vmbuild 187 build = _vmbuild
191 if mx.java().debug: 188 if mx.java().debug:
192 args = ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000'] + args 189 args = ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000'] + args
193 os.environ['GRAAL'] = join(_graal_home, 'graal') 190 exe = join(_jdk(build), 'bin', mx.exe_suffix('java'))
194 exe = join(_jdk7(build), 'bin', mx.exe_suffix('java'))
195 return mx.run([exe, vm] + args, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd) 191 return mx.run([exe, vm] + args, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd)
196 192
197 def ideinit(args): 193 def ideinit(args):
198 """(re)generate Eclipse project configurations 194 """(re)generate Eclipse project configurations
199 195