From abe9f2a4334137857beb9080892fb9cf1bb9696e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= Date: Sun, 20 Feb 2022 07:59:21 +0100 Subject: [PATCH] Fix #665 Nested target fails if artifact is not already downloaded MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christoph Läubrich --- .../tycho/p2/target/TargetDefinitionResolver.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetDefinitionResolver.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetDefinitionResolver.java index f75da13fd1..5a544cb728 100644 --- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetDefinitionResolver.java +++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetDefinitionResolver.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2020 SAP SE and others. + * Copyright (c) 2011, 2022 SAP SE and others. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at @@ -14,6 +14,7 @@ * - [Bug 568729] Support new "Maven" Target location * - [Bug 569060] All ids of target file must be different * - [Bug 569481] Support for maven target location includeSource="true" attribute + * - [Issue #401] Support nested targets *******************************************************************************/ package org.eclipse.tycho.p2.target; @@ -133,6 +134,7 @@ TargetDefinitionContent resolveContentWithExceptions(TargetDefinition definition Map fileRepositories = new LinkedHashMap<>(); Map uriRepositories = new LinkedHashMap<>(); List mavenLocations = new ArrayList<>(); + List referencedTargetLocations = new ArrayList<>(); for (Location locationDefinition : definition.getLocations()) { if (locationDefinition instanceof InstallableUnitLocation) { InstallableUnitLocation installableUnitLocation = (InstallableUnitLocation) locationDefinition; @@ -209,6 +211,7 @@ TargetDefinitionContent resolveContentWithExceptions(TargetDefinition definition IQueryResult result = content.query(QueryUtil.ALL_UNITS, new LoggingProgressMonitor(logger)); unitResultSet.addAll(result); + referencedTargetLocations.add(content); } else { logger.warn("Target location type '" + locationDefinition.getTypeDescription() + "' is not supported"); } @@ -237,6 +240,11 @@ TargetDefinitionContent resolveContentWithExceptions(TargetDefinition definition metadataRepositories.add(mavenContent.getMetadataRepository()); artifactRepositories.add(mavenContent.getArtifactRepository()); } + //preliminary step: add all referenced targets: + for (TargetDefinitionContent referenceContent : referencedTargetLocations) { + metadataRepositories.add(referenceContent.getMetadataRepository()); + artifactRepositories.add(referenceContent.getArtifactRepository()); + } //now we can resolve the p2 sources if (installableUnitResolver != null) { //FIXME installableUnitResolver should provide Meta+Artifact repositories so we have a complete view on the target!