Merge pull request #311 from alexarchambault/topic/develop

Various fixes
This commit is contained in:
Alexandre Archambault 2016-08-04 17:40:57 -04:00 committed by GitHub
commit 3a79f0a924
2 changed files with 212 additions and 199 deletions

View File

@ -3,7 +3,7 @@ package coursier
import java.io.{ OutputStreamWriter, File }
import java.net.URL
import java.nio.file.Files
import java.util.concurrent.Executors
import java.util.concurrent.{ ExecutorService, Executors }
import coursier.core.{ Authentication, Publication }
import coursier.ivy.IvyRepository
@ -225,6 +225,7 @@ object Tasks {
private case class ResolutionCacheKey(
project: Project,
repositories: Seq[Repository],
userEnabledProfiles: Set[String],
resolution: Resolution,
sbtClassifiers: Boolean
)
@ -255,6 +256,8 @@ object Tasks {
private def projectDescription(project: Project) =
s"${project.module.organization}:${project.module.name}:${project.version}"
private def createLogger() = new TermDisplay(new OutputStreamWriter(System.err))
def resolutionTask(
sbtClassifiers: Boolean = false
) = Def.task {
@ -492,11 +495,12 @@ object Tasks {
fallbackDependenciesRepositories
def resolution = {
val pool = Executors.newFixedThreadPool(parallelDownloads, Strategy.DefaultDaemonThreadFactory)
var pool: ExecutorService = null
var resLogger: TermDisplay = null
def createLogger() = new TermDisplay(new OutputStreamWriter(System.err))
val resLogger = createLogger()
try {
pool = Executors.newFixedThreadPool(parallelDownloads, Strategy.DefaultDaemonThreadFactory)
resLogger = createLogger()
val fetch = Fetch.from(
repositories,
@ -551,9 +555,6 @@ object Tasks {
)
.merge
resLogger.stop()
if (!res.isDone)
ResolutionError.MaximumIterationsReached
.throwException()
@ -587,13 +588,20 @@ object Tasks {
log.info(s"Resolved ${projectDescription(currentProject)} dependencies")
res
} finally {
if (pool != null)
pool.shutdown()
if (resLogger != null)
resLogger.stop()
}
}
resolutionsCache.getOrElseUpdate(
ResolutionCacheKey(
currentProject,
repositories,
startRes.copy(filter = None),
userEnabledProfiles,
startRes.copy(filter = None, profileActivation = None),
sbtClassifiers
),
resolution
@ -687,9 +695,11 @@ object Tasks {
}.value
def report = {
val pool = Executors.newFixedThreadPool(parallelDownloads, Strategy.DefaultDaemonThreadFactory)
var pool: ExecutorService = null
var artifactsLogger: TermDisplay = null
def createLogger() = new TermDisplay(new OutputStreamWriter(System.err))
try {
pool = Executors.newFixedThreadPool(parallelDownloads, Strategy.DefaultDaemonThreadFactory)
val depsByConfig = grouped(currentProject.dependencies)
@ -724,7 +734,7 @@ object Tasks {
case Some(cl) => res.classifiersArtifacts(cl)
}
val artifactsLogger = createLogger()
artifactsLogger = createLogger()
val artifactFileOrErrorTasks = allArtifacts.toVector.map { a =>
def f(p: CachePolicy) =
@ -760,8 +770,6 @@ object Tasks {
l.toMap
}
artifactsLogger.stop()
if (verbosityLevel >= 0)
log.info(
s"Fetched artifacts of ${projectDescription(currentProject)}" +
@ -813,12 +821,18 @@ object Tasks {
classifiers,
artifactFileOpt
)
} finally {
if (pool != null)
pool.shutdown()
if (artifactsLogger != null)
artifactsLogger.stop()
}
}
reportsCache.getOrElseUpdate(
ReportCacheKey(
currentProject,
res,
res.copy(filter = None, profileActivation = None),
withClassifiers,
sbtClassifiers
),

View File

@ -3,7 +3,6 @@ package test
import java.io.File
import java.math.BigInteger
import java.util.concurrent.Executors
import utest._