# HG changeset patch # User Mick Jordan # Date 1382573550 25200 # Node ID c41342332b7f79a53aad600670b060d19d99ddd5 # Parent 9af82ca3f2251313aeaf92dadb30057d9cf905fd# Parent 0db1d96dd8f0e92429e3420e99940eed2fd7d457 Merge diff -r 0db1d96dd8f0 -r c41342332b7f mxtool/mx.py --- a/mxtool/mx.py Wed Oct 23 22:50:34 2013 +0200 +++ b/mxtool/mx.py Wed Oct 23 17:12:30 2013 -0700 @@ -27,119 +27,9 @@ # r""" -mx is a command line tool inspired by mvn (http://maven.apache.org/) -and hg (http://mercurial.selenic.com/). It includes a mechanism for -managing the dependencies between a set of projects (like Maven) -as well as making it simple to run commands -(like hg is the interface to the Mercurial commands). - -The organizing principle of mx is a project suite. A suite is a directory -containing one or more projects. It's not coincidental that this closely -matches the layout of one or more projects in a Mercurial repository. -The configuration information for a suite lives in an 'mx' sub-directory -at the top level of the suite. A suite is given a name by a 'suite=name' -property in the 'mx/projects' file (if omitted the name is suite directory). -An 'mx' subdirectory can be named as plain 'mx' or 'mx.name', where -'name' is typically the name as the suite name. -The latter is useful to avoid clashes in IDE project names. - -When launched, mx treats the current working directory as a suite. -This is the primary suite. All other suites are called included suites. - -The configuration files (i.e. in the 'mx' sub-directory) of a suite are: - - projects - Defines the projects and libraries in the suite and the - dependencies between them. - - commands.py - Suite specific extensions to the commands available to mx. - - imports - Other suites to be loaded. This is recursive. Each - line in an imports file is the name of an imported suite. - The suite is located using a SuiteModel (cf searchpath) - - env - A set of environment variable definitions. These override any - existing environment variables. Common properties set here - include JAVA_HOME and IGNORED_PROJECTS. - -The env file is typically not put under version control -as it usually contain local file-system paths. - -The projects file is like the pom.xml file from Maven except that -it is a properties file (not XML). Each non-comment line -in the file specifies an attribute of a project or library. The main -difference between a project and a library is that the former contains -source code built by the mx tool where as the latter is an external -dependency. The format of the projects file is - -Library specification format: - - library@@= - -Built-in library properties (* = required): - - *path - The file system path for the library to appear on a class path. - - urls - A comma separated list of URLs from which the library (jar) can - be downloaded and saved in the location specified by 'path'. - - optional - If "true" then this library will be omitted from a class path - if it doesn't exist on the file system and no URLs are specified. - - sourcePath - The file system path for a jar file containing the library sources. - - sourceUrls - A comma separated list of URLs from which the library source jar can - be downloaded and saved in the location specified by 'sourcePath'. - -Project specification format: - - project@@= - -The name of a project also denotes the directory it is in. - -Built-in project properties (* = required): - - subDir - The sub-directory of the suite in which the project directory is - contained. If not specified, the project directory is directly - under the suite directory. - - *sourceDirs - A comma separated list of source directory names (relative to - the project directory). - - dependencies - A comma separated list of the libraries and project the project - depends upon (transitive dependencies should be omitted). - - checkstyle - The project whose Checkstyle configuration - (i.e. /.checkstyle_checks.xml) is used. - - native - "true" if the project is native. - - javaCompliance - The minimum JDK version (format: x.y) to which the project's - sources comply (required for non-native projects). - - workingSets - A comma separated list of working set names. The project belongs - to the given working sets, for which the eclipseinit command - will generate Eclipse configurations. - -Other properties can be specified for projects and libraries for use -by extension commands. - -Property values can use environment variables with Bash syntax (e.g. ${HOME}). +mx is a command line tool for managing the development of Java code organized as suites of projects. + +Full documentation can be found at https://wiki.openjdk.java.net/display/Graal/The+mx+Tool """ import sys, os, errno, time, subprocess, shlex, types, urllib2, contextlib, StringIO, zipfile, signal, xml.sax.saxutils, tempfile, fnmatch