use of org.eclipse.tycho.p2.tools.DestinationRepositoryDescriptor in project tycho by eclipse.
the class MirrorApplicationServiceImpl method mirrorReactor.
@Override
public void mirrorReactor(RepositoryReferences sources, DestinationRepositoryDescriptor destination, Collection<DependencySeed> projectSeeds, BuildContext context, boolean includeAllDependencies, boolean includePacked, Map<String, String> filterProperties) throws FacadeException {
IProvisioningAgent agent = Activator.createProvisioningAgent(context.getTargetDirectory());
try {
final MirrorApplication mirrorApp = createMirrorApplication(sources, destination, agent, includePacked);
// mirror scope: seed units...
mirrorApp.setSourceIUs(toInstallableUnitList(projectSeeds, mirrorApp.getCompositeMetadataRepository(), sources));
// TODO the p2 mirror tool should support mirroring multiple environments at once
for (TargetEnvironment environment : context.getEnvironments()) {
SlicingOptions options = new SlicingOptions();
options.considerStrictDependencyOnly(!includeAllDependencies);
Map<String, String> filter = options.getFilter();
addFilterForFeatureJARs(filter);
if (filterProperties != null) {
filter.putAll(filterProperties);
}
filter.putAll(environment.toFilterProperties());
mirrorApp.setSlicingOptions(options);
try {
LogListener logListener = new LogListener(mavenContext.getLogger());
mirrorApp.setLog(logListener);
IStatus returnStatus = mirrorApp.run(null);
checkStatus(returnStatus, false);
logListener.showHelpForLoggedMessages();
} catch (ProvisionException e) {
throw new FacadeException(MIRROR_FAILURE_MESSAGE + ": " + StatusTool.collectProblems(e.getStatus()), e);
}
}
recreateArtifactRepository(destination);
xzCompress(destination);
} finally {
agent.stop();
}
}
use of org.eclipse.tycho.p2.tools.DestinationRepositoryDescriptor in project tycho by eclipse.
the class MirrorApplicationServiceTest method initTestContext.
@Before
public void initTestContext() throws Exception {
destinationRepo = new DestinationRepositoryDescriptor(tempFolder.newFolder("dest"), DEFAULT_NAME);
File projectFolder = tempFolder.getRoot();
ReactorProjectIdentities currentProject = new ReactorProjectIdentitiesStub(projectFolder);
context = new BuildContext(currentProject, DEFAULT_QUALIFIER, DEFAULT_ENVIRONMENTS);
subject = new MirrorApplicationServiceImpl();
MavenContext mavenContext = new MavenContextImpl(null, logVerifier.getLogger());
subject.setMavenContext(mavenContext);
}
use of org.eclipse.tycho.p2.tools.DestinationRepositoryDescriptor in project tycho by eclipse.
the class MirrorStandaloneTest method initTestContext.
@Before
public void initTestContext() throws Exception {
destinationRepo = new DestinationRepositoryDescriptor(tempFolder.newFolder("dest"), DEFAULT_NAME);
subject = new MirrorApplicationServiceImpl();
MavenContext mavenContext = new MavenContextImpl(null, logVerifier.getLogger());
subject.setMavenContext(mavenContext);
targetFolder = new BuildOutputDirectory(tempFolder.getRoot());
}
use of org.eclipse.tycho.p2.tools.DestinationRepositoryDescriptor in project tycho by eclipse.
the class AssembleRepositoryMojo method execute.
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
try {
File destination = getAssemblyRepositoryLocation();
destination.mkdirs();
copyResources(destination);
Collection<DependencySeed> projectSeeds = TychoProjectUtils.getDependencySeeds(getProject());
if (projectSeeds.size() == 0) {
throw new MojoFailureException("No content specified for p2 repository");
}
RepositoryReferences sources = getVisibleRepositories();
TargetPlatformConfiguration configuration = TychoProjectUtils.getTargetPlatformConfiguration(getProject());
MirrorApplicationService mirrorApp = p2.getService(MirrorApplicationService.class);
DestinationRepositoryDescriptor destinationRepoDescriptor = new DestinationRepositoryDescriptor(destination, repositoryName, compress, xzCompress, keepNonXzIndexFiles, !createArtifactRepository, true);
mirrorApp.mirrorReactor(sources, destinationRepoDescriptor, projectSeeds, getBuildContext(), includeAllDependencies, configuration.isIncludePackedArtifacts(), profileProperties);
} catch (FacadeException e) {
throw new MojoExecutionException("Could not assemble p2 repository", e);
}
}
Aggregations