Mercurial > hg > graal-compiler
comparison mxtool/mx.py @ 5376:bfc9aeb1264c
synchronized mxtool with Maxine
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Fri, 11 May 2012 11:27:53 +0200 |
parents | 1a9a048386d6 |
children | 271e83dcfcef |
comparison
equal
deleted
inserted
replaced
5375:3035b6b881d9 | 5376:bfc9aeb1264c |
---|---|
1682 def netbeansinit(args, suite=None): | 1682 def netbeansinit(args, suite=None): |
1683 """(re)generate NetBeans project configurations""" | 1683 """(re)generate NetBeans project configurations""" |
1684 | 1684 |
1685 if suite is None: | 1685 if suite is None: |
1686 suite = _mainSuite | 1686 suite = _mainSuite |
1687 | |
1688 def println(out, obj): | |
1689 out.write(str(obj) + '\n') | |
1687 | 1690 |
1688 updated = False | 1691 updated = False |
1689 for p in projects(): | 1692 for p in projects(): |
1690 if p.native: | 1693 if p.native: |
1691 continue | 1694 continue |
1896 parser.add_argument('--unified', action='store_true', help='put javadoc in a single directory instead of one per project') | 1899 parser.add_argument('--unified', action='store_true', help='put javadoc in a single directory instead of one per project') |
1897 parser.add_argument('--force', action='store_true', help='(re)generate javadoc even if package-list file exists') | 1900 parser.add_argument('--force', action='store_true', help='(re)generate javadoc even if package-list file exists') |
1898 parser.add_argument('--projects', action='store', help='comma separated projects to process (omit to process all projects)') | 1901 parser.add_argument('--projects', action='store', help='comma separated projects to process (omit to process all projects)') |
1899 parser.add_argument('--argfile', action='store', help='name of file containing extra javadoc options') | 1902 parser.add_argument('--argfile', action='store', help='name of file containing extra javadoc options') |
1900 parser.add_argument('-m', '--memory', action='store', help='-Xmx value to pass to underlying JVM') | 1903 parser.add_argument('-m', '--memory', action='store', help='-Xmx value to pass to underlying JVM') |
1901 | 1904 parser.add_argument('--wiki', action='store_true', help='generate Confluence Wiki format for package-info.java files') |
1905 parser.add_argument('--packages', action='store', help='comma separated packages to process (omit to process all packages)') | |
1906 | |
1902 args = parser.parse_args(args) | 1907 args = parser.parse_args(args) |
1903 | 1908 |
1904 # build list of projects to be processed | 1909 # build list of projects to be processed |
1905 candidates = sorted_deps() | 1910 candidates = sorted_deps() |
1906 if args.projects is not None: | 1911 if args.projects is not None: |
1907 candidates = [project(name) for name in args.projects.split(',')] | 1912 candidates = [project(name) for name in args.projects.split(',')] |
1908 | 1913 |
1914 # optionally restrict packages within a project (most useful for wiki) | |
1915 packages = [] | |
1916 if args.packages is not None: | |
1917 packages = [name for name in args.packages.split(',')] | |
1918 | |
1919 # the WikiDoclet cannot see the -classpath argument passed to javadoc so we pass the | |
1920 # full list of projects as an explicit argument, thereby enabling it to map classes | |
1921 # to projects, which is needed to generate Wiki links to the source code. | |
1922 # There is no virtue in running the doclet on dependent projects as there are | |
1923 # no generated links between Wiki pages | |
1924 docletArgs = [] | |
1925 if args.wiki: | |
1926 docDir = 'wikidoc' | |
1927 toolsDir = project('com.oracle.max.tools').output_dir() | |
1928 baseDir = project('com.oracle.max.base').output_dir() | |
1929 dp = os.pathsep.join([toolsDir, baseDir]) | |
1930 project_list = ','.join(p.name for p in sorted_deps()) | |
1931 docletArgs = ['-docletpath', dp, '-doclet', 'com.oracle.max.tools.javadoc.wiki.WikiDoclet', '-projects', project_list] | |
1932 else: | |
1933 docDir = 'javadoc' | |
1934 | |
1935 def check_package_list(p): | |
1936 if args.wiki: | |
1937 return True | |
1938 else: | |
1939 return not exists(join(p.dir, docDir, 'package-list')) | |
1940 | |
1909 def assess_candidate(p, projects): | 1941 def assess_candidate(p, projects): |
1910 if p in projects: | 1942 if p in projects: |
1911 return False | 1943 return False |
1912 if args.force or args.unified or not exists(join(p.dir, 'javadoc', 'package-list')): | 1944 if args.force or args.unified or check_package_list(p): |
1913 projects.append(p) | 1945 projects.append(p) |
1914 return True | 1946 return True |
1915 return False | 1947 return False |
1916 | 1948 |
1917 projects = [] | 1949 projects = [] |
1918 for p in candidates: | 1950 for p in candidates: |
1919 if not p.native: | 1951 if not p.native: |
1920 deps = p.all_deps([], includeLibs=False, includeSelf=False) | 1952 if not args.wiki: |
1921 for d in deps: | 1953 deps = p.all_deps([], includeLibs=False, includeSelf=False) |
1922 assess_candidate(d, projects) | 1954 for d in deps: |
1955 assess_candidate(d, projects) | |
1923 if not assess_candidate(p, projects): | 1956 if not assess_candidate(p, projects): |
1924 log('[package-list file exists - skipping {0}]'.format(p.name)) | 1957 log('[package-list file exists - skipping {0}]'.format(p.name)) |
1925 | 1958 |
1926 | 1959 |
1927 def find_packages(sourceDirs, pkgs=set()): | 1960 def find_packages(sourceDirs, pkgs=set()): |
1928 for sourceDir in sourceDirs: | 1961 for sourceDir in sourceDirs: |
1929 for root, _, files in os.walk(sourceDir): | 1962 for root, _, files in os.walk(sourceDir): |
1930 if len([name for name in files if name.endswith('.java')]) != 0: | 1963 if len([name for name in files if name.endswith('.java')]) != 0: |
1931 pkgs.add(root[len(sourceDir) + 1:].replace('/','.')) | 1964 pkg = root[len(sourceDir) + 1:].replace('/','.') |
1965 if (len(packages) == 0) | (pkg in packages): | |
1966 pkgs.add(pkg) | |
1932 return pkgs | 1967 return pkgs |
1933 | 1968 |
1934 extraArgs = [] | 1969 extraArgs = [] |
1935 if args.argfile is not None: | 1970 if args.argfile is not None: |
1936 extraArgs += ['@' + args.argfile] | 1971 extraArgs += ['@' + args.argfile] |
1972 memory = '2g' | |
1937 if args.memory is not None: | 1973 if args.memory is not None: |
1938 extraArgs.append('-J-Xmx' + args.memory) | 1974 memory = args.memory |
1975 memory = '-J-Xmx' + memory | |
1939 | 1976 |
1940 if not args.unified: | 1977 if not args.unified: |
1941 for p in projects: | 1978 for p in projects: |
1942 pkgs = find_packages(p.source_dirs(), set()) | 1979 pkgs = find_packages(p.source_dirs(), set()) |
1943 deps = p.all_deps([], includeLibs=False, includeSelf=False) | 1980 deps = p.all_deps([], includeLibs=False, includeSelf=False) |
1944 links = ['-link', 'http://docs.oracle.com/javase/6/docs/api/'] | 1981 links = ['-link', 'http://docs.oracle.com/javase/' + str(p.javaCompliance.value) + '/docs/api/'] |
1945 out = join(p.dir, 'javadoc') | 1982 out = join(p.dir, docDir) |
1946 for d in deps: | 1983 for d in deps: |
1947 depOut = join(d.dir, 'javadoc') | 1984 depOut = join(d.dir, docDir) |
1948 links.append('-link') | 1985 links.append('-link') |
1949 links.append(os.path.relpath(depOut, out)) | 1986 links.append(os.path.relpath(depOut, out)) |
1950 cp = classpath(p.name, includeSelf=True) | 1987 cp = classpath(p.name, includeSelf=True) |
1951 sp = os.pathsep.join(p.source_dirs()) | 1988 sp = os.pathsep.join(p.source_dirs()) |
1952 log('Generating javadoc for {0} in {1}'.format(p.name, out)) | 1989 log('Generating {2} for {0} in {1}'.format(p.name, out, docDir)) |
1953 run([java().javadoc, '-J-Xmx2g', '-classpath', cp, '-quiet', '-d', out, '-sourcepath', sp] + links + extraArgs + list(pkgs)) | 1990 run([java().javadoc, memory, '-classpath', cp, '-quiet', '-d', out, '-sourcepath', sp] + docletArgs + links + extraArgs + list(pkgs)) |
1954 log('Generated javadoc for {0} in {1}'.format(p.name, out)) | 1991 log('Generated {2} for {0} in {1}'.format(p.name, out, docDir)) |
1955 else: | 1992 else: |
1956 pkgs = set() | 1993 pkgs = set() |
1957 sp = [] | 1994 sp = [] |
1958 names = [] | 1995 names = [] |
1959 for p in projects: | 1996 for p in projects: |
1960 find_packages(p.source_dirs(), pkgs) | 1997 find_packages(p.source_dirs(), pkgs) |
1961 sp += p.source_dirs() | 1998 sp += p.source_dirs() |
1962 names.append(p.name) | 1999 names.append(p.name) |
1963 | 2000 |
1964 links = ['-link', 'http://docs.oracle.com/javase/6/docs/api/'] | 2001 links = ['-link', 'http://docs.oracle.com/javase/' + str(_java.javaCompliance.value) + '/docs/api/'] |
1965 out = join(_mainSuite.dir, 'javadoc') | 2002 out = join(_mainSuite.dir, docDir) |
1966 cp = classpath() | 2003 cp = classpath() |
1967 sp = os.pathsep.join(sp) | 2004 sp = os.pathsep.join(sp) |
1968 log('Generating javadoc for {0} in {1}'.format(', '.join(names), out)) | 2005 log('Generating {2} for {0} in {1}'.format(', '.join(names), out, docDir)) |
1969 run([java().javadoc, '-classpath', cp, '-quiet', '-d', out, '-sourcepath', sp] + links + extraArgs + list(pkgs)) | 2006 run([java().javadoc, memory, '-classpath', cp, '-quiet', '-d', out, '-sourcepath', sp] + docletArgs + links + extraArgs + list(pkgs)) |
1970 log('Generated javadoc for {0} in {1}'.format(', '.join(names), out)) | 2007 log('Generated {2} for {0} in {1}'.format(', '.join(names), out, docDir)) |
1971 | 2008 |
1972 def javap(args): | 2009 def javap(args): |
1973 """launch javap with a -classpath option denoting all available classes | 2010 """launch javap with a -classpath option denoting all available classes |
1974 | 2011 |
1975 Run the JDK javap class file disassembler with the following prepended options: | 2012 Run the JDK javap class file disassembler with the following prepended options: |