mirror of https://github.com/sbt/sbt.git
[2.x] feat: repositories_force support (#8761)
The launcher (1.6.0+) sets override from repository-override and passes it via isOverrideRepositories(). No need to duplicate the file check in sbt.
This commit is contained in:
parent
b634e1b507
commit
c045c72d6d
|
|
@ -115,7 +115,7 @@ jobs:
|
|||
run: |
|
||||
rm -rf "$HOME/.sbt/scripted/" || true
|
||||
rm -rf "$HOME/.ivy2/local" || true
|
||||
rm -r $(find $HOME/.sbt/boot -name "*-SNAPSHOT") || true
|
||||
find "$HOME/.sbt/boot" -name "*-SNAPSHOT" -exec rm -rf {} + 2>/dev/null || true
|
||||
- name: Publish local Zinc
|
||||
if: ${{ matrix.jobtype == 6 }}
|
||||
shell: bash
|
||||
|
|
@ -160,7 +160,7 @@ jobs:
|
|||
if: ${{ matrix.jobtype == 4 }}
|
||||
shell: bash
|
||||
run: |
|
||||
# ./sbt -v "repoOverrideTest:scripted dependency-management/*"
|
||||
./sbt -v "repoOverrideTest:scripted force-proxy-repos-file/*"
|
||||
./sbt -v "scripted source-dependencies/*"
|
||||
- name: Build and test (5)
|
||||
if: ${{ matrix.jobtype == 5 }}
|
||||
|
|
@ -178,7 +178,7 @@ jobs:
|
|||
# sbt -v -Dsbt.build.version=${BUILD_VERSION} +publishLocal
|
||||
# cd ../
|
||||
# sbt -Dsbtzinc.path=$HOME/work/sbt/sbt/zinc -Dsbt.build.version=$BUILD_VERSION -Dsbt.build.fatal=false "+lowerUtils/publishLocal; {zinc}/publishLocal; upperModules/publishLocal"
|
||||
# rm -r $(find $HOME/.sbt/boot -name "*-SNAPSHOT") || true
|
||||
# find "$HOME/.sbt/boot" -name "*-SNAPSHOT" -exec rm -rf {} + 2>/dev/null || true
|
||||
# sbt -v -Dsbt.version=$BUILD_VERSION "++$SCALA_213; all $UTIL_TESTS; ++$SCALA_212; all $UTIL_TESTS; scripted actions/* source-dependencies/*1of3 dependency-management/*1of4 java/*"
|
||||
- name: Scripted (tests)
|
||||
if: ${{ matrix.jobtype == 7 }}
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ jobs:
|
|||
cd ../
|
||||
sbt -Dsbtzinc.path=$HOME/work/sbt/sbt/zinc -Dsbt.build.fatal=false "+lowerUtils/publish; {zinc}/publish; upperModules/publish; bundledLauncherProj/publish"
|
||||
rm -rf "$HOME/.ivy2/local" || true
|
||||
rm -r $(find $HOME/.sbt/boot -name "*-SNAPSHOT") || true
|
||||
find "$HOME/.sbt/boot" -name "*-SNAPSHOT" -exec rm -rf {} + 2>/dev/null || true
|
||||
find $HOME/Library/Caches/Coursier/v1 -name "ivydata-*.properties" -delete || true
|
||||
find $HOME/.ivy2/cache -name "ivydata-*.properties" -delete || true
|
||||
find $HOME/.cache/coursier/v1 -name "ivydata-*.properties" -delete || true
|
||||
|
|
|
|||
|
|
@ -1044,9 +1044,7 @@ def otherRootSettings =
|
|||
scriptedLaunchOpts := List(
|
||||
"-Xmx1500M",
|
||||
"-Xms512M",
|
||||
"-server",
|
||||
"-Dsbt.override.build.repos=true",
|
||||
s"""-Dsbt.repository.config=${scriptedSource.value / "repo.config"}"""
|
||||
"-server"
|
||||
) :::
|
||||
(sys.props.get("sbt.ivy.home") match {
|
||||
case Some(home) => List(s"-Dsbt.ivy.home=$home")
|
||||
|
|
|
|||
|
|
@ -25,5 +25,5 @@
|
|||
[ivy]
|
||||
ivy-home: ${sbt.ivy.home-${user.home}/.ivy2/}
|
||||
checksums: ${sbt.checksums-sha1,md5}
|
||||
override-build-repos: ${sbt.override.build.repos-false}
|
||||
repository-override: ${sbt.repository.override-${sbt.global.base-${user.home}/.sbt}/repositories_force}
|
||||
repository-config: ${sbt.repository.config-${sbt.global.base-${user.home}/.sbt}/repositories}
|
||||
|
|
|
|||
|
|
@ -3048,7 +3048,7 @@ object Classpaths {
|
|||
scmInfo.value,
|
||||
developers.value.toVector
|
||||
),
|
||||
overrideBuildResolvers := appConfiguration(isOverrideRepositories).value,
|
||||
overrideBuildResolvers := appConfiguration(Classpaths.shouldOverrideBuildResolvers).value,
|
||||
externalResolvers := Def.uncached(
|
||||
(
|
||||
externalResolvers.?.value,
|
||||
|
|
@ -4509,6 +4509,9 @@ object Classpaths {
|
|||
try app.provider.scalaProvider.launcher.isOverrideRepositories
|
||||
catch { case _: NoSuchMethodError => false }
|
||||
|
||||
def shouldOverrideBuildResolvers(app: xsbti.AppConfiguration): Boolean =
|
||||
isOverrideRepositories(app) || SysProp.getOrFalse("sbt.override.build.repos")
|
||||
|
||||
/** Loads the `appRepositories` configured for this launcher, if supported. */
|
||||
def appRepositories(app: xsbti.AppConfiguration): Option[Vector[Resolver]] =
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ object Dependencies {
|
|||
|
||||
private val sbtIO = "org.scala-sbt" %% "io" % ioVersion
|
||||
|
||||
val launcherVersion = "1.5.2"
|
||||
val launcherVersion = "1.6.0"
|
||||
val launcherInterface = "org.scala-sbt" % "launcher-interface" % launcherVersion
|
||||
val rawLauncher = "org.scala-sbt" % "launcher" % launcherVersion
|
||||
val testInterface = "org.scala-sbt" % "test-interface" % "1.0"
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
lazy val check = taskKey[Unit]("")
|
||||
|
||||
lazy val root = (project in file(".")).settings(
|
||||
autoScalaLibrary := false,
|
||||
check := {
|
||||
val ar = appResolvers.value.get
|
||||
assert(!(ar exists { _.name == "public" }))
|
||||
}
|
||||
)
|
||||
|
|
@ -1 +0,0 @@
|
|||
> check
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
lazy val check = taskKey[Unit]("Verifies overrideBuildResolvers is true when repositories_force exists")
|
||||
|
||||
lazy val root = (project in file(".")).settings(
|
||||
check := {
|
||||
val overrideOn = overrideBuildResolvers.value
|
||||
assert(overrideOn, "overrideBuildResolvers should be true when global/repositories_force exists")
|
||||
}
|
||||
)
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
[repositories]
|
||||
local
|
||||
maven-central
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# Test for #1870: forcing proxy repos via ~/.sbt/repositories_force.
|
||||
# repoOverrideTest runs with launcher; -Dsbt.global.base=<testDir>/global.
|
||||
# Launcher uses repository-override (repositories_force), so override is enabled.
|
||||
> check
|
||||
|
|
@ -419,6 +419,14 @@ public class ScriptedLauncher {
|
|||
|
||||
@Override
|
||||
public boolean isOverrideRepositories() {
|
||||
try {
|
||||
String globalBase = System.getProperty("sbt.global.base");
|
||||
if (globalBase != null) {
|
||||
File reposForce = new File(globalBase, "repositories_force");
|
||||
return reposForce.exists();
|
||||
}
|
||||
} catch (SecurityException ignored) {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -230,6 +230,11 @@ final class ScriptedTests(
|
|||
groupedTests.map { case ((group, name), originalDir) =>
|
||||
val label = s"$group/$name"
|
||||
log.info(s"Running $label")
|
||||
val targetGlobal = new File(tempTestDir, "global")
|
||||
val reposForce = new File(targetGlobal, "repositories_force")
|
||||
if (reposForce.exists()) IO.delete(reposForce)
|
||||
val repos = new File(targetGlobal, "repositories")
|
||||
if (repos.exists()) IO.delete(repos)
|
||||
// Copy test's contents and reload the sbt instance to pick them up
|
||||
IO.copyDirectory(originalDir, tempTestDir)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue