[maven/f21] Add patch for MNG-5663
Mikolaj Izdebski
mizdebsk at fedoraproject.org
Mon Feb 16 16:10:07 UTC 2015
commit 2179b35586fc6c0c0479cf200efae01b3aade285
Author: Mikolaj Izdebski <mizdebsk at redhat.com>
Date: Mon Feb 16 16:37:01 2015 +0100
Add patch for MNG-5663
- Resolves: rhbz#1193103
0001-Use-generics-in-modello-generated-code.patch | 6 +-
0002-Migrate-from-easymock-1-to-easymock-3.patch | 6 +-
0003-Update-Aether-to-0.9.0.M3.patch | 6 +-
0004-Update-to-Sisu-0.1.0-and-Guice-3.1.6.patch | 6 +-
...663-a-regression-introduced-in-3.2.2-by-M.patch | 222 ++++++++++++++++++++
maven.spec | 9 +-
6 files changed, 242 insertions(+), 13 deletions(-)
---
diff --git a/0001-Use-generics-in-modello-generated-code.patch b/0001-Use-generics-in-modello-generated-code.patch
index cc26ae1..9c8f10a 100644
--- a/0001-Use-generics-in-modello-generated-code.patch
+++ b/0001-Use-generics-in-modello-generated-code.patch
@@ -1,7 +1,7 @@
-From 6e5054ceaf1db425324548d2f62931df7733eb0e Mon Sep 17 00:00:00 2001
+From ce0cb71caac9b009de70b5406f7551ecebbc5aea Mon Sep 17 00:00:00 2001
From: Stanislav Ochotnicky <sochotnicky at redhat.com>
Date: Tue, 31 Jan 2012 13:12:32 +0100
-Subject: [PATCH 1/4] Use generics in modello generated code
+Subject: [PATCH 1/5] Use generics in modello generated code
---
maven-model/pom.xml | 2 ++
@@ -43,5 +43,5 @@ index 6576a25..ccf6f36 100644
<execution>
<id>site-docs</id>
--
-1.9.3
+2.1.0
diff --git a/0002-Migrate-from-easymock-1-to-easymock-3.patch b/0002-Migrate-from-easymock-1-to-easymock-3.patch
index 86ba5ec..bef3df4 100644
--- a/0002-Migrate-from-easymock-1-to-easymock-3.patch
+++ b/0002-Migrate-from-easymock-1-to-easymock-3.patch
@@ -1,7 +1,7 @@
-From 3d875b067847d00519f960bf83469b85685a4ec5 Mon Sep 17 00:00:00 2001
+From 32974767afa24ede2ad8193cc08f19dfbadd4b73 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk at redhat.com>
Date: Thu, 29 Aug 2013 10:11:48 +0200
-Subject: [PATCH 2/4] Migrate from easymock 1 to easymock 3
+Subject: [PATCH 2/5] Migrate from easymock 1 to easymock 3
---
maven-compat/pom.xml | 2 +-
@@ -142,5 +142,5 @@ index ccf6f36..760e6c2 100644
<version>${easyMockVersion}</version>
<scope>test</scope>
--
-1.9.3
+2.1.0
diff --git a/0003-Update-Aether-to-0.9.0.M3.patch b/0003-Update-Aether-to-0.9.0.M3.patch
index 25e6140..c9ac0ed 100644
--- a/0003-Update-Aether-to-0.9.0.M3.patch
+++ b/0003-Update-Aether-to-0.9.0.M3.patch
@@ -1,7 +1,7 @@
-From ff559645842bf21e3bfee6810ed2808657120396 Mon Sep 17 00:00:00 2001
+From 35e48f1584fcf17d65cc8aa27ba7db7ae8b05a3c Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk at redhat.com>
Date: Mon, 12 Aug 2013 08:49:19 +0200
-Subject: [PATCH 3/4] Update Aether to 0.9.0.M3
+Subject: [PATCH 3/5] Update Aether to 0.9.0.M3
---
apache-maven/pom.xml | 6 +++++-
@@ -91,5 +91,5 @@ index 760e6c2..148b8ce 100644
</dependency>
<!-- Commons -->
--
-1.9.3
+2.1.0
diff --git a/0004-Update-to-Sisu-0.1.0-and-Guice-3.1.6.patch b/0004-Update-to-Sisu-0.1.0-and-Guice-3.1.6.patch
index f619111..96b903c 100644
--- a/0004-Update-to-Sisu-0.1.0-and-Guice-3.1.6.patch
+++ b/0004-Update-to-Sisu-0.1.0-and-Guice-3.1.6.patch
@@ -1,7 +1,7 @@
-From b6c25c221f9020a5bc3cfc28bc627a4fff10ff73 Mon Sep 17 00:00:00 2001
+From c0504200e71f3950d3576f0d785708a9a774e562 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk at redhat.com>
Date: Wed, 13 Nov 2013 14:32:23 +0100
-Subject: [PATCH 4/4] Update to Sisu 0.1.0 and Guice 3.1.6
+Subject: [PATCH 4/5] Update to Sisu 0.1.0 and Guice 3.1.6
Sisu depends on Guice, but dependency scope changed from "compile" to
"provided" in Sisu 0.1.0. As a Sisu user, Maven needs to have runtime
@@ -193,5 +193,5 @@ index 148b8ce..58727df 100644
<securityDispatcherVersion>1.3</securityDispatcherVersion>
<cipherVersion>1.7</cipherVersion>
--
-1.9.3
+2.1.0
diff --git a/0005-Fixes-MNG-5663-a-regression-introduced-in-3.2.2-by-M.patch b/0005-Fixes-MNG-5663-a-regression-introduced-in-3.2.2-by-M.patch
new file mode 100644
index 0000000..334abf3
--- /dev/null
+++ b/0005-Fixes-MNG-5663-a-regression-introduced-in-3.2.2-by-M.patch
@@ -0,0 +1,222 @@
+From 73aed8e251693d9093f9940a45aa8f0671f44259 Mon Sep 17 00:00:00 2001
+From: markdingram <markdingram at gmail.com>
+Date: Fri, 18 Jul 2014 16:59:09 +0100
+Subject: [PATCH 5/5] Fixes MNG-5663 - a regression introduced in 3.2.2 by
+ MNG-5639 that prevents nested import POMs from resolving their dependencies.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The cuplrit was the resetRepositories method in tandem with the repository
+list instances being shared between ModelResolvers.
+
+- The copy constructor for the ModelResolvers now creates new lists.
+- The resetRepositories method has been removed. Instead there is a
+'replace' parameter on the addRepository method that allows the
+desired parameter replacement of MNG-5639 to take place.
+
+Signed-off-by: Jason van Zyl <jason at tesla.io>
+---
+ .../repository/internal/DefaultModelResolver.java | 32 ++++++++++++++-----
+ .../apache/maven/project/ProjectModelResolver.java | 36 ++++++++++++++--------
+ .../maven/model/building/DefaultModelBuilder.java | 9 ++----
+ .../maven/model/resolution/ModelResolver.java | 14 +++++++--
+ 4 files changed, 61 insertions(+), 30 deletions(-)
+
+diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
+index 8335e01..859ab5a 100644
+--- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
++++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
+@@ -26,6 +26,8 @@
+ import java.util.List;
+ import java.util.Set;
+
++import com.google.common.base.Predicate;
++import com.google.common.collect.Iterables;
+ import org.apache.maven.model.Parent;
+ import org.apache.maven.model.Repository;
+ import org.apache.maven.model.building.FileModelSource;
+@@ -102,7 +104,7 @@ private DefaultModelResolver( DefaultModelResolver original )
+ this.resolver = original.resolver;
+ this.versionRangeResolver = original.versionRangeResolver;
+ this.remoteRepositoryManager = original.remoteRepositoryManager;
+- this.repositories = original.repositories;
++ this.repositories = new ArrayList<RemoteRepository>(original.repositories);
+ this.externalRepositories = original.externalRepositories;
+ this.repositoryIds = new HashSet<String>( original.repositoryIds );
+ }
+@@ -111,11 +113,24 @@ private DefaultModelResolver( DefaultModelResolver original )
+ public void addRepository( Repository repository )
+ throws InvalidRepositoryException
+ {
+- if ( session.isIgnoreArtifactDescriptorRepositories() || !repositoryIds.add( repository.getId() ) )
++ addRepository( repository, false );
++ }
++
++ @Override
++ public void addRepository(final Repository repository, boolean replace) throws InvalidRepositoryException {
++ if ( session.isIgnoreArtifactDescriptorRepositories() )
+ {
+ return;
+ }
+
++ if ( !repositoryIds.add( repository.getId() ) ) {
++ if ( !replace ) {
++ return;
++ }
++
++ removeMatchingRepository( repositories, repository.getId() );
++ }
++
+ List<RemoteRepository> newRepositories =
+ Collections.singletonList( ArtifactDescriptorUtils.toRemoteRepository( repository ) );
+
+@@ -123,12 +138,13 @@ public void addRepository( Repository repository )
+ remoteRepositoryManager.aggregateRepositories( session, repositories, newRepositories, true );
+ }
+
+- @Override
+- public void resetRepositories()
+- {
+- this.repositoryIds.clear();
+- this.repositories.clear();
+- this.repositories.addAll( externalRepositories );
++ private static void removeMatchingRepository(Iterable<RemoteRepository> repositories, final String id) {
++ Iterables.removeIf(repositories, new Predicate<RemoteRepository>() {
++ @Override
++ public boolean apply(RemoteRepository remoteRepository) {
++ return remoteRepository.getId().equals(id);
++ }
++ });
+ }
+
+ @Override
+diff --git a/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java b/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
+index eaa5792..c95dc4b 100644
+--- a/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
++++ b/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
+@@ -26,6 +26,8 @@
+ import java.util.List;
+ import java.util.Set;
+
++import com.google.common.base.Predicate;
++import com.google.common.collect.Iterables;
+ import org.apache.maven.model.Parent;
+ import org.apache.maven.model.Repository;
+ import org.apache.maven.model.building.FileModelSource;
+@@ -104,9 +106,9 @@ private ProjectModelResolver( ProjectModelResolver original )
+ this.trace = original.trace;
+ this.resolver = original.resolver;
+ this.remoteRepositoryManager = original.remoteRepositoryManager;
+- this.pomRepositories = original.pomRepositories;
++ this.pomRepositories = new ArrayList<RemoteRepository>(original.pomRepositories);
+ this.externalRepositories = original.externalRepositories;
+- this.repositories = original.repositories;
++ this.repositories = new ArrayList<RemoteRepository>(original.repositories);
+ this.repositoryMerging = original.repositoryMerging;
+ this.repositoryIds = new HashSet<String>( original.repositoryIds );
+ this.modelPool = original.modelPool;
+@@ -115,9 +117,19 @@ private ProjectModelResolver( ProjectModelResolver original )
+ public void addRepository( Repository repository )
+ throws InvalidRepositoryException
+ {
+- if ( !repositoryIds.add( repository.getId() ) )
+- {
+- return;
++ addRepository( repository, false );
++ }
++
++ @Override
++ public void addRepository(final Repository repository, boolean replace) throws InvalidRepositoryException {
++ if ( !repositoryIds.add( repository.getId() ) ) {
++ if ( !replace ) {
++ return;
++ }
++
++ //Remove any previous repository with this Id
++ removeMatchingRepository(repositories, repository.getId());
++ removeMatchingRepository(pomRepositories, repository.getId());
+ }
+
+ List<RemoteRepository> newRepositories =
+@@ -136,13 +148,13 @@ public void addRepository( Repository repository )
+ }
+ }
+
+- @Override
+- public void resetRepositories()
+- {
+- this.repositoryIds.clear();
+- this.pomRepositories.clear();
+- this.repositories.clear();
+- this.repositories.addAll(externalRepositories);
++ private static void removeMatchingRepository(Iterable<RemoteRepository> repositories, final String id) {
++ Iterables.removeIf(repositories, new Predicate<RemoteRepository>() {
++ @Override
++ public boolean apply(RemoteRepository remoteRepository) {
++ return remoteRepository.getId().equals(id);
++ }
++ });
+ }
+
+ public ModelResolver newCopy()
+diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+index 52c9fc3..39e68e2 100644
+--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
++++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+@@ -580,7 +580,7 @@ private void configureResolver( ModelResolver modelResolver, Model model, Defaul
+ configureResolver( modelResolver, model, problems, false );
+ }
+
+- private void configureResolver( ModelResolver modelResolver, Model model, DefaultModelProblemCollector problems, boolean resetRepositories )
++ private void configureResolver( ModelResolver modelResolver, Model model, DefaultModelProblemCollector problems, boolean replaceRepositories )
+ {
+ if ( modelResolver == null )
+ {
+@@ -591,16 +591,11 @@ private void configureResolver( ModelResolver modelResolver, Model model, Defaul
+
+ List<Repository> repositories = model.getRepositories();
+
+- if ( resetRepositories )
+- {
+- modelResolver.resetRepositories();
+- }
+-
+ for ( Repository repository : repositories )
+ {
+ try
+ {
+- modelResolver.addRepository( repository );
++ modelResolver.addRepository( repository, replaceRepositories );
+ }
+ catch ( InvalidRepositoryException e )
+ {
+diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java b/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java
+index a71dd9a..c81a536 100644
+--- a/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java
++++ b/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java
+@@ -68,10 +68,18 @@ void addRepository( Repository repository )
+ throws InvalidRepositoryException;
+
+ /**
+- * Resets repositories, has the effect of clearing any repositories previously added by the
+- * {link #addRepository(Repository) method
++ * Adds a repository to use for subsequent resolution requests. The order in which repositories are added matters,
++ * repositories that were added first should also be searched first. When multiple repositories with the same
++ * identifier are added, then the value of the replace argument is determines the behaviour.
++ *
++ * If replace is false than any existing repository with the same Id will remain in use. If replace
++ * is true the new repository replaces the original.
++ *
++ * @param repository The repository to add to the internal search chain, must not be {@code null}.
++ * @throws InvalidRepositoryException If the repository could not be added (e.g. due to invalid URL or layout).
+ */
+- void resetRepositories();
++ void addRepository( Repository repository, boolean replace )
++ throws InvalidRepositoryException;
+
+ /**
+ * Clones this resolver for usage in a forked resolution process. In general, implementors need not provide a deep
+--
+2.1.0
+
diff --git a/maven.spec b/maven.spec
index 67f5741..05f647c 100644
--- a/maven.spec
+++ b/maven.spec
@@ -1,6 +1,6 @@
Name: maven
Version: 3.2.2
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Java project management and project comprehension tool
License: ASL 2.0
URL: http://maven.apache.org/
@@ -18,6 +18,8 @@ Patch0002: 0002-Migrate-from-easymock-1-to-easymock-3.patch
Patch0003: 0003-Update-Aether-to-0.9.0.M3.patch
# Forwarded upstream (MNG-5534)
Patch0004: 0004-Update-to-Sisu-0.1.0-and-Guice-3.1.6.patch
+# Patch for MNG-5663 backported from upstream commit 61c37404256
+Patch0005: 0005-Fixes-MNG-5663-a-regression-introduced-in-3.2.2-by-M.patch
BuildArch: noarch
@@ -149,6 +151,7 @@ Group: Documentation
%patch0002 -p1
%patch0003 -p1
%patch0004 -p1
+%patch0005 -p1
# not really used during build, but a precaution
rm maven-ant-tasks-*.jar
@@ -274,6 +277,10 @@ ln -sf $(build-classpath plexus/classworlds) \
%changelog
+* Mon Feb 16 2015 Mikolaj Izdebski <mizdebsk at redhat.com> - 3.2.2-2
+- Add patch for MNG-5663
+- Resolves: rhbz#1193103
+
* Wed Jun 18 2014 Mikolaj Izdebski <mizdebsk at redhat.com> - 3.2.2-1
- Update to upstream version 3.2.2
More information about the scm-commits
mailing list