From 75a9926c45d3784ab0fe786278a4ea1be531541b Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Mon, 17 Nov 2025 10:48:36 +0100 Subject: [PATCH 1/2] handle build issue in OSGi build code --- project/OSGi.scala | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/project/OSGi.scala b/project/OSGi.scala index 0217f0785a..a99a2ab9b5 100644 --- a/project/OSGi.scala +++ b/project/OSGi.scala @@ -138,9 +138,22 @@ object OSGi { scalaImport(scalaVersion)) def pekkoImport(version: String, packageName: String = "org.apache.pekko.*") = { val versionComponents = version.split('.') - val nextMinorVersion = versionComponents(1).toInt + 1 - versionedImport(packageName, s"${versionComponents.head}.${versionComponents(1)}", - s"${versionComponents.head}.$nextMinorVersion") + if (versionComponents.length < 2) { + useDefaultImportRange(version, packageName) + } else { + try { + val nextMinorVersion = versionComponents(1).toInt + 1 + versionedImport(packageName, s"${versionComponents.head}.${versionComponents(1)}", + s"${versionComponents.head}.$nextMinorVersion") + } catch { + case _: NumberFormatException => + useDefaultImportRange(version, packageName) + } + } + } + private def useDefaultImportRange(version: String, packageName: String) = { + System.err.println(s"Invalid Pekko version: $version for OSGi import package versioning, defaulting to [0.0,10.0)") + versionedImport(packageName, "0.0", "10.0") } def configImport(packageName: String = "com.typesafe.config.*") = versionedImport(packageName, "1.4.0", "1.5.0") def scalaImport(version: String) = { From 2b144cec3dd0da06ed1224e0b57217b7b9a5564c Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Mon, 17 Nov 2025 11:46:19 +0100 Subject: [PATCH 2/2] Update OSGi.scala --- project/OSGi.scala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/project/OSGi.scala b/project/OSGi.scala index a99a2ab9b5..cbff8a47ef 100644 --- a/project/OSGi.scala +++ b/project/OSGi.scala @@ -137,6 +137,8 @@ object OSGi { "!scala.util.parsing.*", scalaImport(scalaVersion)) def pekkoImport(version: String, packageName: String = "org.apache.pekko.*") = { + // see https://github.com/apache/pekko/issues/2509 for background + // on why the version that is input might not be in the expected format val versionComponents = version.split('.') if (versionComponents.length < 2) { useDefaultImportRange(version, packageName)