Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Merks2015-04-08 14:23:54 +0000
committerEd Merks2015-04-08 14:23:54 +0000
commite9d03f79db6daaa87d1bf96c01e066ebdc3135b5 (patch)
tree9709856e4887c6050c20d46ff7665469a512eff5
parent39108f7d8ff52498133129824b9b11f6f72cfe0f (diff)
downloadorg.eclipse.oomph-e9d03f79db6daaa87d1bf96c01e066ebdc3135b5.tar.gz
org.eclipse.oomph-e9d03f79db6daaa87d1bf96c01e066ebdc3135b5.tar.xz
org.eclipse.oomph-e9d03f79db6daaa87d1bf96c01e066ebdc3135b5.zip
[463967] Initial prototype for a setup mirror
https://bugs.eclipse.org/bugs/show_bug.cgi?id=463967
-rw-r--r--plugins/org.eclipse.oomph.setup.installer/SetupMirror.launch41
-rw-r--r--plugins/org.eclipse.oomph.setup.installer/plugin.xml13
-rw-r--r--plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/SetupMirror.java146
3 files changed, 200 insertions, 0 deletions
diff --git a/plugins/org.eclipse.oomph.setup.installer/SetupMirror.launch b/plugins/org.eclipse.oomph.setup.installer/SetupMirror.launch
new file mode 100644
index 000000000..cb99bea66
--- /dev/null
+++ b/plugins/org.eclipse.oomph.setup.installer/SetupMirror.launch
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<setAttribute key="additional_plugins"/>
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.oomph.setup.installer.SetupMirror"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="false"/>
+<booleanAttribute key="automaticValidate" value="true"/>
+<stringAttribute key="bad_container_name" value="\org.eclipse.oomph.setup.insta"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/SetupMirror"/>
+<booleanAttribute key="default" value="false"/>
+<stringAttribute key="featureDefaultLocation" value="workspace"/>
+<stringAttribute key="featurePluginResolution" value="workspace"/>
+<booleanAttribute key="includeOptional" value="false"/>
+<stringAttribute key="location" value="@none"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dheadless.startup=true"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
+<setAttribute key="selected_features">
+<setEntry value="org.eclipse.oomph.p2:default"/>
+<setEntry value="org.eclipse.oomph.setup.installer:default"/>
+</setAttribute>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,com.jcraft.jsch@default:default,javax.annotation@default:default,javax.inject@default:default,javax.xml@default:default,org.apache.batik.css*1.6.0.v201011041432@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.6.0.v201011041432@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.6.0.v201011041432@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.java7@default:false,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources.win32.x86_64@default:false,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient4.ssl@default:false,org.eclipse.ecf.provider.filetransfer.httpclient4@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.console@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.touchpoint.natives@default:default,org.eclipse.equinox.p2.transport.ecf@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.util@default:default,org.eclipse.help@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.jsch.core@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.text@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.oomph.base.edit@default:default,org.eclipse.oomph.base@default:default,org.eclipse.oomph.extractor.lib@default:default,org.eclipse.oomph.jreinfo.ui@default:default,org.eclipse.oomph.jreinfo.win32.x86_64@default:false,org.eclipse.oomph.jreinfo@default:default,org.eclipse.oomph.p2.core@default:default,org.eclipse.oomph.p2.edit@default:default,org.eclipse.oomph.p2.ui@default:default,org.eclipse.oomph.p2@default:default,org.eclipse.oomph.predicates@default:default,org.eclipse.oomph.preferences@default:default,org.eclipse.oomph.resources@default:default,org.eclipse.oomph.setup.core@default:default,org.eclipse.oomph.setup.edit@default:default,org.eclipse.oomph.setup.installer@default:default,org.eclipse.oomph.setup.p2.edit@default:default,org.eclipse.oomph.setup.p2@default:default,org.eclipse.oomph.setup.tests@default:default,org.eclipse.oomph.setup.ui@default:default,org.eclipse.oomph.setup@default:default,org.eclipse.oomph.targlets.core@default:default,org.eclipse.oomph.targlets@default:default,org.eclipse.oomph.ui@default:default,org.eclipse.oomph.util.pde@default:default,org.eclipse.oomph.util@default:default"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="true"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.oomph.setup.installer/plugin.xml b/plugins/org.eclipse.oomph.setup.installer/plugin.xml
index 3b8d6e511..ffbdcf5b8 100644
--- a/plugins/org.eclipse.oomph.setup.installer/plugin.xml
+++ b/plugins/org.eclipse.oomph.setup.installer/plugin.xml
@@ -25,6 +25,19 @@
</run>
</application>
</extension>
+
+ <extension
+ id="SetupMirror"
+ point="org.eclipse.core.runtime.applications">
+ <application
+ cardinality="singleton-global"
+ thread="main"
+ visible="true">
+ <run
+ class="org.eclipse.oomph.setup.internal.installer.SetupMirror">
+ </run>
+ </application>
+ </extension>
<extension
id="application"
diff --git a/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/SetupMirror.java b/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/SetupMirror.java
new file mode 100644
index 000000000..4f451f4b7
--- /dev/null
+++ b/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/SetupMirror.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 201t Ed Merks and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ed Merks - initial API and implementation
+ */
+package org.eclipse.oomph.setup.internal.installer;
+
+import org.eclipse.oomph.setup.internal.core.SetupContext;
+import org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl;
+import org.eclipse.oomph.setup.internal.core.util.ResourceMirror;
+import org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil;
+import org.eclipse.oomph.util.IOUtil;
+import org.eclipse.oomph.util.OS;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.URIConverter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Ed Merks
+ */
+public class SetupMirror implements IApplication
+{
+ private static final URI GIT_C_PREFIX = URI.createURI("http://git.eclipse.org/c/");
+
+ public Object start(IApplicationContext context) throws Exception
+ {
+ // String[] arguments = (String[])context.getArguments().get(IApplicationContext.APPLICATION_ARGS);
+
+ ResourceSet resourceSet = SetupCoreUtil.createResourceSet();
+ new ResourceMirror(resourceSet).perform(SetupContext.INDEX_SETUP_URI);
+ EcoreUtil.resolveAll(resourceSet);
+
+ File file = new File(System.getProperty("java.io.tmpdir"), "setups.zip");
+ long lastModified = file.lastModified();
+ File temp = new File(file.toString() + ".tmp");
+ URI outputLocation;
+ if (lastModified == 0)
+ {
+ outputLocation = URI.createURI("archive:" + URI.createFileURI(file.toString()) + "!/");
+ }
+ else
+ {
+ try
+ {
+ IOUtil.copyFile(file, temp);
+ }
+ catch (Throwable throwable)
+ {
+ throwable.printStackTrace();
+ }
+
+ if (!temp.setLastModified(lastModified))
+ {
+ System.err.println("Count not set timestamp of " + temp);
+ }
+
+ outputLocation = URI.createURI("archive:" + URI.createFileURI(temp.toString()) + "!/");
+ }
+
+ ECFURIHandlerImpl.clearExpectedETags();
+
+ URIConverter uriConverter = resourceSet.getURIConverter();
+ Map<URI, URI> uriMap = uriConverter.getURIMap();
+ Map<Object, Object> options = new HashMap<Object, Object>();
+ if (lastModified != 0)
+ {
+ options.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+ // options.put(Resource.OPTION_LINE_DELIMITER, "\n");
+ }
+
+ for (Resource resource : resourceSet.getResources())
+ {
+ URI uri = resource.getURI();
+ URI normalizedURI = uriConverter.normalize(uri);
+ URI deresolvedURI = normalizedURI.deresolve(GIT_C_PREFIX, true, true, false);
+ if (deresolvedURI.hasRelativePath())
+ {
+ System.out.println("Mirroring " + normalizedURI);
+
+ URI output = deresolvedURI.resolve(outputLocation);
+ uriMap.put(normalizedURI, output);
+ resource.save(options);
+ }
+ else
+ {
+ System.out.println("Ignoring " + normalizedURI);
+ }
+ }
+
+ long finalLastModified = lastModified == 0 ? file.lastModified() : temp.lastModified();
+
+ if (lastModified != finalLastModified)
+ {
+ if (OS.INSTANCE.isWin())
+ {
+ if (lastModified != 0 && !file.delete())
+ {
+ System.err.println("Could not delete " + file);
+ }
+ }
+
+ if (lastModified == 0)
+ {
+ System.out.println("Successfully created " + file);
+ }
+ else if (temp.renameTo(file))
+ {
+ System.out.println("Successful updates for " + file);
+ }
+ else
+ {
+ System.err.println("Could not rename " + temp + " to " + file);
+ }
+ }
+ else
+ {
+ System.out.println("No updates for " + file);
+ if (!temp.delete())
+ {
+ System.err.println("Could not delete " + temp);
+ }
+ }
+
+ return null;
+ }
+
+ public void stop()
+ {
+ }
+
+}

Back to the top