mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-23 17:05:26 +02:00
added mingwrt packages and cleaned up the untar action a bit.
This commit is contained in:
parent
6cf7f9a686
commit
e3bc2d6767
4 changed files with 106 additions and 75 deletions
|
@ -15,7 +15,9 @@ import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.eclipse.core.runtime.Path;
|
import org.eclipse.core.runtime.Path;
|
||||||
|
@ -48,8 +50,9 @@ import org.eclipse.equinox.internal.provisional.p2.repository.IRepository;
|
||||||
*/
|
*/
|
||||||
public class WascanaGenerator implements IApplication {
|
public class WascanaGenerator implements IApplication {
|
||||||
|
|
||||||
private static Version wascanaVersion = Version.parseVersion("1.0.0.0");
|
|
||||||
private static Version binutilsVersion = Version.parseVersion("2.20.0.0");
|
private static Version binutilsVersion = Version.parseVersion("2.20.0.0");
|
||||||
|
private static Version mingwrtVersion = Version.parseVersion("3.15.2.4");
|
||||||
|
private static Version wascanaVersion = Version.parseVersion("1.0.0.0");
|
||||||
|
|
||||||
private static final String REPO_NAME = "Wascana";
|
private static final String REPO_NAME = "Wascana";
|
||||||
|
|
||||||
|
@ -61,6 +64,9 @@ public class WascanaGenerator implements IApplication {
|
||||||
|
|
||||||
private ILicense gpl30License;
|
private ILicense gpl30License;
|
||||||
private ILicense lgpl21License;
|
private ILicense lgpl21License;
|
||||||
|
private ILicense pdLicense; // public domain
|
||||||
|
|
||||||
|
private List<IInstallableUnit> iuList = new ArrayList<IInstallableUnit>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object start(IApplicationContext context) throws Exception {
|
public Object start(IApplicationContext context) throws Exception {
|
||||||
|
@ -76,21 +82,21 @@ public class WascanaGenerator implements IApplication {
|
||||||
createRepos(repoDir);
|
createRepos(repoDir);
|
||||||
loadLicenses();
|
loadLicenses();
|
||||||
|
|
||||||
// binutils
|
// tools
|
||||||
|
|
||||||
IInstallableUnit binutilsIU = createIU(
|
IInstallableUnit binutilsIU = createIU(
|
||||||
"wascana.binutils",
|
"wascana.binutils",
|
||||||
"Wascana MinGW binutils",
|
"Wascana MinGW Binutils",
|
||||||
binutilsVersion,
|
binutilsVersion,
|
||||||
gpl30License,
|
gpl30License,
|
||||||
null);
|
null);
|
||||||
IInstallableUnit binutilsSrcIU = createIU(
|
IInstallableUnit binutilsSrcIU = createIU(
|
||||||
"wascana.binutils.source",
|
"wascana.binutils.source",
|
||||||
"Wascana MinGW binutils source",
|
"Wascana MinGW Binutils Source",
|
||||||
binutilsVersion,
|
binutilsVersion,
|
||||||
gpl30License,
|
gpl30License,
|
||||||
null);
|
null);
|
||||||
|
|
||||||
// toolchain
|
|
||||||
IInstallableUnit toolsIU = createCategory(
|
IInstallableUnit toolsIU = createCategory(
|
||||||
"wascana.tools",
|
"wascana.tools",
|
||||||
"Wascana Tools",
|
"Wascana Tools",
|
||||||
|
@ -98,12 +104,29 @@ public class WascanaGenerator implements IApplication {
|
||||||
new IRequiredCapability[] {
|
new IRequiredCapability[] {
|
||||||
createRequiredCap(binutilsIU),
|
createRequiredCap(binutilsIU),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// sdks
|
||||||
|
|
||||||
|
IInstallableUnit mingwrtIU = createIU(
|
||||||
|
"wascana.mingwrt",
|
||||||
|
"Wascana MinGW Runtime",
|
||||||
|
mingwrtVersion,
|
||||||
|
pdLicense,
|
||||||
|
null);
|
||||||
|
|
||||||
|
IInstallableUnit mingwrtSrcIU = createIU(
|
||||||
|
"wascana.mingwrt.source",
|
||||||
|
"Wascana MinGW Runtime Source",
|
||||||
|
mingwrtVersion,
|
||||||
|
pdLicense,
|
||||||
|
null);
|
||||||
|
|
||||||
IInstallableUnit sdksIU = createCategory(
|
IInstallableUnit sdksIU = createCategory(
|
||||||
"wascana.sdks",
|
"wascana.sdks",
|
||||||
"Wascana SDKs",
|
"Wascana SDKs",
|
||||||
wascanaVersion,
|
wascanaVersion,
|
||||||
new IRequiredCapability[] {
|
new IRequiredCapability[] {
|
||||||
|
createRequiredCap(mingwrtIU),
|
||||||
});
|
});
|
||||||
|
|
||||||
IInstallableUnit sourceIU = createCategory(
|
IInstallableUnit sourceIU = createCategory(
|
||||||
|
@ -112,6 +135,7 @@ public class WascanaGenerator implements IApplication {
|
||||||
wascanaVersion,
|
wascanaVersion,
|
||||||
new IRequiredCapability[] {
|
new IRequiredCapability[] {
|
||||||
createRequiredCap(binutilsSrcIU),
|
createRequiredCap(binutilsSrcIU),
|
||||||
|
createRequiredCap(mingwrtSrcIU),
|
||||||
});
|
});
|
||||||
|
|
||||||
IInstallableUnit wascanaIU = createCategory(
|
IInstallableUnit wascanaIU = createCategory(
|
||||||
|
@ -124,16 +148,7 @@ public class WascanaGenerator implements IApplication {
|
||||||
createRequiredCap(sourceIU),
|
createRequiredCap(sourceIU),
|
||||||
});
|
});
|
||||||
|
|
||||||
metaRepo.addInstallableUnits(new IInstallableUnit[] {
|
metaRepo.addInstallableUnits(iuList.toArray(new IInstallableUnit[iuList.size()]));
|
||||||
binutilsIU,
|
|
||||||
binutilsSrcIU,
|
|
||||||
|
|
||||||
toolsIU,
|
|
||||||
sdksIU,
|
|
||||||
sourceIU,
|
|
||||||
|
|
||||||
wascanaIU
|
|
||||||
});
|
|
||||||
|
|
||||||
System.out.println("done");
|
System.out.println("done");
|
||||||
|
|
||||||
|
@ -183,6 +198,7 @@ public class WascanaGenerator implements IApplication {
|
||||||
lgpl21License = MetadataFactory.createLicense(
|
lgpl21License = MetadataFactory.createLicense(
|
||||||
new URI("http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"),
|
new URI("http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"),
|
||||||
Activator.getFileContents(new Path("licenses/lgpl-2.1.txt")));
|
Activator.getFileContents(new Path("licenses/lgpl-2.1.txt")));
|
||||||
|
pdLicense = MetadataFactory.createLicense(null, "This package has no copyright assignment and is placed in the Public Domain.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private InstallableUnitDescription createIUDesc(String id, String name, Version version, ILicense license) throws ProvisionException {
|
private InstallableUnitDescription createIUDesc(String id, String name, Version version, ILicense license) throws ProvisionException {
|
||||||
|
@ -217,7 +233,9 @@ public class WascanaGenerator implements IApplication {
|
||||||
ArtifactDescriptor artiDesc = new ArtifactDescriptor(artiKey);
|
ArtifactDescriptor artiDesc = new ArtifactDescriptor(artiKey);
|
||||||
artiRepo.addDescriptor(artiDesc);
|
artiRepo.addDescriptor(artiDesc);
|
||||||
iuDesc.setArtifacts(new IArtifactKey[] { artiKey });
|
iuDesc.setArtifacts(new IArtifactKey[] { artiKey });
|
||||||
return MetadataFactory.createInstallableUnit(iuDesc);
|
IInstallableUnit iu = MetadataFactory.createInstallableUnit(iuDesc);
|
||||||
|
iuList.add(iu);
|
||||||
|
return iu;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IInstallableUnit createCategory(String id, String name, Version version,
|
private IInstallableUnit createCategory(String id, String name, Version version,
|
||||||
|
@ -226,7 +244,9 @@ public class WascanaGenerator implements IApplication {
|
||||||
if (reqs != null)
|
if (reqs != null)
|
||||||
iuDesc.setRequiredCapabilities(reqs);
|
iuDesc.setRequiredCapabilities(reqs);
|
||||||
iuDesc.setProperty(IInstallableUnit.PROP_TYPE_CATEGORY, String.valueOf(true));
|
iuDesc.setProperty(IInstallableUnit.PROP_TYPE_CATEGORY, String.valueOf(true));
|
||||||
return MetadataFactory.createInstallableUnit(iuDesc);
|
IInstallableUnit iu = MetadataFactory.createInstallableUnit(iuDesc);
|
||||||
|
iuList.add(iu);
|
||||||
|
return iu;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IRequiredCapability createRequiredCap(IInstallableUnit iu) {
|
private IRequiredCapability createRequiredCap(IInstallableUnit iu) {
|
||||||
|
|
|
@ -61,7 +61,7 @@ public class Activator extends Plugin {
|
||||||
return plugin;
|
return plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
static public BundleContext getContext() {
|
public static BundleContext getContext() {
|
||||||
return plugin.getBundle().getBundleContext();
|
return plugin.getBundle().getBundleContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,8 +72,8 @@ public class Activator extends Plugin {
|
||||||
* @return the service
|
* @return the service
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <T> T getService(Class<T> clazz) {
|
public static <T> T getService(Class<T> clazz) {
|
||||||
BundleContext context = getBundle().getBundleContext();
|
BundleContext context = plugin.getBundle().getBundleContext();
|
||||||
ServiceReference ref = context.getServiceReference(clazz.getName());
|
ServiceReference ref = context.getServiceReference(clazz.getName());
|
||||||
return (ref != null) ? (T)context.getService(ref) : null;
|
return (ref != null) ? (T)context.getService(ref) : null;
|
||||||
}
|
}
|
||||||
|
@ -83,11 +83,11 @@ public class Activator extends Plugin {
|
||||||
*
|
*
|
||||||
* @param status
|
* @param status
|
||||||
*/
|
*/
|
||||||
public void log(int severity, String message, Throwable exception) {
|
public static void log(int severity, String message, Throwable exception) {
|
||||||
Platform.getLog(plugin.getBundle()).log(new Status(severity, PLUGIN_ID, message, exception));
|
Platform.getLog(plugin.getBundle()).log(new Status(severity, PLUGIN_ID, message, exception));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void log(IStatus status) {
|
public static void log(IStatus status) {
|
||||||
Platform.getLog(plugin.getBundle()).log(status);
|
Platform.getLog(plugin.getBundle()).log(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ import java.io.File;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.internal.p2.Activator;
|
||||||
import org.eclipse.core.runtime.IStatus;
|
import org.eclipse.core.runtime.IStatus;
|
||||||
import org.eclipse.core.runtime.Status;
|
import org.eclipse.core.runtime.Status;
|
||||||
import org.eclipse.equinox.internal.p2.engine.Profile;
|
import org.eclipse.equinox.internal.p2.engine.Profile;
|
||||||
|
@ -38,12 +39,20 @@ public class CleanupUntarAction extends ProvisioningAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IStatus execute(Map parameters) {
|
public IStatus execute(Map parameters) {
|
||||||
return cleanup(parameters);
|
try {
|
||||||
|
return cleanup(parameters);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getLocalizedMessage(), e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IStatus undo(Map parameters) {
|
public IStatus undo(Map parameters) {
|
||||||
return UntarAction.untar(parameters);
|
try {
|
||||||
|
return UntarAction.untar(parameters);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getLocalizedMessage(), e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IStatus cleanup(Map parameters) {
|
public static IStatus cleanup(Map parameters) {
|
||||||
|
|
|
@ -13,7 +13,6 @@ package org.eclipse.cdt.internal.p2.touchpoint.natives.actions;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -22,6 +21,7 @@ import java.util.zip.GZIPInputStream;
|
||||||
import org.apache.tools.bzip2.CBZip2InputStream;
|
import org.apache.tools.bzip2.CBZip2InputStream;
|
||||||
import org.apache.tools.tar.TarEntry;
|
import org.apache.tools.tar.TarEntry;
|
||||||
import org.apache.tools.tar.TarInputStream;
|
import org.apache.tools.tar.TarInputStream;
|
||||||
|
import org.eclipse.cdt.internal.p2.Activator;
|
||||||
import org.eclipse.core.runtime.IStatus;
|
import org.eclipse.core.runtime.IStatus;
|
||||||
import org.eclipse.core.runtime.Status;
|
import org.eclipse.core.runtime.Status;
|
||||||
import org.eclipse.equinox.internal.p2.engine.Profile;
|
import org.eclipse.equinox.internal.p2.engine.Profile;
|
||||||
|
@ -59,15 +59,23 @@ public class UntarAction extends ProvisioningAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IStatus execute(Map parameters) {
|
public IStatus execute(Map parameters) {
|
||||||
return untar(parameters);
|
try {
|
||||||
|
return untar(parameters);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getLocalizedMessage(), e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IStatus undo(Map parameters) {
|
public IStatus undo(Map parameters) {
|
||||||
return CleanupUntarAction.cleanup(parameters);
|
try {
|
||||||
|
return CleanupUntarAction.cleanup(parameters);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getLocalizedMessage(), e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IStatus untar(Map parameters) {
|
public static IStatus untar(Map parameters) throws Exception {
|
||||||
String source = (String)parameters.get(ActionConstants.PARM_SOURCE);
|
String source = (String)parameters.get(ActionConstants.PARM_SOURCE);
|
||||||
if (source == null)
|
if (source == null)
|
||||||
return Util.createError(NLS.bind(Messages.param_not_set, ActionConstants.PARM_SOURCE, ACTION_NAME));
|
return Util.createError(NLS.bind(Messages.param_not_set, ActionConstants.PARM_SOURCE, ACTION_NAME));
|
||||||
|
@ -120,7 +128,7 @@ public class UntarAction extends ProvisioningAction {
|
||||||
return Status.OK_STATUS;
|
return Status.OK_STATUS;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static File[] untar(String source, String destination, Compression compression) {
|
private static File[] untar(String source, String destination, Compression compression) throws Exception {
|
||||||
File zipFile = new File(source);
|
File zipFile = new File(source);
|
||||||
if (!zipFile.exists()) {
|
if (!zipFile.exists()) {
|
||||||
Util.log(UnzipAction.class.getName() + " the files to be unzipped is not here"); //$NON-NLS-1$
|
Util.log(UnzipAction.class.getName() + " the files to be unzipped is not here"); //$NON-NLS-1$
|
||||||
|
@ -128,53 +136,47 @@ public class UntarAction extends ProvisioningAction {
|
||||||
|
|
||||||
File target = new File(destination);
|
File target = new File(destination);
|
||||||
|
|
||||||
try {
|
FileInputStream fileIn = new FileInputStream(zipFile);
|
||||||
FileInputStream fileIn = new FileInputStream(zipFile);
|
InputStream compIn = fileIn;
|
||||||
InputStream compIn = fileIn;
|
if (compression.equals(Compression.gz))
|
||||||
if (compression.equals(Compression.gz))
|
compIn = new GZIPInputStream(fileIn);
|
||||||
compIn = new GZIPInputStream(fileIn);
|
else if (compression.equals(Compression.bz2)) {
|
||||||
else if (compression.equals(Compression.bz2)) {
|
// Skip the magic bytes first
|
||||||
// Skip the magic bytes first
|
fileIn.read(new byte[2]);
|
||||||
fileIn.read(new byte[2]);
|
compIn = new CBZip2InputStream(fileIn);
|
||||||
compIn = new CBZip2InputStream(fileIn);
|
|
||||||
}
|
|
||||||
|
|
||||||
ArrayList<File> fileList = new ArrayList<File>();
|
|
||||||
TarInputStream tarIn = new TarInputStream(compIn);
|
|
||||||
for (TarEntry tarEntry = tarIn.getNextEntry(); tarEntry != null; tarEntry = tarIn.getNextEntry()) {
|
|
||||||
File outFile = new File(target, tarEntry.getName());
|
|
||||||
if (tarEntry.isDirectory()) {
|
|
||||||
outFile.mkdirs();
|
|
||||||
} else {
|
|
||||||
if (outFile.exists())
|
|
||||||
outFile.delete();
|
|
||||||
else
|
|
||||||
outFile.getParentFile().mkdirs();
|
|
||||||
FileOutputStream outStream = new FileOutputStream(outFile);
|
|
||||||
tarIn.copyEntryContents(outStream);
|
|
||||||
outStream.close();
|
|
||||||
|
|
||||||
// Set last modified time from the tar entry
|
|
||||||
long lastModified = tarEntry.getModTime().getTime();
|
|
||||||
outFile.setLastModified(lastModified);
|
|
||||||
|
|
||||||
// Set the executable bits from the tar entry
|
|
||||||
// we let the umask determine the r/w
|
|
||||||
int mode = tarEntry.getMode();
|
|
||||||
boolean exec = (mode & 0x111) != 0;
|
|
||||||
boolean execOwner = (mode & 0x11) == 0;
|
|
||||||
// outFile.setExecutable(exec, execOwner);
|
|
||||||
|
|
||||||
fileList.add(outFile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tarIn.close();
|
|
||||||
return fileList.toArray(new File[fileList.size()]);
|
|
||||||
} catch (IOException e) {
|
|
||||||
Util.log(UnzipAction.class.getName() + " error unzipping zipfile: " + zipFile.getAbsolutePath() + " destination: " + destination); //$NON-NLS-1$ //$NON-NLS-2$
|
|
||||||
Util.log(e.getLocalizedMessage());
|
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
|
ArrayList<File> fileList = new ArrayList<File>();
|
||||||
|
TarInputStream tarIn = new TarInputStream(compIn);
|
||||||
|
for (TarEntry tarEntry = tarIn.getNextEntry(); tarEntry != null; tarEntry = tarIn.getNextEntry()) {
|
||||||
|
File outFile = new File(target, tarEntry.getName());
|
||||||
|
if (tarEntry.isDirectory()) {
|
||||||
|
outFile.mkdirs();
|
||||||
|
} else {
|
||||||
|
if (outFile.exists())
|
||||||
|
outFile.delete();
|
||||||
|
else
|
||||||
|
outFile.getParentFile().mkdirs();
|
||||||
|
FileOutputStream outStream = new FileOutputStream(outFile);
|
||||||
|
tarIn.copyEntryContents(outStream);
|
||||||
|
outStream.close();
|
||||||
|
|
||||||
|
// Set last modified time from the tar entry
|
||||||
|
long lastModified = tarEntry.getModTime().getTime();
|
||||||
|
outFile.setLastModified(lastModified);
|
||||||
|
|
||||||
|
// Set the executable bits from the tar entry
|
||||||
|
// we let the umask determine the r/w
|
||||||
|
int mode = tarEntry.getMode();
|
||||||
|
boolean exec = (mode & 0x111) != 0;
|
||||||
|
boolean execOwner = (mode & 0x11) == 0;
|
||||||
|
// outFile.setExecutable(exec, execOwner);
|
||||||
|
|
||||||
|
fileList.add(outFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tarIn.close();
|
||||||
|
return fileList.toArray(new File[fileList.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue