Skip to content

Commit 1125d05

Browse files
committed
Merge commit 'd06ce96' into merge/2.11.x-to-2.12.x-20160511
2 parents 38590c8 + d06ce96 commit 1125d05

File tree

2 files changed

+49
-22
lines changed

2 files changed

+49
-22
lines changed

build.sbt

Lines changed: 49 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ lazy val publishSettings : Seq[Setting[_]] = Seq(
8484
val mappings = artifacts.toSeq.map { case (a, f) =>
8585
val typeSuffix = a.`type` match {
8686
case "pom" => "-pom.xml"
87-
case "bundle" | "jar" => ".jar"
87+
case "jar" => ".jar"
8888
case "doc" => "-docs.jar"
8989
case tpe => s"-$tpe.${a.extension}"
9090
}
@@ -99,6 +99,8 @@ lazy val publishSettings : Seq[Setting[_]] = Seq(
9999
if (file.exists) List(Credentials(file))
100100
else Nil
101101
},
102+
// Add a "default" Ivy configuration because sbt expects the Scala distribution to have one:
103+
ivyConfigurations += Configuration("default", "Default", true, List(Configurations.Runtime), true),
102104
publishMavenStyle := true
103105
)
104106

@@ -236,8 +238,8 @@ def fixPom(extra: (String, scala.xml.Node)*): Setting[_] = {
236238
) ++ extra) }
237239
}
238240

239-
/** Remove unwanted dependencies from the POM. */
240-
def removePomDependencies(deps: (String, String)*): Setting[_] = {
241+
/** Remove unwanted dependencies from the POM and ivy.xml. */
242+
def removePomDependencies(deps: (String, String)*): Seq[Setting[_]] = Seq(
241243
pomPostProcess := { n =>
242244
val n2 = pomPostProcess.value.apply(n)
243245
import scala.xml._
@@ -252,14 +254,40 @@ def removePomDependencies(deps: (String, String)*): Setting[_] = {
252254
case n => Seq(n)
253255
}
254256
})).transform(Seq(n2)).head
257+
},
258+
deliverLocal := {
259+
import scala.xml._
260+
import scala.xml.transform._
261+
val f = deliverLocal.value
262+
val e = (new RuleTransformer(new RewriteRule {
263+
override def transform(node: Node) = node match {
264+
case e: Elem if e.label == "dependency" && {
265+
val org = e.attribute("org").getOrElse("").toString
266+
val name = e.attribute("name").getOrElse("").toString
267+
deps.exists { case (g, a) =>
268+
org == g && (name == a || name == (a + "_" + scalaBinaryVersion.value))
269+
}
270+
} => Seq.empty
271+
case n => Seq(n)
272+
}
273+
})).transform(Seq(XML.loadFile(f))).head
274+
XML.save(f.getAbsolutePath, e, xmlDecl = true)
275+
f
255276
}
256-
}
277+
)
257278

258279
val disableDocs = Seq[Setting[_]](
259280
sources in (Compile, doc) := Seq.empty,
260281
publishArtifact in (Compile, packageDoc) := false
261282
)
262283

284+
val disablePublishing = Seq[Setting[_]](
285+
publishArtifact := false,
286+
// The above is enough for Maven repos but it doesn't prevent publishing of ivy.xml files
287+
publish := {},
288+
publishLocal := {}
289+
)
290+
263291
lazy val setJarLocation: Setting[_] =
264292
artifactPath in packageBin in Compile := {
265293
// two lines below are copied over from sbt's sources:
@@ -397,43 +425,44 @@ lazy val compiler = configureAsSubproject(project)
397425
"/project/description" -> <description>Compiler for the Scala Programming Language</description>,
398426
"/project/packaging" -> <packaging>jar</packaging>
399427
),
400-
apiURL := None,
401-
removePomDependencies(
402-
("org.apache.ant", "ant"),
403-
("org.scala-lang.modules", "scala-asm")
404-
)
428+
apiURL := None
405429
)
430+
.settings(removePomDependencies(
431+
("org.apache.ant", "ant"),
432+
("org.scala-lang.modules", "scala-asm")
433+
): _*)
406434
.dependsOn(library, reflect)
407435

408436
lazy val interactive = configureAsSubproject(project)
409437
.settings(disableDocs: _*)
438+
.settings(disablePublishing: _*)
410439
.settings(
411440
name := "scala-compiler-interactive",
412-
description := "Scala Interactive Compiler",
413-
publishArtifact := false
441+
description := "Scala Interactive Compiler"
414442
)
415443
.dependsOn(compiler)
416444

417445
lazy val repl = configureAsSubproject(project)
418446
.settings(disableDocs: _*)
447+
.settings(disablePublishing: _*)
419448
.settings(
420449
connectInput in run := true,
421-
publishArtifact := false,
422450
run <<= (run in Compile).partialInput(" -usejavacp") // Automatically add this so that `repl/run` works without additional arguments.
423451
)
424452
.dependsOn(compiler, interactive)
425453

426454
lazy val replJline = configureAsSubproject(Project("repl-jline", file(".") / "src" / "repl-jline"))
427455
.settings(disableDocs: _*)
456+
.settings(disablePublishing: _*)
428457
.settings(
429458
libraryDependencies += jlineDep,
430-
name := "scala-repl-jline",
431-
publishArtifact := false
459+
name := "scala-repl-jline"
432460
)
433461
.dependsOn(repl)
434462

435463
lazy val replJlineEmbedded = Project("repl-jline-embedded", file(".") / "target" / "repl-jline-embedded-src-dummy")
436464
.settings(scalaSubprojectSettings: _*)
465+
.settings(disablePublishing: _*)
437466
.settings(
438467
name := "scala-repl-jline-embedded",
439468
// There is nothing to compile for this project. Instead we use the compile task to create
@@ -464,18 +493,17 @@ lazy val replJlineEmbedded = Project("repl-jline-embedded", file(".") / "target"
464493
val outdir = (classDirectory in Compile).value
465494
JarJar(inputs, outdir, config)
466495
}),
467-
publishArtifact := false,
468496
connectInput in run := true
469497
)
470498
.dependsOn(replJline)
471499

472500
lazy val scaladoc = configureAsSubproject(project)
473501
.settings(disableDocs: _*)
502+
.settings(disablePublishing: _*)
474503
.settings(
475504
name := "scala-compiler-doc",
476505
description := "Scala Documentation Generator",
477506
libraryDependencies ++= Seq(scalaXmlDep, scalaParserCombinatorsDep, partestDep),
478-
publishArtifact := false,
479507
includeFilter in unmanagedResources in Compile := "*.html" | "*.css" | "*.gif" | "*.png" | "*.js" | "*.txt"
480508
)
481509
.dependsOn(compiler)
@@ -497,10 +525,10 @@ lazy val partestExtras = configureAsSubproject(Project("partest-extras", file(".
497525
.dependsOn(replJlineEmbedded)
498526
.settings(clearSourceAndResourceDirectories: _*)
499527
.settings(disableDocs: _*)
528+
.settings(disablePublishing: _*)
500529
.settings(
501530
name := "scala-partest-extras",
502531
description := "Scala Compiler Testing Tool (compiler-specific extras)",
503-
publishArtifact := false,
504532
libraryDependencies += partestDep,
505533
unmanagedSourceDirectories in Compile := List(baseDirectory.value)
506534
)
@@ -510,8 +538,8 @@ lazy val junit = project.in(file("test") / "junit")
510538
.settings(clearSourceAndResourceDirectories: _*)
511539
.settings(commonSettings: _*)
512540
.settings(disableDocs: _*)
541+
.settings(disablePublishing: _*)
513542
.settings(
514-
publishArtifact := false,
515543
fork in Test := true,
516544
libraryDependencies ++= Seq(junitDep, junitIntefaceDep),
517545
testOptions += Tests.Argument(TestFrameworks.JUnit, "-a", "-v"),
@@ -543,9 +571,9 @@ lazy val test = project
543571
.configs(IntegrationTest)
544572
.settings(commonSettings: _*)
545573
.settings(disableDocs: _*)
574+
.settings(disablePublishing: _*)
546575
.settings(Defaults.itSettings: _*)
547576
.settings(
548-
publishArtifact := false,
549577
libraryDependencies ++= Seq(asmDep, partestDep, scalaXmlDep, scalacheckDep),
550578
unmanagedBase in IntegrationTest := baseDirectory.value / "files" / "lib",
551579
unmanagedJars in IntegrationTest <+= (unmanagedBase) (j => Attributed.blank(j)) map(identity),
@@ -572,8 +600,8 @@ lazy val test = project
572600

573601
lazy val manual = configureAsSubproject(project)
574602
.settings(disableDocs: _*)
603+
.settings(disablePublishing: _*)
575604
.settings(
576-
publishArtifact := false,
577605
libraryDependencies ++= Seq(scalaXmlDep, antDep),
578606
classDirectory in Compile := (target in Compile).value / "classes"
579607
)
@@ -643,9 +671,9 @@ lazy val scalaDist = Project("scala-dist", file(".") / "target" / "scala-dist-di
643671

644672
lazy val root = (project in file("."))
645673
.settings(disableDocs: _*)
674+
.settings(disablePublishing: _*)
646675
.settings(generateBuildCharacterFileSettings: _*)
647676
.settings(
648-
publishArtifact := false,
649677
publish := {},
650678
publishLocal := {},
651679
commands ++= ScriptCommands.all,

project/Osgi.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ object Osgi {
4040
},
4141
packagedArtifact in (Compile, packageBin) <<= (artifact in (Compile, packageBin), bundle).identityMap,
4242
// Also create OSGi source bundles:
43-
artifact in (Compile, packageBin) ~= (_.copy(`type` = "bundle")),
4443
packageOptions in (Compile, packageSrc) += Package.ManifestAttributes(
4544
"Bundle-Name" -> (description.value + " Sources"),
4645
"Bundle-SymbolicName" -> (bundleSymbolicName.value + ".source"),

0 commit comments

Comments
 (0)