1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 22:52:11 +02:00

Working on MinGW generator.

This commit is contained in:
Doug Schaefer 2008-12-05 21:42:26 +00:00
parent c595aa010e
commit c5b403a1ee
2 changed files with 111 additions and 37 deletions

View file

@ -3,7 +3,8 @@
id="org.eclipse.cdt.p2"
label="Eclipse SDK p2 support feature"
version="1.0.0"
provider-name="Eclipse.org">
provider-name="Eclipse.org"
plugin="org.eclipse.cdt.p2">
<description url="http://www.example.com/description">
[Enter Feature Description here.]

View file

@ -44,7 +44,7 @@ import org.osgi.framework.Version;
*/
public class MinGWGenerator implements IApplication {
private static final String REPO_NAME = "MinGW";
private static final String REPO_NAME = "Wascana";
IMetadataRepository metaRepo;
IArtifactRepository artiRepo;
@ -55,36 +55,126 @@ public class MinGWGenerator implements IApplication {
Activator.getDefault().getBundle("org.eclipse.equinox.p2.exemplarysetup").start(Bundle.START_TRANSIENT); //$NON-NLS-1$
File repoDir = new File("C:\\Wascana\\repo");
new File(repoDir, "artifacts.xml").delete();
new File(repoDir, "content.xml").delete();
URL repoLocation = new File("C:\\Wascana\\repo").toURI().toURL();
IMetadataRepositoryManager metaRepoMgr = Activator.getDefault().getService(IMetadataRepositoryManager.class);
IArtifactRepositoryManager artiRepoMgr = Activator.getDefault().getService(IArtifactRepositoryManager.class);
metaRepo = metaRepoMgr.createRepository(repoLocation, REPO_NAME, IMetadataRepositoryManager.TYPE_SIMPLE_REPOSITORY, null);
artiRepo = artiRepoMgr.createRepository(repoLocation, REPO_NAME, IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY, null);
IInstallableUnit binutilsIU = createBinutils();
Version wascanaVersion = new Version("1.0.0");
String mingwSubdir = "mingw";
// toolchain
InstallableUnitDescription mingwToolchainDesc = createIUDesc(
"wascana.mingw",
new Version(1, 0, 0),
"MinGW Toolchain");
// MinGW Runtime
String runtimeId = "wascana.mingw.mingwrt";
Version runtimeVersion = new Version("4.15.1");
InstallableUnitDescription runtimeIUDesc = createIUDesc(runtimeId, runtimeVersion, "MinGW Runtime");
IInstallableUnit runtimeIU = createIU(runtimeIUDesc, runtimeId, runtimeVersion,
"http://downloads.sourceforge.net/mingw/mingwrt-3.15.1-mingw32.tar.gz",
mingwSubdir,
InstallArtifactRepository.GZIP_COMPRESSON);
// w32api
String w32apiId = "wascana.mingw.w32api";
Version w32apiVersion = new Version("3.12");
InstallableUnitDescription w32apiIUDesc = createIUDesc(w32apiId, w32apiVersion, "MinGW Windows SDK");
IInstallableUnit w32apiIU = createIU(w32apiIUDesc, w32apiId, w32apiVersion,
"http://downloads.sourceforge.net/mingw/w32api-3.12-mingw32-dev.tar.gz",
mingwSubdir,
InstallArtifactRepository.GZIP_COMPRESSON);
// binutils
String binutilsId = "wascana.mingw.binutils";
Version binutilsVersion = new Version("2.18.50.20080109-2");
InstallableUnitDescription binutilsIUDesc = createIUDesc(binutilsId, binutilsVersion, "MinGW binutils");
IInstallableUnit binutilsIU = createIU(binutilsIUDesc, binutilsId, binutilsVersion,
"http://downloads.sourceforge.net/mingw/binutils-2.18.50-20080109-2.tar.gz",
mingwSubdir,
InstallArtifactRepository.GZIP_COMPRESSON);
// gcc-4 core
String gcc4coreId = "wascana.mingw.gcc4.core";
Version gcc4Version = new Version("4.3.2.tdm-1");
InstallableUnitDescription gcc4coreIUDesc = createIUDesc(gcc4coreId, gcc4Version, "MinGW gcc-4 core");
RequiredCapability[] gcc4coreReqs = new RequiredCapability[] {
MetadataFactory.createRequiredCapability(
IInstallableUnit.NAMESPACE_IU_ID,
runtimeIU.getId(), new VersionRange(null), null, false, false),
MetadataFactory.createRequiredCapability(
IInstallableUnit.NAMESPACE_IU_ID,
w32apiIU.getId(), new VersionRange(null), null, false, false),
MetadataFactory.createRequiredCapability(
IInstallableUnit.NAMESPACE_IU_ID,
binutilsIU.getId(), new VersionRange(null), null, false, false),
};
gcc4coreIUDesc.setRequiredCapabilities(gcc4coreReqs);
IInstallableUnit gcc4coreIU = createIU(gcc4coreIUDesc, gcc4coreId, gcc4Version,
"http://downloads.sourceforge.net/tdm-gcc/gcc-4.3.2-tdm-1-core.tar.gz",
mingwSubdir,
InstallArtifactRepository.GZIP_COMPRESSON);
// gcc-4 g++
String gcc4gppId = "wascana.mingw.gcc4.g++";
InstallableUnitDescription gcc4gppIUDesc = createIUDesc(gcc4gppId, gcc4Version, "MinGW gcc-4 g++");
RequiredCapability[] gcc4gppReqs = new RequiredCapability[] {
MetadataFactory.createRequiredCapability(
IInstallableUnit.NAMESPACE_IU_ID,
gcc4coreIU.getId(), new VersionRange(gcc4Version, true, gcc4Version, true), null, false, false),
};
gcc4gppIUDesc.setRequiredCapabilities(gcc4gppReqs);
IInstallableUnit gcc4gppIU = createIU(gcc4gppIUDesc, gcc4gppId, gcc4Version,
"http://downloads.sourceforge.net/tdm-gcc/gcc-4.3.2-tdm-1-g++.tar.gz",
mingwSubdir,
InstallArtifactRepository.GZIP_COMPRESSON);
// gdb
String gdbId = "wascana.mingw.gdb";
Version gdbVersion = new Version("6.8.0.3");
InstallableUnitDescription gdbIUDesc = createIUDesc(gdbId, gdbVersion, "MinGW gdb");
IInstallableUnit gdbIU = createIU(gdbIUDesc, gdbId, gdbVersion,
"http://downloads.sourceforge.net/mingw/gdb-6.8-mingw-3.tar.bz2",
mingwSubdir,
InstallArtifactRepository.BZIP2_COMPRESSION);
// MinGW toolchain category
InstallableUnitDescription mingwToolchainDesc = createIUDesc("wascana.mingw", wascanaVersion, "MinGW Toolchain");
mingwToolchainDesc.setProperty(IInstallableUnit.PROP_TYPE_CATEGORY, Boolean.TRUE.toString());
RequiredCapability[] mingwToolchainReqs = new RequiredCapability[] {
MetadataFactory.createRequiredCapability(
IInstallableUnit.NAMESPACE_IU_ID,
binutilsIU.getId(), new VersionRange(null), null, false, false)
runtimeIU.getId(), new VersionRange(null), null, false, false),
MetadataFactory.createRequiredCapability(
IInstallableUnit.NAMESPACE_IU_ID,
w32apiIU.getId(), new VersionRange(null), null, false, false),
MetadataFactory.createRequiredCapability(
IInstallableUnit.NAMESPACE_IU_ID,
binutilsIU.getId(), new VersionRange(null), null, false, false),
MetadataFactory.createRequiredCapability(
IInstallableUnit.NAMESPACE_IU_ID,
gcc4coreIU.getId(), new VersionRange(null), null, false, false),
MetadataFactory.createRequiredCapability(
IInstallableUnit.NAMESPACE_IU_ID,
gcc4gppIU.getId(), new VersionRange(null), null, false, false),
MetadataFactory.createRequiredCapability(
IInstallableUnit.NAMESPACE_IU_ID,
gdbIU.getId(), new VersionRange(null), null, false, false),
};
mingwToolchainDesc.setRequiredCapabilities(mingwToolchainReqs);
mingwToolchainDesc.setProperty(IInstallableUnit.PROP_TYPE_CATEGORY, Boolean.TRUE.toString());
IInstallableUnit mingwToolchainIU = MetadataFactory.createInstallableUnit(mingwToolchainDesc);
metaRepo.addInstallableUnits(new IInstallableUnit[] {
runtimeIU,
w32apiIU,
binutilsIU,
// gccCoreIU,
// gccGppIU,
gcc4coreIU,
gcc4gppIU,
gdbIU,
mingwToolchainIU,
// wascanaIU
});
System.out.println("done");
@ -96,23 +186,6 @@ public class MinGWGenerator implements IApplication {
public void stop() {
}
private IInstallableUnit createBinutils() throws ProvisionException, MalformedURLException {
String binutilsId = "wascana.mingw.binutils";
Version binutilsVersion = new Version("2.18.50.20080109-2");
InstallableUnitDescription binutilsDesc = createIUDesc(
binutilsId, binutilsVersion, "MinGW binutils");
binutilsDesc.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
IArtifactKey binutilsArti = addRemoteArtifact(
binutilsDesc,
binutilsId,
binutilsVersion,
new File("C:\\Wascana\\tars\\binutils-2.18.50-20080109-2.tar.gz").toURI().toURL(),
"mingw",
InstallArtifactRepository.GZIP_COMPRESSON);
binutilsDesc.setArtifacts(new IArtifactKey[] { binutilsArti });
return MetadataFactory.createInstallableUnit(binutilsDesc);
}
private InstallableUnitDescription createIUDesc(String id, Version version, String name) throws ProvisionException {
InstallableUnitDescription iuDesc = new MetadataFactory.InstallableUnitDescription();
iuDesc.setId(id);
@ -125,9 +198,8 @@ public class MinGWGenerator implements IApplication {
return iuDesc;
}
private IArtifactKey addRemoteArtifact(
InstallableUnitDescription iuDesc,
String id, Version version, URL location, String subdir, String compression) throws ProvisionException {
private IInstallableUnit createIU(InstallableUnitDescription iuDesc, String id, Version version, String location, String subdir, String compression) throws ProvisionException {
iuDesc.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
iuDesc.setTouchpointType(SDKTouchpoint.TOUCHPOINT_TYPE);
Map<String, String> tpdata = new HashMap<String, String>();
tpdata.put("uninstall", "uninstall()");
@ -136,9 +208,10 @@ public class MinGWGenerator implements IApplication {
ArtifactDescriptor artiDesc = new ArtifactDescriptor(artiKey);
artiDesc.setProperty(InstallArtifactRepository.SUB_DIR, subdir);
artiDesc.setProperty(InstallArtifactRepository.COMPRESSION, compression);
artiDesc.setRepositoryProperty("artifact.reference", location.toString());
artiDesc.setRepositoryProperty("artifact.reference", location);
artiRepo.addDescriptor(artiDesc);
return artiKey;
iuDesc.setArtifacts(new IArtifactKey[] { artiKey });
return MetadataFactory.createInstallableUnit(iuDesc);
}
}