From d5cc47ae5f0798b5354d53086d7662ed86fa63a4 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Mon, 7 Nov 2016 11:22:57 +0100 Subject: [PATCH] Add non regression test for org.nd4j:nd4j-native:0.5.0... ...and corresponding fixes / workarounds --- .../main/scala/coursier/core/Activation.scala | 8 +++++++- .../main/scala/coursier/core/Resolution.scala | 10 +++++++++- .../resolutions/org.nd4j/nd4j-native/0.5.0 | 16 ++++++++++++++++ .../test/scala/coursier/test/CentralTests.scala | 11 +++++++++++ 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 tests/shared/src/test/resources/resolutions/org.nd4j/nd4j-native/0.5.0 diff --git a/core/shared/src/main/scala/coursier/core/Activation.scala b/core/shared/src/main/scala/coursier/core/Activation.scala index bf10b82d5..79e980815 100644 --- a/core/shared/src/main/scala/coursier/core/Activation.scala +++ b/core/shared/src/main/scala/coursier/core/Activation.scala @@ -56,8 +56,14 @@ object Activation { def isEmpty: Boolean = arch.isEmpty && families.isEmpty && name.isEmpty && version.isEmpty + def archMatch(current: Option[String]): Boolean = + arch.forall(current.toSeq.contains) || { + // seems required by org.nd4j:nd4j-native:0.5.0 + arch.toSeq.contains("x86-64") && current.toSeq.contains("x86_64") + } + def isActive(osInfo: Os): Boolean = - arch.forall(osInfo.arch.toSeq.contains) && + archMatch(osInfo.arch) && families.forall { f => if (Os.knownFamilies(f)) osInfo.families.contains(f) diff --git a/core/shared/src/main/scala/coursier/core/Resolution.scala b/core/shared/src/main/scala/coursier/core/Resolution.scala index d7b6e6438..b97055a83 100644 --- a/core/shared/src/main/scala/coursier/core/Resolution.scala +++ b/core/shared/src/main/scala/coursier/core/Resolution.scala @@ -363,6 +363,12 @@ object Resolution { def projectProperties(project: Project): Seq[(String, String)] = { + // vague attempt at recovering the POM packaging tag + def packagingOpt = project.publications.collectFirst { + case ("compile", pub) => + pub.`type` + } + // FIXME The extra properties should only be added for Maven projects, not Ivy ones val properties0 = Seq( // some artifacts seem to require these (e.g. org.jmock:jmock-legacy:2.5.1) @@ -374,7 +380,9 @@ object Resolution { "project.groupId" -> project.module.organization, "project.artifactId" -> project.module.name, "project.version" -> project.version - ) ++ project.parent.toSeq.flatMap { + ) ++ packagingOpt.toSeq.map { packaging => + "project.packaging" -> packaging + } ++ project.parent.toSeq.flatMap { case (parModule, parVersion) => Seq( "project.parent.groupId" -> parModule.organization, diff --git a/tests/shared/src/test/resources/resolutions/org.nd4j/nd4j-native/0.5.0 b/tests/shared/src/test/resources/resolutions/org.nd4j/nd4j-native/0.5.0 new file mode 100644 index 000000000..83dc7191a --- /dev/null +++ b/tests/shared/src/test/resources/resolutions/org.nd4j/nd4j-native/0.5.0 @@ -0,0 +1,16 @@ +com.google.code.findbugs:annotations:2.0.1:compile +com.google.guava:guava:18.0:compile +commons-io:commons-io:2.4:compile +org.apache.commons:commons-lang3:3.3.1:compile +org.apache.commons:commons-math3:3.4.1:compile +org.bytedeco:javacpp:1.2.3:compile +org.javassist:javassist:3.18.2-GA:compile +org.nd4j:nd4j-api:0.5.0:compile +org.nd4j:nd4j-buffer:0.5.0:compile +org.nd4j:nd4j-common:0.5.0:compile +org.nd4j:nd4j-context:0.5.0:compile +org.nd4j:nd4j-native:0.5.0:compile +org.nd4j:nd4j-native-api:0.5.0:compile +org.projectlombok:lombok:1.16.4:compile +org.reflections:reflections:0.9.10:compile +org.slf4j:slf4j-api:1.7.10:compile diff --git a/tests/shared/src/test/scala/coursier/test/CentralTests.scala b/tests/shared/src/test/scala/coursier/test/CentralTests.scala index addecc379..3c6030e7e 100644 --- a/tests/shared/src/test/scala/coursier/test/CentralTests.scala +++ b/tests/shared/src/test/scala/coursier/test/CentralTests.scala @@ -436,6 +436,17 @@ object CentralTests extends TestSuite { "1.11-8" ) } + + 'nd4jNative - { + // In particular: + // - uses OS-based activation, + // - requires converting a "x86-64" to "x86_64" in it, and + // - uses "project.packaging" property + resolutionCheck( + Module("org.nd4j", "nd4j-native"), + "0.5.0" + ) + } } }