Skip to content

Commit

Permalink
Consider Source-Unit version when adding sources to a P2-repo
Browse files Browse the repository at this point in the history
  • Loading branch information
HannesWell committed Sep 1, 2023
1 parent eadf9b3 commit a88ddc4
Showing 1 changed file with 12 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
public class TychoMirrorApplication extends org.eclipse.tycho.p2tools.copiedfromp2.MirrorApplication {

private static final String SOURCE_SUFFIX = ".source";
private static final String FEATURE_GROUP = ".feature.group";
private final Map<String, String> extraArtifactRepositoryProperties;
private final List<RepositoryReference> repositoryReferences;
private boolean includeAllSource;
Expand Down Expand Up @@ -91,7 +92,7 @@ protected boolean isApplicable(IInstallableUnit iu, IRequirement req) {
if ((includeRequiredBundles || includeRequiredFeatures) && QueryUtil.isGroup(iu)) {
if (req instanceof IRequiredCapability capability) {
if (IInstallableUnit.NAMESPACE_IU_ID.equals(capability.getNamespace())) {
boolean isFeature = capability.getName().endsWith(".feature.group");
boolean isFeature = capability.getName().endsWith(FEATURE_GROUP);
if ((isFeature && includeRequiredFeatures) || (!isFeature && includeRequiredBundles)) {
if (!includeOptionalDependencies) {
if (req.getMin() == 0) {
Expand Down Expand Up @@ -130,19 +131,21 @@ public IQueryable<IInstallableUnit> slice(IInstallableUnit[] ius, IProgressMonit
if (includeAllSource && targetPlatform != null) {
Set<IInstallableUnit> collected = slice.query(QueryUtil.ALL_UNITS, null).toSet();
Set<IInstallableUnit> result = new HashSet<>(collected);
Map<String, IInstallableUnit> sourceIus = new HashMap<>();
Map<String, List<IInstallableUnit>> sourceIus = new HashMap<>();
targetPlatform.getMetadataRepository().query(QueryUtil.ALL_UNITS, null).forEach(iu -> {
if (iu.getId().endsWith(SOURCE_SUFFIX)) {
sourceIus.put(iu.getId(), iu);
sourceIus.computeIfAbsent(iu.getId(), i -> new ArrayList<>()).add(iu);
}
});
for (IInstallableUnit iu : collected) {
String sourceId = iu.getId().endsWith(".feature.group")
? iu.getId().replaceAll(".feature.group", SOURCE_SUFFIX)
: iu.getId() + SOURCE_SUFFIX;
IInstallableUnit sourceUnit = sourceIus.get(sourceId);
if (sourceUnit != null) {
result.add(sourceUnit);
String id = iu.getId();
String sourceId = id.endsWith(FEATURE_GROUP)
? id.substring(id.length() - FEATURE_GROUP.length()) + SOURCE_SUFFIX
: id + SOURCE_SUFFIX;
List<IInstallableUnit> sourceUnits = sourceIus.get(sourceId);
if (sourceUnits != null) {
sourceUnits.stream().filter(su -> su.getVersion().equals(iu.getVersion())) //
.findFirst().ifPresent(result::add);
}
}
return new CollectionResult<>(result);
Expand Down

0 comments on commit a88ddc4

Please sign in to comment.