8000 Merge pull request #8015 from hrhino/topic/license · scala/scala@e75815c · GitHub
[go: up one dir, main page]

Skip to content

Commit e75815c

Browse files
authored
Merge pull request #8015 from hrhino/topic/license
[nomerge] backport #7981 (package LICENSE/NOTICE with jars)
2 parents b70a2cb + f98649c commit e75815c

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

project/License.scala

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package scala.build
2+
3+
import sbt._, Keys._, plugins._
4+
5+
object License extends AutoPlugin {
6+
val licenseMapping = settingKey[Seq[(File, String)]]("LICENSE/NOTICE file mappings")
7+
8+
override val requires = JvmPlugin
9+
override val trigger = AllRequirements
10+
11+
override def projectSettings: Seq[Def.Setting[_]] =
12+
List(packageSrc, packageBin, packageDoc)
13+
.map(pkg => mappings in (Compile, pkg) ++= licenseMapping.value)
14+
15+
override def buildSettings: Seq[Def.Setting[_]] = Seq(
16+
licenseMapping := List("LICENSE", "NOTICE").map(fn => (baseDirectory.value / fn) -> fn)
17+
)
18+
}

project/Osgi.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@ object Osgi {
4040
jarlist := false,
4141
bundle := Def.task {
4242
val cp = (products in Compile in packageBin).value
43+
val licenseFiles = License.licenseMapping.value.map(_._1)
4344
bundleTask(headers.value.toMap, jarlist.value, cp,
44-
(artifactPath in (Compile, packageBin)).value, cp, streams.value)
45+
(artifactPath in (Compile, packageBin)).value, cp ++ licenseFiles, streams.value)
4546
}.value,
4647
packagedArtifact in (Compile, packageBin) := (((artifact in (Compile, packageBin)).value, bundle.value)),
4748
// Also create OSGi source bundles:
@@ -63,10 +64,10 @@ object Osgi {
6364

6465
// https://github.com/scala/scala-dev/issues/254
6566
// Must be careful not to include scala-asm.jar within scala-compiler.jar!
66-
def resourceDirectoryRef(f: File) = (if (f.isDirectory) "" else "@") + f.getAbsolutePath
67+
def resourceDirectoryRef(f: File) = (if (f.getName endsWith ".jar") "@" else "") + f.getAbsolutePath
6768

6869
val includeRes = resourceDirectories.filter(_.exists).map(resourceDirectoryRef).mkString(",")
69-
if(!includeRes.isEmpty) builder.setProperty(INCLUDERESOURCE, includeRes)
70+
if (!includeRes.isEmpty) builder.setProperty(INCLUDERESOURCE, includeRes)
7071
builder.getProperties.asScala.foreach { case (k, v) => log.debug(s"bnd: $k: $v") }
7172
// builder.build is not thread-safe because it uses a static SimpleDateFormat. This ensures
7273
// that all calls to builder.build are serialized.

0 commit comments

Comments
 (0)
0