Mercurial > hg > truffle
diff mxtool/mx.py @ 15899:e065b9746246
mx: create Eclipse projects for distributions
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 26 May 2014 13:02:29 +0200 |
parents | c102edf38127 |
children | a9781031ecf1 |
line wrap: on
line diff
--- a/mxtool/mx.py Mon May 26 12:55:17 2014 +0200 +++ b/mxtool/mx.py Mon May 26 13:02:29 2014 +0200 @@ -3343,10 +3343,6 @@ refreshFile = os.path.relpath(join(p.dir, p.name + '.jar'), logicalWorkspaceRoot) _genEclipseBuilder(out, p, 'Jar', 'archive ' + p.name, refresh=True, refreshFile=refreshFile, relevantResources=[binFolder], async=True, xmlIndent='', xmlStandalone='no') - if projToDist.has_key(p.name): - dist, distDeps = projToDist[p.name] - _genEclipseBuilder(out, p, 'Create' + dist.name + 'Dist', 'archive @' + dist.name, relevantResources=[binFolder], logToFile=True, refresh=False, async=True) - out.close('buildSpec') out.open('natures') out.element('nature', data='org.eclipse.jdt.core.javanature') @@ -3425,6 +3421,43 @@ _zip_files(files, suite.dir, configZip.path) _zip_files(libFiles, suite.dir, configLibsZip) + # Create an Eclipse project for each distribution that will create/update the archive + # for the distribution whenever any project of the distribution is updated. + for dist in suite.dists: + name = dist.name + if hasattr(dist, 'subDir'): + projectDir = join(suite.dir, dist.subDir, dist.name + '.dist') + else: + projectDir = join(suite.dir, dist.name + '.dist') + if not exists(projectDir): + os.makedirs(projectDir) + distProjects = [d for d in dist.sorted_deps() if d.isProject()] + relevantResources = [] + for p in distProjects: + for srcDir in p.source_dirs(): + relevantResources.append(join(p.name, os.path.relpath(srcDir, p.dir))) + relevantResources.append(join(p.name, os.path.relpath(p.output_dir(), p.dir))) + out = XMLDoc() + out.open('projectDescription') + out.element('name', data=dist.name) + out.element('comment', data='Updates ' + dist.path + ' if a project dependency of ' + dist.name + ' is updated') + out.open('projects') + for p in distProjects: + out.element('project', data=p.name) + out.close('projects') + out.open('buildSpec') + dist.dir = projectDir + dist.javaCompliance = max([p.javaCompliance for p in distProjects]) + _genEclipseBuilder(out, dist, 'Create' + dist.name + 'Dist', 'archive @' + dist.name, relevantResources=relevantResources, logToFile=True, refresh=False, async=True) + out.close('buildSpec') + out.open('natures') + out.element('nature', data='org.eclipse.jdt.core.javanature') + out.close('natures') + out.close('projectDescription') + projectFile = join(projectDir, '.project') + update_file(projectFile, out.xml(indent='\t', newl='\n')) + files.append(projectFile) + def _zip_files(files, baseDir, zipPath): fd, tmp = tempfile.mkstemp(suffix='', prefix=basename(zipPath), dir=baseDir) try: