gump-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bode...@apache.org
Subject svn commit: r1661086 - in /gump/live/python/gump: actor/mvnrepoproxy/proxycontrol.py core/build/gradle.py
Date Fri, 20 Feb 2015 10:52:18 GMT
Author: bodewig
Date: Fri Feb 20 10:52:17 2015
New Revision: 1661086

URL: http://svn.apache.org/r1661086
Log:
take the "use latest SNAPSHOT build" approach

Modified:
    gump/live/python/gump/actor/mvnrepoproxy/proxycontrol.py
    gump/live/python/gump/core/build/gradle.py

Modified: gump/live/python/gump/actor/mvnrepoproxy/proxycontrol.py
URL: http://svn.apache.org/viewvc/gump/live/python/gump/actor/mvnrepoproxy/proxycontrol.py?rev=1661086&r1=1661085&r2=1661086&view=diff
==============================================================================
--- gump/live/python/gump/actor/mvnrepoproxy/proxycontrol.py (original)
+++ gump/live/python/gump/actor/mvnrepoproxy/proxycontrol.py Fri Feb 20 10:52:17 2015
@@ -26,6 +26,21 @@ from gump.core.model.output import OUTPU
 from gump.core.run.actor import AbstractRunActor, FinalizeRunEvent, \
     InitializeRunEvent
 
+# list of tuples listing all snapshot repositories we want to mirror
+#   each tuple consists of a name, the path prefix that identifies the
+#   repository and the real repository URL without that prefix
+#   (properly escaped to be used in a Java .properties file).
+# Since different mvn projects use different names for the same
+#  repository it is possible to have multiple listings for a single
+#  repo.  Each name has to be unique as has to be the combination of
+#  prefix and URL (i.e. each prefix must uniquely map to a real URL)
+SNAPSHOT_PROXIES = [
+    ('apache.snapshots', '/repo/m2-snapshot-repository',
+     'http\://people.apache.org'),
+    ('sonatype-nexus-snapshots', '/content/repositories/snapshots',
+     'https\://oss.sonatype.org')
+    ]
+
 # list of tuples listing all repositories we want to mirror
 #   each tuple consists of a name, the path prefix that identifies the
 #   repository and the real repository URL without that prefix
@@ -36,12 +51,10 @@ from gump.core.run.actor import Abstract
 #  prefix and URL (i.e. each prefix must uniquely map to a real URL)
 PROXY_CONFIG = [
     ('central', '/maven2', 'http\://repo1.maven.org'),
-    ('apache.snapshots', '/repo/m2-snapshot-repository',
-     'http\://people.apache.org'),
+    SNAPSHOT_PROXIES[0],
     ('maven2-repository.dev.java.net', '/maven/2', 'http\://download.java.net'),
     ('m2.dev.java.net', '/maven/2', 'http\://download.java.net'),
-    ('sonatype-nexus-snapshots', '/content/repositories/snapshots',
-     'https\://oss.sonatype.org')
+    SNAPSHOT_PROXIES[1]
     ]
 
 class MvnRepositoryProxyController(AbstractRunActor):

Modified: gump/live/python/gump/core/build/gradle.py
URL: http://svn.apache.org/viewvc/gump/live/python/gump/core/build/gradle.py?rev=1661086&r1=1661085&r2=1661086&view=diff
==============================================================================
--- gump/live/python/gump/core/build/gradle.py (original)
+++ gump/live/python/gump/core/build/gradle.py Fri Feb 20 10:52:17 2015
@@ -19,7 +19,7 @@
 import os.path
 
 from gump import log
-from gump.actor.mvnrepoproxy.proxycontrol import PROXY_CONFIG
+from gump.actor.mvnrepoproxy.proxycontrol import SNAPSHOT_PROXIES
 from gump.core.build.mvn import local_mvn_repo
 from gump.core.model.workspace import CommandWorkItem, \
     REASON_BUILD_FAILED, REASON_BUILD_TIMEDOUT, REASON_PREBUILD_FAILED, \
@@ -37,9 +37,12 @@ from time import strftime
 # Classes
 ###############################################################################
 
-def record_proxy(init_file, port, prefix, uri):
-    init_file.write("'%s%s': 'http://localhost:%s%s',\n"\
-                    % (uri.replace('\\', ''), prefix, port, prefix))
+def record_proxy(init_file, name, prefix, uri):
+    init_file.write("""
+                maven {
+                    name "%s"
+                    url "%s%s"
+                }""" % (name, uri.replace('\\', ''), prefix))
 
 def locateGradleProjectFile(project):
     """Return Gradle project file location"""
@@ -225,7 +228,7 @@ class GradleBuilder(RunSpecific):
 
         init_file = open(init_script, 'w')
 
-        init_file.write(("""/*
+        init_file.write("""/*
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
@@ -253,60 +256,58 @@ class GradleBuilder(RunSpecific):
 #
 # DO NOT EDIT  DO NOT EDIT  DO NOT EDIT  DO NOT EDIT  DO NOT EDIT  DO NOT EDIT  DO NOT EDIT
 */
-import org.gradle.api.internal.artifacts.dependencies.DefaultDependencyArtifact
+import org.gradle.api.internal.artifacts.dependencies.AbstractExternalModuleDependency
 
-apply plugin:MavenRepoProxyPlugin
+apply plugin:UseLatestSnapshots
 
-class MavenRepoProxyPlugin implements Plugin<Gradle> {
-
-    private static final def REPOS_MAP = [
-""")
-                    % (project.getName(), strftime('%Y-%m-%d %H:%M:%S')))
-        if not self.run.getEnvironment().noMvnRepoProxy:
-            for (_name, prefix, url) in PROXY_CONFIG:
-                record_proxy(init_file, self.run.getWorkspace().mvnRepoProxyPort,
-                             prefix, url)
-        init_file.write("""
-    ]
+class UseLatestSnapshots implements Plugin<Gradle> {
 
     void apply(Gradle gradle) {
         gradle.allprojects{ project ->
-            project.repositories {
-                all { ArtifactRepository repo ->
-                    if (repo instanceof MavenArtifactRepository) {
-                        def newUrl = REPOS_MAP.get(stripTrailingSlash(repo.url)) ?: REPOS_MAP.get(swapTLS(repo.url))
-                        if (newUrl) {
-                            repo.url = newUrl
-                        }
-                    }
-                }
-            }
+            project.repositories {""" % (project.getName(), strftime('%Y-%m-%d %H:%M:%S')))
+        for (name, prefix, url) in SNAPSHOT_PROXIES:
+            record_proxy(init_file, name, prefix, url)
+        init_file.write("""}
             project.configurations {
                 all { config ->
-                    config.allDependencies.all { dep ->
-                        if (dep instanceof ModuleDependency && dep.artifacts.isEmpty())
{
-                            dep.addArtifact(new DefaultDependencyArtifact(dep.name, 'jar',
'jar', null, null))
+                    config.allDependencies.whenObjectAdded {
+                        if (it instanceof ExternalModuleDependency
+                            && !(it instanceof GumpExternalModuleDependency)) {
+                            config.dependencies.add(new GumpExternalModuleDependency(it))
+                            config.dependencies.remove it
                         }
                     }
                 }
             }
         }
     }
+}
 
-    def swapTLS(uri) {
-        swapScheme(uri, 'https', 'http') ?: swapScheme(uri, 'http', 'https')
+class GumpExternalModuleDependency extends AbstractExternalModuleDependency {
+    GumpExternalModuleDependency(ExternalModuleDependency dep) {
+        super(dep.group, dep.name, "latest.integration", dep.configuration)
     }
+    @Override
+    public boolean contentEquals(Dependency dependency) {
+        if (this == dependency) {
+            return true;
+        }
+        if (dependency == null || getClass() != dependency.getClass()) {
+            return false;
+        }
+
+        ExternalModuleDependency that = (ExternalModuleDependency) dependency;
+        return isContentEqualsFor(that);
 
-    def swapScheme(uri, fromScheme, toScheme) {
-        uri.scheme == fromScheme
-            ? stripTrailingSlash(new URI(toScheme, uri.schemeSpecificPart, uri.fragment))
-            : null;
     }
 
-    def stripTrailingSlash(uri) {
-        def s = uri.toString()
-        s.endsWith('/') ? s.substring(0, s.length() - 1) : s
+    @Override
+    public GumpExternalModuleDependency copy() {
+        GumpExternalModuleDependency copiedModuleDependency = new GumpExternalModuleDependency(this);
+        copyTo(copiedModuleDependency);
+        return copiedModuleDependency;
     }
+
 }
 """)
 



Mime
View raw message