[312486]
diff --git a/releng/org.eclipse.emf.ecoretools.releng.buckminster/.project b/releng/org.eclipse.emf.ecoretools.releng.buckminster/.project
new file mode 100644
index 0000000..c70f737
--- /dev/null
+++ b/releng/org.eclipse.emf.ecoretools.releng.buckminster/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecoretools.releng.buckminster</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>
diff --git a/releng/org.eclipse.emf.ecoretools.releng.buckminster/buckminster.cspec b/releng/org.eclipse.emf.ecoretools.releng.buckminster/buckminster.cspec
new file mode 100644
index 0000000..ee994d3
--- /dev/null
+++ b/releng/org.eclipse.emf.ecoretools.releng.buckminster/buckminster.cspec
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cs:cspec xmlns:cs="http://www.eclipse.org/buckminster/CSpec-1.0" name="org.eclipse.emf.ecoretools.releng.buckminster"
+	componentType="buckminster" version="0.1.0.qualifier"
+>
+	<cs:dependencies>
+		<cs:dependency name="org.eclipse.platform" componentType="eclipse.feature" />
+		<cs:dependency name="org.eclipse.emf" componentType="eclipse.feature" />
+		<cs:dependency name="org.eclipse.emf.query" componentType="eclipse.feature" />
+		<cs:dependency name="org.eclipse.emf.validation" componentType="eclipse.feature" />
+		<cs:dependency name="org.eclipse.emf.transaction" componentType="eclipse.feature" />
+		<cs:dependency name="org.eclipse.gef" componentType="eclipse.feature" />
+		<cs:dependency name="org.eclipse.gmf" componentType="eclipse.feature" />
+		<cs:dependency name="org.eclipse.ocl" componentType="eclipse.feature" />
+		<cs:dependency name="org.eclipse.pde.ui" componentType="osgi.bundle" />
+		<cs:dependency name="org.eclipse.pde.junit.runtime" componentType="osgi.bundle" />
+
+		<!-- the following are sufficient build dependencies 
+		<cs:dependency name="org.eclipse.gmf.ecore.editor" componentType="osgi.bundle" />
+		<cs:dependency name="org.eclipse.gmf.runtime.diagram.ui.geoshapes" componentType="osgi.bundle" />
+		<cs:dependency name="org.w3c.dom.events" componentType="osgi.bundle" />
+		 -->
+	</cs:dependencies>
+
+	<cs:actions>
+		<cs:public name="setup.promoter" actor="ant">
+			<cs:actorProperties>
+				<cs:property key="buildFile" value="promoter.ant" />
+				<cs:property key="targets" value="-setup.promoter" />
+			</cs:actorProperties>
+			<cs:products alias="output" base="${buckminster.output}/promoter/" />
+		</cs:public>
+	</cs:actions>
+</cs:cspec>
diff --git a/releng/org.eclipse.emf.ecoretools.releng.buckminster/promoter.ant b/releng/org.eclipse.emf.ecoretools.releng.buckminster/promoter.ant
new file mode 100644
index 0000000..487bcad
--- /dev/null
+++ b/releng/org.eclipse.emf.ecoretools.releng.buckminster/promoter.ant
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="Promoter / Publisher" default="publish.build">
+	<property name="promoter.properties.file.name" value="promote.properties" />
+	<property name="publisher.properties.file.name" value="publisher.properties" />
+
+	<target name="-setup.promoter">
+		<property name="promoter.setup.directory" location="${sp:output}" />
+		<property name="promoter.properties.file" location="${promoter.setup.directory}/${promoter.properties.file.name}" />
+
+		<mkdir dir="${promoter.setup.directory}" />
+
+		<!-- supply defaults -->
+		<property name="build.id" value="" />
+		<property name="hudson.build.id" value="" />
+
+		<propertyfile file="${promoter.properties.file}" comment="Promoter script properties">
+			<entry key="java.home" value="${java.home}" />
+			<entry key="eclipse.home" value="${eclipse.home}" />
+			<entry key="build.id" value="${build.id}" />
+			<entry key="hudson.build.id" value="${hudson.build.id}" />
+		</propertyfile>
+
+		<!-- diagnostics
+		<property environment="env." />
+		<echoproperties destfile="${promoter.setup.directory}/all.properties" />
+		-->
+	</target>
+
+	<target name="-locate.launcher.jar" unless="launcher.jar">
+		<pathconvert property="launcher.jar">
+			<first count="1">
+				<sort>
+					<fileset dir="${saved.eclipse.home}/plugins" includes="**/org.eclipse.equinox.launcher_*.jar" />
+					<reverse xmlns="antlib:org.apache.tools.ant.types.resources.comparators">
+						<date />
+					</reverse>
+				</sort>
+			</first>
+		</pathconvert>
+	</target>
+
+	<target name="setup.publisher">
+		<property environment="env." />
+
+		<fail message="WORKSPACE not present in the evironment, can't continue" unless="env.WORKSPACE" />
+		<fail message="PROMOTED_URL not present in the evironment, can't continue" unless="env.PROMOTED_URL" />
+
+		<!-- default publisher root -->
+		<property name="publisher.root" location="${env.WORKSPACE}/publishroot" />
+
+		<delete dir="${publisher.root}" />
+		<mkdir dir="${publisher.root}" />
+
+		<copy tofile="${publisher.root}/publisher.ant" file="${ant.file}" />
+
+		<property name="promoter.properties.file.url" value="${env.PROMOTED_URL}/artifact/${promoter.properties.file.name}" />
+
+		<!-- load the promoter properties using the PROMOTED_URL supplied by Hudson -->
+		<property prefix="saved." url="${promoter.properties.file.url}" />
+
+		<fail message="hudson.build.id not defined in ${promoter.properties.file.url}, can't continue">
+			<condition>
+				<not>
+					<and>
+						<isset property="saved.hudson.build.id" />
+						<length string="${saved.hudson.build.id}" trim="true" when="greater" length="0" />
+					</and>
+				</not>
+			</condition>
+		</fail>
+
+		<property name="build.root" location="${env.WORKSPACE}/../builds/${saved.hudson.build.id}" />
+
+		<echoproperties destfile="${publisher.root}/${publisher.properties.file.name}">
+			<propertyset>
+				<propertyref builtin="commandline" />
+				<propertyref prefix="saved." />
+				<propertyref name="build.root" />
+			</propertyset>
+		</echoproperties>
+	</target>
+
+	<target name="publish.build">
+		<fail message="build.root property must be defined" unless="build.root" />
+
+		<property name="property.file.location" location="${build.root}/archive/${promoter.properties.file.name}" />
+		<property name="property.load.prefix" value="saved." />
+
+		<antcall target="publish.build.stage.2" inheritall="true" />
+	</target>
+
+	<target name="-setup.property.file.location" unless="property.file.location">
+		<dirname property="script.directory" file="${ant.file}" />
+		<property name="property.file.location" location="${script.directory}/${publisher.properties.file.name}" />
+	</target>
+
+	<target name="-load.properties.as.is" unless="property.load.prefix">
+		<property file="${property.file.location}" />
+	</target>
+
+	<target name="-load.properties.with.prefix" if="property.load.prefix">
+		<property prefix="${property.load.prefix}" file="${property.file.location}" />
+	</target>
+
+	<target name="-load.properties" depends="-load.properties.as.is,-load.properties.with.prefix" />
+
+	<target name="publish.build.stage.2" depends="-setup.property.file.location,-load.properties,-locate.launcher.jar">
+		<condition property="java.executable" value="${saved.java.home}/bin/java" else="java">
+			<isset property="saved.java.home" />
+		</condition>
+		<tempfile property="publisher.workspace" prefix="workspace." destdir="${java.io.tmpdir}" />
+
+		<java jvm="${java.executable}" jar="${launcher.jar}" fork="true" failonerror="true">
+			<syspropertyset>
+				<propertyref builtin="commandline" />
+				<propertyref name="property.file.location" />
+				<propertyref name="property.load.prefix" />
+			</syspropertyset>
+			<arg value="-data" />
+			<arg value="${publisher.workspace}" />
+			<arg value="-application" />
+			<arg value="org.eclipse.ant.core.antRunner" />
+			<arg value="-buildfile" />
+			<arg value="${ant.file}" />
+			<arg value="publish.build.from.framework" />
+		</java>
+
+		<!--
+			somewhat more complicated than simple <delete dir="${publisher.workspace}" />
+			but this way it does not produce the "Deleting directory" message
+		-->
+		<delete dir="${publisher.workspace}" includeemptydirs="true" quiet="true">
+			<or>
+				<type type="dir" />
+				<type type="file" />
+			</or>
+		</delete>
+	</target>
+
+	<target name="-check.property.file.location">
+		<fail message="property.file.location property must be defined" unless="property.file.location" />
+	</target>
+
+	<target name="publish.build.from.framework" depends="-check.property.file.location,-load.properties">
+		<fail message="saved.build.id property must be defined">
+			<condition>
+				<not>
+					<and>
+						<isset property="saved.build.id" />
+						<length string="${saved.build.id}" trim="true" when="greater" length="0" />
+					</and>
+				</not>
+			</condition>
+		</fail>
+		<fail message="build.root property must be defined" unless="build.root" />
+		<fail message="packages.base property must be defined" unless="packages.base" />
+		<fail message="downloads.area property must be defined" unless="downloads.area" />
+
+		<!-- defaults -->
+		<property name="version" value="2.6.0" />
+
+		<property name="packages.directory" location="${build.root}/archive/${packages.base}" />
+
+		<property name="build.drop.directory" location="${downloads.area}/downloads/drops/${version}/${saved.build.id}" />
+
+		<delete dir="${build.drop.directory}" />
+		<mkdir dir="${build.drop.directory}" />
+
+		<!-- copy zip packages -->
+		<copy todir="${build.drop.directory}">
+			<fileset dir="${packages.directory}">
+				<filename name="*.zip" />
+			</fileset>
+		</copy>
+		<!-- genereate md5 checksums -->
+		<checksum algorithm="MD5" fileext=".md5" format="MD5SUM">
+			<fileset dir="${build.drop.directory}" />
+		</checksum>
+		<!-- copy buildlog -->
+		<copy tofile="${build.drop.directory}/buildlog.txt" file="${build.root}/log" />
+
+		<fileset id="drop.resources" dir="${build.drop.directory}">
+			<or>
+				<type type="dir" />
+				<type type="file" />
+			</or>
+		</fileset>
+
+		<!-- chgrp -->
+		<antcall target="-change.group.owner" inheritall="true">
+			<reference refid="drop.resources" torefid="change.group.owner.resources" />
+		</antcall>
+
+		<!-- strip the micro version and anything following it -->
+		<buckminster.substitute value="${version}" pattern="^(\d+\.\d+)\.\d+.*$" replacement="$$1" property="base.version" />
+
+		<!-- setup composite.repository.base appropriate to the build type -->
+		<condition property="composite.repository.base" value="${base.version}-I-builds">
+			<matches pattern="^I" string="${saved.build.id}" />
+		</condition>
+		<condition property="composite.repository.base" value="${base.version}milestones">
+			<matches pattern="^[MS]" string="${saved.build.id}" />
+		</condition>
+		<condition property="composite.repository.base" value="${base.version}">
+			<matches pattern="^R" string="${saved.build.id}" />
+		</condition>
+
+		<antcall target="-publish.build.repository" inheritall="true" />
+	</target>
+
+	<target name="-publish.build.repository" if="composite.repository.base">
+		<property name="composite.repository.directory" location="${downloads.area}/updates/${composite.repository.base}" />
+		<property name="composite.repository.url" value="file:/${composite.repository.directory}" />
+		<property name="build.repository.directory" location="${composite.repository.directory}/${saved.build.id}" />
+
+		<delete dir="${build.repository.directory}" />
+		<mkdir dir="${build.repository.directory}" />
+
+		<unzip dest="${build.repository.directory}">
+			<fileset dir="${packages.directory}">
+				<filename name="emf-xsd-Update*.zip" />
+			</fileset>
+		</unzip>
+
+		<p2.composite.repository destination="${composite.repository.url}">
+			<add>
+				<repository location="${saved.build.id}" />
+			</add>
+		</p2.composite.repository>
+
+		<fileset id="repository.resources" dir="${composite.repository.directory}">
+			<or>
+				<filename name="compositeContent.*" />
+				<filename name="compositeArtifacts.*" />
+				<filename name="${saved.build.id}/**" />
+			</or>
+		</fileset>
+
+		<antcall target="-change.group.owner" inheritall="true">
+			<reference refid="repository.resources" torefid="change.group.owner.resources" />
+		</antcall>
+	</target>
+
+	<target name="-change.group.owner" if="group.owner">
+		<chgrp group="${group.owner}" type="both" verbose="true">
+			<fileset refid="change.group.owner.resources" />
+		</chgrp>
+	</target>
+</project>
diff --git a/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools-build.properties b/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools-build.properties
new file mode 100644
index 0000000..fc81f18
--- /dev/null
+++ b/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools-build.properties
@@ -0,0 +1,24 @@
+# define where to put the output of the build
+buckminster.output.root=${workspace.root}/buckminster.build.output
+
+# define where to put temporary stuff
+buckminster.temp.root=${workspace.root}/buckminster.build.temp
+
+# define the qualifier replacement method
+qualifier.replacement.*=generator:lastModified
+generator.lastModified.format='v'yyyyMMdd-HHmm
+
+target.os=*
+target.ws=*
+target.arch=*
+
+# define the site generation properties
+site.pack200=true
+site.retain.unpacked=true
+site.signing=false
+signing.type=eclipse.local
+eclipse.staging.area=${workspace.root}/buckminster.build.signing
+
+# define the range generation rules for required bundles
+pde.match.rule.default=compatible
+pde.match.rule.retain.lower=true
diff --git a/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools-platform.cquery b/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools-platform.cquery
new file mode 100644
index 0000000..3f4504f
--- /dev/null
+++ b/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools-platform.cquery
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0" resourceMap="ecoretools-platform.rmap">
+	<cq:rootRequest name="org.eclipse.emf.ecoretools.releng.buckminster" componentType="buckminster"/>
+
+	<cq:advisorNode namePattern="^" useTargetPlatform="false"/>
+
+	<cq:property key="target.os" value="*"/>
+	<cq:property key="target.arch" value="*"/>
+	<cq:property key="target.ws" value="*"/>
+</cq:componentQuery>
diff --git a/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools-platform.mspec b/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools-platform.mspec
new file mode 100644
index 0000000..d378832
--- /dev/null
+++ b/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools-platform.mspec
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mspec:mspec xmlns:mspec="http://www.eclipse.org/buckminster/MetaData-1.0" name="Ecore Tools Platform MSPEC" materializer="p2" url="ecoretools-platform.cquery" conflictResolution="UPDATE">
+	<mspec:property key="target.os" value="*"/>
+	<mspec:property key="target.arch" value="*"/>
+	<mspec:property key="target.ws" value="*"/>
+</mspec:mspec>
diff --git a/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools-platform.rmap b/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools-platform.rmap
new file mode 100644
index 0000000..f1dffbf
--- /dev/null
+++ b/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools-platform.rmap
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rmap xmlns="http://www.eclipse.org/buckminster/RMap-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
+>
+	<locator pattern="^org\.eclipse\.emf\.ecoretools\.releng\.buckminster$" searchPathRef="local.releng" />
+	<locator pattern="^org\.eclipse\.emf(?:\..+)?$" searchPathRef="emf" failOnError="false" />
+	<locator pattern="^org\.eclipse\.gmf(?:\..+)?$" searchPathRef="gmf" />
+	<locator searchPathRef="eclipse.helios" />
+
+	<searchPath name="local.releng">
+		<provider componentTypes="buckminster" readerType="local" source="true" mutable="false">
+			<uri format="{0}{1}">
+				<bc:propertyRef key="checkout.location" />
+				<bc:propertyRef key="buckminster.component" />
+			</uri>
+		</provider>
+	</searchPath>
+
+	<searchPath name="emf">
+		<provider componentTypes="eclipse.feature,osgi.bundle" readerType="p2" source="false" mutable="false">
+			<uri format="{0}/modeling/emf/emf/updates/2.6milestones">
+				<bc:propertyRef key="eclipse.download" />
+			</uri>
+		</provider>
+	</searchPath>
+
+	<searchPath name="gmf">
+		<provider componentTypes="eclipse.feature,osgi.bundle" readerType="p2" source="false" mutable="false">
+			<uri format="{0}/modeling/gmf/updates/milestones">
+				<bc:propertyRef key="eclipse.download" />
+			</uri>
+		</provider>
+	</searchPath>
+
+	<searchPath name="eclipse.helios">
+		<provider componentTypes="eclipse.feature,osgi.bundle" readerType="p2" source="false" mutable="false">
+			<uri format="{0}/eclipse/updates/3.6milestones">
+				<bc:propertyRef key="eclipse.download" />
+			</uri>
+		</provider>
+		<provider componentTypes="eclipse.feature,osgi.bundle" readerType="p2" source="false" mutable="false">
+			<uri format="{0}/releases/helios">
+				<bc:propertyRef key="eclipse.download" />
+			</uri>
+		</provider>
+	</searchPath>
+
+	<property key="checkout.location" value="${workspace.root}/" />
+	<property key="eclipse.download" value="http://download.eclipse.org" />
+</rmap>
\ No newline at end of file
diff --git a/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools.cquery b/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools.cquery
new file mode 100644
index 0000000..db945b5
--- /dev/null
+++ b/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools.cquery
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0" resourceMap="ecoretools.rmap">
+    <cq:rootRequest name="org.eclipse.emf.ecoretools.build" componentType="eclipse.feature"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.emf\.ecoretools(?:\..*)?\.source$" skipComponent="true"/>
+</cq:componentQuery>
diff --git a/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools.rmap b/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools.rmap
new file mode 100644
index 0000000..b9942c0
--- /dev/null
+++ b/releng/org.eclipse.emf.ecoretools.releng.buckminster/releng/ecoretools.rmap
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rmap xmlns="http://www.eclipse.org/buckminster/RMap-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
+>
+	<locator pattern="^org\.eclipse\.emf\.ecoretools\.(?:releng|build)(?:\..+)?$" searchPathRef="releng" />
+	<locator pattern="^org\.eclipse\.emf\.ecoretools(?:\..+)?$" searchPathRef="ecoretools" />
+
+	<searchPath name="ecoretools">
+		<provider componentTypes="osgi.bundle" readerType="cvs" source="true" mutable="false">
+			<uri format="{0},org.eclipse.emf/org.eclipse.emf.ecoretools/plugins/{1}">
+				<bc:propertyRef key="source.repository.location" />
+				<bc:propertyRef key="buckminster.component" />
+			</uri>
+		</provider>
+		<provider componentTypes="eclipse.feature" readerType="cvs" source="true" mutable="false">
+			<uri format="{0},org.eclipse.emf/org.eclipse.emf.ecoretools/features/{1}-feature">
+				<bc:propertyRef key="source.repository.location" />
+				<bc:propertyRef key="buckminster.component" />
+			</uri>
+		</provider>
+		<provider componentTypes="osgi.bundle" readerType="cvs" source="true" mutable="false">
+			<uri format="{0},org.eclipse.emf/org.eclipse.emf.ecoretools/doc/{1}">
+				<bc:propertyRef key="source.repository.location" />
+				<bc:propertyRef key="buckminster.component" />
+			</uri>
+		</provider>
+		<provider componentTypes="eclipse.feature" readerType="cvs" source="true" mutable="false">
+			<uri format="{0},org.eclipse.emf/org.eclipse.emf.ecoretools/doc/{1}-feature">
+				<bc:propertyRef key="source.repository.location" />
+				<bc:propertyRef key="buckminster.component" />
+			</uri>
+		</provider>
+		<provider componentTypes="osgi.bundle" readerType="cvs" source="true" mutable="false">
+			<uri format="{0},org.eclipse.emf/org.eclipse.emf.ecoretools/examples/{1}">
+				<bc:propertyRef key="source.repository.location" />
+				<bc:propertyRef key="buckminster.component" />
+			</uri>
+		</provider>
+		<provider componentTypes="osgi.bundle" readerType="cvs" source="true" mutable="false">
+			<uri format="{0},org.eclipse.emf/org.eclipse.emf.ecoretools/tests/{1}">
+				<bc:propertyRef key="source.repository.location" />
+				<bc:propertyRef key="buckminster.component" />
+			</uri>
+		</provider>
+	</searchPath>
+
+	<searchPath name="releng">
+		<provider componentTypes="buckminster" readerType="svn" source="true" mutable="false">
+			<uri format="{0}/org.eclipse.emf.ecoretools/{1}">
+				<bc:propertyRef key="releng.source.repository.location" />
+				<bc:propertyRef key="buckminster.component" />
+			</uri>
+		</provider>
+		<provider componentTypes="eclipse.feature" readerType="svn" source="true" mutable="false">
+			<uri format="{0}/org.eclipse.emf.ecoretools/{1}-feature">
+				<bc:propertyRef key="releng.source.repository.location" />
+				<bc:propertyRef key="buckminster.component" />
+			</uri>
+		</provider>
+	</searchPath>
+
+	<property key="source.repository.location" value=":pserver:anonymous@dev.eclipse.org:/cvsroot/modeling" />
+	<property key="releng.source.repository.location" value="http://testsvn.cloudsmith.com/eclipse/modeling/trunk" />
+</rmap>