From 34919937d9c005d1fa9b3843be72a73c21ba4b68 Mon Sep 17 00:00:00 2001 From: Stefan Zeiger Date: Mon, 24 Jun 2019 14:33:49 +0200 Subject: [PATCH] Fix OSGi headers - Export all our packages (fixes https://github.com/scala/scala-collection-compat/issues/224) - Import the correct standard library version (using code from https://github.com/slick/slick/blob/master/project/Osgi.scala) - No private packages needed --- build.sbt | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index cb933991..85914ca3 100644 --- a/build.sbt +++ b/build.sbt @@ -57,6 +57,17 @@ scalaVersionsByJvm in ThisBuild := { ) } +/** Create an OSGi version range for standard Scala versioning + * schemes that describes binary compatible versions. */ +def osgiVersionRange(version: String, requireMicro: Boolean = false): String = + if(version contains '-') "${@}" // M, RC or SNAPSHOT -> exact version + else if(requireMicro) "${range;[===,=+)}" // At least the same micro version + else "${range;[==,=+)}" // Any binary compatible version + +/** Create an OSGi Import-Package version specification. */ +def osgiImport(pattern: String, version: String, requireMicro: Boolean = false): String = + pattern + ";version=\"" + osgiVersionRange(version, requireMicro) + "\"" + lazy val compat = MultiScalaCrossProject(JSPlatform, JVMPlatform)( "compat", _.settings(scalaModuleSettings) @@ -73,7 +84,14 @@ lazy val compat = MultiScalaCrossProject(JSPlatform, JVMPlatform)( } ) .jvmSettings( - OsgiKeys.exportPackage := Seq(s"scala.collection.compat.*;version=${version.value}"), + OsgiKeys.exportPackage := { + if (scalaVersion.value.startsWith("2.13.")) + Seq(s"scala.collection.compat.*;version=${version.value}") + else + Seq(s"scala.collection.compat.*;version=${version.value},scala.jdk.*;version=${version.value}") + }, + OsgiKeys.importPackage := Seq(osgiImport("*", scalaBinaryVersion.value)), + OsgiKeys.privatePackage := Nil, junit ) .jsSettings(