Skip to content

Commit

Permalink
Disable P2 mirror lists by default because they are unstable
Browse files Browse the repository at this point in the history
  • Loading branch information
laeubi committed Dec 18, 2023
1 parent f1bd2e2 commit f3a481d
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@
import org.eclipse.equinox.p2.core.spi.IAgentServiceFactory;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
import org.eclipse.tycho.IRepositoryIdManager;
import org.eclipse.tycho.version.TychoVersion;

@Component(role = IAgentServiceFactory.class, hint = "org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager")
public class RemoteArtifactRepositoryManagerAgentFactory implements IAgentServiceFactory {

@Requirement
@Requirement
Logger logger;

@Requirement
Expand All @@ -33,26 +34,25 @@ public class RemoteArtifactRepositoryManagerAgentFactory implements IAgentServic
@Requirement
MavenAuthenticator authenticator;

@Override
public Object createService(IProvisioningAgent agent) {
IArtifactRepositoryManager plainRepoManager = (IArtifactRepositoryManager) new ArtifactRepositoryComponent()
.createService(agent);
if (getDisableP2MirrorsConfiguration()) {
plainRepoManager = new P2MirrorDisablingArtifactRepositoryManager(plainRepoManager,
logger);
}
@Override
public Object createService(IProvisioningAgent agent) {
IArtifactRepositoryManager plainRepoManager = (IArtifactRepositoryManager) new ArtifactRepositoryComponent()
.createService(agent);
if (getDisableP2MirrorsConfiguration()) {
plainRepoManager = new P2MirrorDisablingArtifactRepositoryManager(plainRepoManager, logger);
}
return new RemoteArtifactRepositoryManager(plainRepoManager, repositoryIdManager, authenticator);
}
}

private boolean getDisableP2MirrorsConfiguration() {
String key = "tycho.disableP2Mirrors";
private boolean getDisableP2MirrorsConfiguration() {
String key = "tycho.disableP2Mirrors";
String value = System.getProperty(key);

boolean disableP2Mirrors = Boolean.parseBoolean(value);
if (disableP2Mirrors && logger.isDebugEnabled()) {
String message = key + "=" + value + " -> ignoring mirrors specified in p2 artifact repositories";
logger.debug(message);
}
return disableP2Mirrors;
}
if (value != null) {
logger.info("Using " + key
+ " to disable P2 mirrors is deprecated, use the property eclipse.p2.mirrors instead, see https://tycho.eclipseprojects.io/doc/"
+ TychoVersion.getTychoVersion() + "/SystemProperties.html for details.");
return Boolean.parseBoolean(value);
}
return false;
}
}
9 changes: 9 additions & 0 deletions src/site/markdown/SystemProperties.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,12 @@ Name | Value | Default | Documentation
--- | --- | ---
tycho.comparator.showDiff | true / false | false | If set to true if text-like files show a unified diff of possible differences in files
tycho.comparator.threshold | bytes | 5242880 (~5MB) | gives the number of bytes for content to be compared semantically, larger files will only be compared byte-by-byte

### P2

These properties control the behaviour of P2 used by Tycho

Name | Value | Default | Documentation
--- | --- | ---
eclipse.p2.mirrors | true / false | true | Each p2 site can define a list of artifact repository mirrors, this controls if P2 mirrors should be used. This is independent from configuring mirrors in the maven configuration to be used by Tycho!

Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,10 @@ public void testPropertyPropagation() throws Exception {
assertTrue(properties.containsKey(TychoConstants.PROP_PGP_SIGNATURES)
&& !properties.get(TychoConstants.PROP_PGP_SIGNATURES).isBlank());
}

@Override
protected boolean isDisableMirrors() {
// we want to test mirror properties...
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,9 @@ protected Verifier getVerifier(String test, boolean setTargetPlatform, File user

Verifier verifier = new Verifier(testDir.getAbsolutePath());
verifier.setForkJvm(isForked());
if (isDisableMirrors()) {
verifier.setSystemProperty("eclipse.p2.mirrors", "false");
}
String debug = System.getProperty("tycho.mvnDebug");
if (debug != null) {
System.out.println("Preparing to execute Maven in debug mode");
Expand Down Expand Up @@ -145,6 +148,14 @@ protected Verifier getVerifier(String test, boolean setTargetPlatform, File user
return verifier;

}

/**
* can be overridden by subclass to explicitly enable mirrors, by default they are disabled.
*
*/
protected boolean isDisableMirrors() {
return true;
}

protected boolean isForked() {
return true;
Expand Down

0 comments on commit f3a481d

Please sign in to comment.