diff --git a/modules/build/src/main/scala/scala/build/Inputs.scala b/modules/build/src/main/scala/scala/build/Inputs.scala index ae1234672e..5b80a8cfc8 100644 --- a/modules/build/src/main/scala/scala/build/Inputs.scala +++ b/modules/build/src/main/scala/scala/build/Inputs.scala @@ -203,7 +203,7 @@ object Inputs { } final case class CFile(base: os.Path, subPath: os.SubPath) extends OnDisk with SourceFile with Compiled { - lazy val path = base / subPath + lazy val path = base / subPath } final case class Directory(path: os.Path) extends OnDisk with Compiled final case class ResourceDirectory(path: os.Path) extends OnDisk diff --git a/modules/build/src/main/scala/scala/build/ResourceMapper.scala b/modules/build/src/main/scala/scala/build/ResourceMapper.scala index 1d3aac047b..8848d7178c 100644 --- a/modules/build/src/main/scala/scala/build/ResourceMapper.scala +++ b/modules/build/src/main/scala/scala/build/ResourceMapper.scala @@ -3,53 +3,52 @@ package scala.build import scala.collection.Map import scala.jdk.CollectionConverters._ - /* Maps resources from their original path, to destination path, - * also caching that mapping. - * + * also caching that mapping. + * * Remembering the mapping this way allows for the resource to be removed - * if the original file is renamed/deleted. + * if the original file is renamed/deleted. */ object ResourceMapper { - private def readMappingIfExists(mappingFile: os.Path): Option[Map[os.Path, os.Path]] = { + private def readMappingIfExists(mappingFile: os.Path): Option[Map[os.Path, os.Path]] = if (os.exists(mappingFile)) { val mappingContent = os.read(mappingFile) Some(mappingContent.split('\n').map { pair => val sep = pair.split(',') (os.Path(sep(0)), os.Path(sep(1))) }.toMap) - } else None - } + } + else None private def writeMapping(mappingPath: os.Path, mapping: Map[os.Path, os.Path]) = { - val mappingContent = mapping.map{ case (inputPath, outputPath) => + val mappingContent = mapping.map { case (inputPath, outputPath) => s"$inputPath,$outputPath" }.mkString("\n") os.write.over(mappingPath, mappingContent) } - def scalaNativeCFileMapping(build: Build.Successful): Map[os.Path, os.Path] = { + def scalaNativeCFileMapping(build: Build.Successful): Map[os.Path, os.Path] = build.inputs.flattened().collect { case cfile: Inputs.CFile => val inputPath = cfile.path - val destPath = build.output / "scala-native" / cfile.subPath + val destPath = build.output / "scala-native" / cfile.subPath (inputPath, destPath) }.toMap - } - private def resolveProjectCFileMappingPath(nativeWorkDir: os.Path) = nativeWorkDir / ".project_native_mapping" + private def resolveProjectCFileMappingPath(nativeWorkDir: os.Path) = + nativeWorkDir / ".project_native_mapping" def copyCFilesToScalaNativeDir(build: Build.Successful, nativeWorkDir: os.Path): Unit = { def isInDirectory(output: os.Path, filePath: os.Path) = { val outputFullPath = output.toNIO.iterator().asScala.toSeq - val fileFullPath = output.toNIO.iterator().asScala.toSeq + val fileFullPath = output.toNIO.iterator().asScala.toSeq fileFullPath.startsWith(outputFullPath) } val mappingPath = resolveProjectCFileMappingPath(nativeWorkDir) - val oldMapping = readMappingIfExists(mappingPath).getOrElse(Map.empty) - val newMapping = scalaNativeCFileMapping(build) + val oldMapping = readMappingIfExists(mappingPath).getOrElse(Map.empty) + val newMapping = scalaNativeCFileMapping(build) val removedFiles = oldMapping.values.toSet -- newMapping.values.toSet removedFiles.foreach { outputPath => @@ -68,4 +67,4 @@ object ResourceMapper { } writeMapping(mappingPath, newMapping) } -} \ No newline at end of file +} diff --git a/modules/cli/src/main/scala/scala/cli/commands/Package.scala b/modules/cli/src/main/scala/scala/cli/commands/Package.scala index 3d6a9de587..c85dea58a3 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Package.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Package.scala @@ -924,5 +924,6 @@ object Package extends ScalaCommand[PackageOptions] { else throw new ScalaNativeBuildError } - }} + } + } } diff --git a/modules/cli/src/test/scala/cli/tests/CachedBinaryTests.scala b/modules/cli/src/test/scala/cli/tests/CachedBinaryTests.scala index 9b403ff8e8..52ba8ae97e 100644 --- a/modules/cli/src/test/scala/cli/tests/CachedBinaryTests.scala +++ b/modules/cli/src/test/scala/cli/tests/CachedBinaryTests.scala @@ -48,7 +48,7 @@ class CachedBinaryTests extends munit.FunSuite { (_, _, maybeBuild) => val build = maybeBuild.successfulOpt.get - val config = build.options.scalaNativeOptions.configCliOptions() + val config = build.options.scalaNativeOptions.configCliOptions(resourcesExist = false) val nativeWorkDir = build.inputs.nativeWorkDir val destPath = nativeWorkDir / s"main${if (Properties.isWin) ".exe" else ""}" // generate dummy output @@ -65,7 +65,7 @@ class CachedBinaryTests extends munit.FunSuite { (_, _, maybeBuild) => val build = maybeBuild.successfulOpt.get - val config = build.options.scalaNativeOptions.configCliOptions() + val config = build.options.scalaNativeOptions.configCliOptions(resourcesExist = false) val nativeWorkDir = build.inputs.nativeWorkDir val destPath = nativeWorkDir / s"main${if (Properties.isWin) ".exe" else ""}" // generate dummy output @@ -91,7 +91,7 @@ class CachedBinaryTests extends munit.FunSuite { (_, _, maybeBuild) => val build = maybeBuild.successfulOpt.get - val config = build.options.scalaNativeOptions.configCliOptions() + val config = build.options.scalaNativeOptions.configCliOptions(resourcesExist = false) val nativeWorkDir = build.inputs.nativeWorkDir val destPath = nativeWorkDir / s"main${if (Properties.isWin) ".exe" else ""}" // generate dummy output @@ -118,7 +118,7 @@ class CachedBinaryTests extends munit.FunSuite { (_, _, maybeBuild) => val build = maybeBuild.successfulOpt.get - val config = build.options.scalaNativeOptions.configCliOptions() + val config = build.options.scalaNativeOptions.configCliOptions(resourcesExist = false) val nativeWorkDir = build.inputs.nativeWorkDir val destPath = nativeWorkDir / s"main${if (Properties.isWin) ".exe" else ""}" // generate dummy output @@ -145,7 +145,7 @@ class CachedBinaryTests extends munit.FunSuite { (root, _, maybeBuild) => val build = maybeBuild.successfulOpt.get - val config = build.options.scalaNativeOptions.configCliOptions() + val config = build.options.scalaNativeOptions.configCliOptions(resourcesExist = false) val nativeWorkDir = build.inputs.nativeWorkDir val destPath = nativeWorkDir / s"main${if (Properties.isWin) ".exe" else ""}" os.write(destPath, Random.alphanumeric.take(10).mkString(""), createFolders = true) @@ -171,7 +171,7 @@ class CachedBinaryTests extends munit.FunSuite { (_, _, maybeBuild) => val build = maybeBuild.successfulOpt.get - val config = build.options.scalaNativeOptions.configCliOptions() + val config = build.options.scalaNativeOptions.configCliOptions(resourcesExist = false) val nativeWorkDir = build.inputs.nativeWorkDir val destPath = nativeWorkDir / s"main${if (Properties.isWin) ".exe" else ""}" os.write(destPath, Random.alphanumeric.take(10).mkString(""), createFolders = true) @@ -192,7 +192,8 @@ class CachedBinaryTests extends munit.FunSuite { ) ) ) - val updatedConfig = updatedBuild.options.scalaNativeOptions.configCliOptions(false) + val updatedConfig = + updatedBuild.options.scalaNativeOptions.configCliOptions(resourcesExist = false) val cacheAfterConfigUpdate = CachedBinary.getCacheData( diff --git a/modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala index 714a90fc4b..0069a58f7e 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala @@ -274,9 +274,9 @@ abstract class RunTestDefinitions(val scalaVersionOpt: Option[String]) } test("Scala Native C Files are correctly handled as a regular Input") { - val projectDir = "native-interop" + val projectDir = "native-interop" val interopFileName = "bindings.c" - val interopMsg = "Hello C!" + val interopMsg = "Hello C!" val inputs = TestInputs( Seq( os.rel / projectDir / "main.scala" -> @@ -296,11 +296,11 @@ abstract class RunTestDefinitions(val scalaVersionOpt: Option[String]) | } |} |""".stripMargin, - os.rel / projectDir / interopFileName -> + os.rel / projectDir / interopFileName -> s"""|#include | |void scalanative_print() { - | printf("${interopMsg}\\n"); + | printf("$interopMsg\\n"); |} |""".stripMargin )