You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by dc...@apache.org on 2021/04/07 18:15:21 UTC

[cassandra] branch trunk updated: When behind a firewall trunk is not buildable, need to allow overriding URLs

This is an automated email from the ASF dual-hosted git repository.

dcapwell pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 51e762c  When behind a firewall trunk is not buildable, need to allow overriding URLs
51e762c is described below

commit 51e762c5dbe63ac5bdd853945ce6462772e59820
Author: David Capwell <dc...@apache.org>
AuthorDate: Wed Apr 7 11:12:37 2021 -0700

    When behind a firewall trunk is not buildable, need to allow overriding URLs
    
    patch by David Capwell; reviewed by Brandon Williams, Jon Meredith, Michael Semb Wever for CASSANDRA-16563
---
 .build/build-resolver.xml | 144 ++++++++++++++++++++++++++++------------------
 CHANGES.txt               |   1 +
 2 files changed, 88 insertions(+), 57 deletions(-)

diff --git a/.build/build-resolver.xml b/.build/build-resolver.xml
index 2a36306..e71fd54 100644
--- a/.build/build-resolver.xml
+++ b/.build/build-resolver.xml
@@ -30,8 +30,13 @@
         <available file="${resolver-ant-tasks.local}" />
     </condition>
 
-    <!-- version of lib/ downloads -->
+    <property name="artifact.python.pypi" value="https://files.pythonhosted.org/packages" />
+    <property name="artifact.github.release" value="https://github.com" />
+
+    <!-- some artifacts are fetched from github as blobs; these are all in the cassandra project, but in an older commit -->
     <property name="lib.download.sha" value="1371883db3d8bf7d7c54e0baaca89c6c2d2a5abe"/>
+    <property name="lib.download.base.url" value="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}" />
+    <property name="lib.download.url.postfix" value="" />
 
     <!-- jstackunit is not in maven central -->
     <property name="jstackunit.local" value="${user.home}/.m2/repository/org/krummas/junit/jstackjunit/0.0.1/jstackjunit-0.0.1.jar"/>
@@ -56,7 +61,7 @@
     <target name="_jstackunit_download" unless="jstackunit.jar.exists" description="Fetch jstackunit">
         <echo>Downloading jstackunit...</echo>
         <mkdir dir="${user.home}/.m2/repository/org/krummas/junit/jstackjunit/0.0.1" />
-        <get src="https://github.com/krummas/jstackjunit/releases/download/v0.0.1/jstackjunit-0.0.1.jar" dest="${jstackunit.local}" usetimestamp="true" quiet="true"/>
+        <get src="${artifact.github.release}/krummas/jstackjunit/releases/download/v0.0.1/jstackjunit-0.0.1.jar" dest="${jstackunit.local}" usetimestamp="true" quiet="true"/>
     </target>
 
     <target name="resolver-init" depends="init,_resolver_download" unless="resolver-ant-tasks.initialized" description="Initialize Resolver ANT Tasks">
@@ -67,44 +72,72 @@
             <remoterepo id="resolver-apache" url="${artifact.remoteRepository.apache}"/>
         </resolver:remoterepos>
 
-        <resolver:resolve>
-            <remoterepos refid="all"/>
+        <macrodef name="resolve">
+            <!--
+              maven-resolver-ant-tasks's resolve logic doesn't have retry logic and does not respect settings.xml, 
+              this causes issues when overriding maven central is required (such as when behind a corporate firewall);
+              it is critical to always provide the 'all' remoterepos to override resolve's default hard coded logic.
+
+              This macro simplifies this logic by centralizing retries and forcing the remoterepo 'all' to be used.
+            -->
+            <attribute name="failonmissingattachments" default="true"/>
+            <element name="elements" implicit="yes"/>
+            <sequential>
+                <retry retrycount="3">
+                  <resolver:resolve failonmissingattachments="@{failonmissingattachments}">
+                        <resolver:remoterepos refid="all"/>
+                        <elements/>
+                    </resolver:resolve>
+                </retry>
+            </sequential>
+        </macrodef>
+        <macrodef name="resolvepom">
+            <attribute name="file"/>
+            <attribute name="id"/>
+            <element name="elements" implicit="yes" optional="yes"/>
+            <sequential>
+                <retry retrycount="3">
+                    <resolver:pom file="@{file}" id="@{id}">
+                          <remoterepos refid="all"/>
+                          <elements/>
+                    </resolver:pom>
+                </retry>
+            </sequential>
+        </macrodef>
+
+        <resolve>
             <dependencies>
                 <dependency groupId="com.datastax.wikitext" artifactId="wikitext-core-ant" version="1.3"/>
                 <dependency groupId="org.fusesource.wikitext" artifactId="textile-core" version="1.3"/>
             </dependencies>
             <path refid="wikitext.classpath" classpath="runtime"/>
-        </resolver:resolve>
-        <resolver:resolve>
-            <remoterepos refid="all"/>
+        </resolve>
+        <resolve>
             <dependencies>
                 <dependency groupId="org.apache.rat" artifactId="apache-rat-tasks" version="0.6" />
             </dependencies>
             <path refid="rat.classpath" classpath="runtime"/>
-        </resolver:resolve>
-        <resolver:resolve>
-            <remoterepos refid="all"/>
+        </resolve>
+        <resolve>
             <dependencies>
                 <dependency groupId="org.jacoco" artifactId="org.jacoco.ant" version="${jacoco.version}" />
             </dependencies>
             <path refid="jacocoant.classpath" classpath="runtime"/>
-        </resolver:resolve>
-        <resolver:resolve>
-            <remoterepos refid="all"/>
+        </resolve>
+        <resolve>
             <dependencies>
                 <dependency groupId="org.antlr" artifactId="antlr" version="3.5.2"/>
                 <dependency groupId="org.antlr" artifactId="antlr-runtime" version="3.5.2"/>
                 <dependency groupId="org.antlr" artifactId="ST4" version="4.0.8"/>
             </dependencies>
             <path refid="cql3-grammar.classpath" classpath="runtime"/>
-        </resolver:resolve>
-        <resolver:resolve>
-            <remoterepos refid="all"/>
+        </resolve>
+        <resolve>
             <dependencies>
                 <dependency groupId="de.jflex" artifactId="jflex" version="1.6.0" />
             </dependencies>
             <path refid="jflex.classpath" classpath="runtime"/>
-        </resolver:resolve>
+        </resolve>
 
         <macrodef name="install">
             <attribute name="pomFile"/>
@@ -145,19 +178,17 @@
     </target>
 
     <target name="resolver-retrieve-build" depends="resolver-init,_jstackunit_download,write-poms">
-        <resolver:pom file="${build.dir}/${final.name}.pom" id="all-pom"/>
-        <resolver:pom file="${build.dir}/tmp-${final.name}-deps.pom" id="pom-deps"/>
+        <resolvepom file="${build.dir}/${final.name}.pom" id="all-pom" />
+        <resolvepom file="${build.dir}/tmp-${final.name}-deps.pom" id="pom-deps" />
 
-        <resolver:resolve>
-            <remoterepos refid="all"/>
+        <resolve>
             <dependencies pomRef="all-pom"/>
             <files dir="${build.dir.lib}/jars" layout="{artifactId}-{version}-{classifier}.{extension}" scopes="compile,provided,!system"/>
-        </resolver:resolve>
-        <resolver:resolve>
-            <remoterepos refid="all"/>
+        </resolve>
+        <resolve>
             <dependencies pomRef="pom-deps"/>
             <files dir="${test.lib}/jars" layout="{artifactId}-{version}-{classifier}.{extension}" scopes="test,!provide,!system"/>
-        </resolver:resolve>
+        </resolve>
 
         <copy todir="${test.lib}/jars/" file="${jstackunit.local}" quiet="true"/>
 
@@ -171,51 +202,50 @@
     </target>
 
     <target name="resolver-dist-lib" depends="resolver-retrieve-build,write-poms">
-        <resolver:pom file="${build.dir}/${final.name}.pom" id="all-pom"/>
+        <resolvepom file="${build.dir}/${final.name}.pom" id="all-pom" />
 
-        <resolver:resolve failOnMissingAttachments="true">
-            <remoterepos refid="all"/>
+        <resolve failOnMissingAttachments="true">
             <dependencies pomRef="all-pom"/>
             <files dir="${build.lib}" layout="{artifactId}-{version}-{classifier}.{extension}" scopes="compile,!provide,!system"/>
-        </resolver:resolve>
+        </resolve>
         <mkdir dir="${user.home}/.m2/repository/org/apache/cassandra/deps/sigar-bin"/>
         <mkdir dir="${build.lib}/sigar-bin"/>
 
         <!-- files.pythonhosted.org -->
-        <get src="https://files.pythonhosted.org/packages/59/a0/cf4cd997e1750f0c2d91c6ea5abea218251c43c3581bcc2f118b00baf5cf/futures-2.1.6-py2.py3-none-any.whl" dest="${user.home}/.m2/repository/org/apache/cassandra/deps/futures-2.1.6-py2.py3-none-any.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
-        <get src="https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl" dest="${user.home}/.m2/repository/org/apache/cassandra/deps/six-1.12.0-py2.py3-none-any.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
+        <get src="${artifact.python.pypi}/59/a0/cf4cd997e1750f0c2d91c6ea5abea218251c43c3581bcc2f118b00baf5cf/futures-2.1.6-py2.py3-none-any.whl" dest="${user.home}/.m2/repository/org/apache/cassandra/deps/futures-2.1.6-py2.py3-none-any.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
+        <get src="${artifact.python.pypi}/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl" dest="${user.home}/.m2/repository/org/apache/cassandra/deps/six-1.12.0-py2.py3-none-any.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
 
         <!-- python-driver -->
-        <get src="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/cassandra-driver-internal-only-3.25.0.zip" dest="${user.home}/.m2/repository/org/apache/cassandra/deps/cassandra-driver-internal-only-3.25.0.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
+        <get src="${lib.download.base.url}/lib/cassandra-driver-internal-only-3.25.0.zip" dest="${user.home}/.m2/repository/org/apache/cassandra/deps/cassandra-driver-internal-only-3.25.0.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
         <!-- the following would be better, but its subdirectory is python-driver-3.25.0 instead of cassandra-driver-3.25.0 -->
         <!--get src="https://codeload.github.com/datastax/python-driver/zip/refs/tags/3.25.0" dest="${user.home}/.m2/repository/org/apache/cassandra/deps/cassandra-driver-internal-only-3.25.0.zip" usetimestamp="true" quiet="true"/-->
 
         <!-- apache/cassandra/lib -->
-        <get src="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/geomet-0.1.0.zip" dest="${user.home}/.m2/repository/org/apache/cassandra/deps/geomet-0.1.0.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
+        <get src="${lib.download.base.url}/lib/geomet-0.1.0.zip" dest="${user.home}/.m2/repository/org/apache/cassandra/deps/geomet-0.1.0.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
         <get dest="${user.home}/.m2/repository/org/apache/cassandra/deps/sigar-bin/" quiet="true" usetimestamp="true" skipexisting="true">
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-amd64-freebsd-6.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-amd64-linux.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-amd64-solaris.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-ia64-hpux-11.sl"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-ia64-linux.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-pa-hpux-11.sl"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-ppc-aix-5.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-ppc-linux.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-ppc64-aix-5.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-ppc64-linux.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-ppc64le-linux.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-s390x-linux.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-sparc-solaris.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-sparc64-solaris.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-universal-macosx.dylib"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-universal64-macosx.dylib"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-x86-freebsd-5.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-x86-freebsd-6.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-x86-linux.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/libsigar-x86-solaris.so"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/sigar-amd64-winnt.dll"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/sigar-x86-winnt.dll"/>
-            <url url="https://raw.githubusercontent.com/apache/cassandra/${lib.download.sha}/lib/sigar-bin/sigar-x86-winnt.lib"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-amd64-freebsd-6.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-amd64-linux.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-amd64-solaris.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ia64-hpux-11.sl"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ia64-linux.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-pa-hpux-11.sl"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ppc-aix-5.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ppc-linux.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ppc64-aix-5.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ppc64-linux.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-ppc64le-linux.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-s390x-linux.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-sparc-solaris.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-sparc64-solaris.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-universal-macosx.dylib"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-universal64-macosx.dylib"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-x86-freebsd-5.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-x86-freebsd-6.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-x86-linux.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/libsigar-x86-solaris.so"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/sigar-amd64-winnt.dll"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/sigar-x86-winnt.dll"/>
+            <url url="${lib.download.base.url}/lib/sigar-bin/sigar-x86-winnt.lib"/>
         </get>
         
         <copy todir="${build.lib}" quiet="true">
@@ -251,4 +281,4 @@
             <file file="${user.home}/.m2/repository/org/apache/cassandra/deps/sigar-bin/sigar-x86-winnt.lib"/>
         </copy>
     </target>
-</project>
\ No newline at end of file
+</project>
diff --git a/CHANGES.txt b/CHANGES.txt
index 9de4320..2907a3b 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 4.0-rc1
+ * When behind a firewall trunk is not buildable, need to allow overriding URLs (CASSANDRA-16563)
  * Make sure sstables with moved starts are removed correctly in LeveledGenerations (CASSANDRA-16552)
  * Fix race between secondary index building and active compactions tracking (CASSANDRA-16554)
  * Migrate dependency handling from maven-ant-tasks to resolver-ant-tasks, removing lib/ directory from version control (CASSANDRA-16391)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org