blob: 2f15a154abd8915f0e124e1d129a830ae57aa784 [file] [log] [blame]
Ben Murdoch097c5b22016-05-18 11:27:45 +01001#!/usr/bin/env python
2#
3# Copyright 2014 The Chromium Authors. All rights reserved.
4# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6
7"""This finds the java distribution's tools.jar and copies it somewhere.
8"""
9
10import argparse
11import os
12import re
13import shutil
14import sys
15
16from util import build_utils
17
18RT_JAR_FINDER = re.compile(r'\[Opened (.*)/jre/lib/rt.jar\]')
19
20def main():
21 parser = argparse.ArgumentParser(description='Find Sun Tools Jar')
22 parser.add_argument('--depfile',
23 help='Path to depfile. This must be specified as the '
24 'action\'s first output.')
25 parser.add_argument('--output', required=True)
26 args = parser.parse_args()
27
28 sun_tools_jar_path = FindSunToolsJarPath()
29
30 if sun_tools_jar_path is None:
31 raise Exception("Couldn\'t find tools.jar")
32
33 # Using copyfile instead of copy() because copy() calls copymode()
34 # We don't want the locked mode because we may copy over this file again
35 shutil.copyfile(sun_tools_jar_path, args.output)
36
37 if args.depfile:
38 build_utils.WriteDepfile(
39 args.depfile,
40 [sun_tools_jar_path] + build_utils.GetPythonDependencies())
41
42
43def FindSunToolsJarPath():
44 # This works with at least openjdk 1.6, 1.7 and sun java 1.6, 1.7
45 stdout = build_utils.CheckOutput(
46 ["java", "-verbose", "-version"], print_stderr=False)
47 for ln in stdout.splitlines():
48 match = RT_JAR_FINDER.match(ln)
49 if match:
50 return os.path.join(match.group(1), 'lib', 'tools.jar')
51
52 return None
53
54
55if __name__ == '__main__':
56 sys.exit(main())