From 8ba68eedfd9433c9cc5e5e36fc6db81e95352d2a Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Mon, 18 Dec 2017 17:15:15 +0100 Subject: [PATCH 1/4] Revert *ModifiedTime() calls to *lastModified*() calls There are just too many instances in which sbt's code relies on the `lastModified`/`setLastModified` semantics, so instead of moving to `get`/`setModifiedTime`, we use new IO calls that offer the new timestamp precision, but retain the old semantics. --- .../main/scala/sbt/internal/scripted/FileCommands.scala | 2 +- util-cache/src/main/scala/sbt/util/FileInfo.scala | 9 ++------- util-cache/src/test/scala/FileInfoSpec.scala | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala index 331d34e93..b038ceb67 100644 --- a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala +++ b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala @@ -69,7 +69,7 @@ class FileCommands(baseDirectory: File) extends BasicStatementHandler { val pathA = fromString(a) val pathB = fromString(b) val isNewer = pathA.exists && - (!pathB.exists || IO.getModifiedTime(pathA) > IO.getModifiedTime(pathB)) + (!pathB.exists || IO.lastModified(pathA) > IO.lastModified(pathB)) if (!isNewer) { scriptError(s"$pathA is not newer than $pathB") } diff --git a/util-cache/src/main/scala/sbt/util/FileInfo.scala b/util-cache/src/main/scala/sbt/util/FileInfo.scala index 2a26e193d..1dc3cb186 100644 --- a/util-cache/src/main/scala/sbt/util/FileInfo.scala +++ b/util-cache/src/main/scala/sbt/util/FileInfo.scala @@ -51,11 +51,6 @@ object FilesInfo { object FileInfo { - // returns 0L if file does not exist - private def getModifiedTimeOrZero(file: File) = - try IO.getModifiedTime(file) - catch { case _: FileNotFoundException => 0L } - sealed trait Style { type F <: FileInfo @@ -95,7 +90,7 @@ object FileInfo { } implicit def apply(file: File): HashModifiedFileInfo = - FileHashModified(file.getAbsoluteFile, Hash(file).toList, getModifiedTimeOrZero(file)) + FileHashModified(file.getAbsoluteFile, Hash(file).toList, IO.lastModified(file)) } object hash extends Style { @@ -152,7 +147,7 @@ object FileInfo { } implicit def apply(file: File): ModifiedFileInfo = - FileModified(file.getAbsoluteFile, getModifiedTimeOrZero(file)) + FileModified(file.getAbsoluteFile, IO.lastModified(file)) } object exists extends Style { diff --git a/util-cache/src/test/scala/FileInfoSpec.scala b/util-cache/src/test/scala/FileInfoSpec.scala index 62e941254..ea60ead82 100644 --- a/util-cache/src/test/scala/FileInfoSpec.scala +++ b/util-cache/src/test/scala/FileInfoSpec.scala @@ -7,7 +7,7 @@ import sbt.io.IO class FileInfoSpec extends UnitSpec { val file = new java.io.File(".").getAbsoluteFile - val fileInfo: ModifiedFileInfo = FileModified(file, IO.getModifiedTime(file)) + val fileInfo: ModifiedFileInfo = FileModified(file, IO.lastModified(file)) val filesInfo = FilesInfo(Set(fileInfo)) it should "round trip" in assertRoundTrip(filesInfo) From 0a1bd5a3b25f95d25a5fef18844cb0acf61a425b Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Fri, 22 Dec 2017 00:03:11 +0100 Subject: [PATCH 2/4] Change modifiedTime definitions --- .../src/main/scala/sbt/internal/scripted/FileCommands.scala | 2 +- util-cache/src/main/scala/sbt/util/FileInfo.scala | 4 ++-- util-cache/src/test/scala/FileInfoSpec.scala | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala index b038ceb67..6aefa4a7a 100644 --- a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala +++ b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala @@ -69,7 +69,7 @@ class FileCommands(baseDirectory: File) extends BasicStatementHandler { val pathA = fromString(a) val pathB = fromString(b) val isNewer = pathA.exists && - (!pathB.exists || IO.lastModified(pathA) > IO.lastModified(pathB)) + (!pathB.exists || IO.getModifiedTimeOrZero(pathA) > IO.getModifiedTimeOrZero(pathB)) if (!isNewer) { scriptError(s"$pathA is not newer than $pathB") } diff --git a/util-cache/src/main/scala/sbt/util/FileInfo.scala b/util-cache/src/main/scala/sbt/util/FileInfo.scala index 1dc3cb186..bef3d6bfd 100644 --- a/util-cache/src/main/scala/sbt/util/FileInfo.scala +++ b/util-cache/src/main/scala/sbt/util/FileInfo.scala @@ -90,7 +90,7 @@ object FileInfo { } implicit def apply(file: File): HashModifiedFileInfo = - FileHashModified(file.getAbsoluteFile, Hash(file).toList, IO.lastModified(file)) + FileHashModified(file.getAbsoluteFile, Hash(file).toList, IO.getModifiedTimeOrZero(file)) } object hash extends Style { @@ -147,7 +147,7 @@ object FileInfo { } implicit def apply(file: File): ModifiedFileInfo = - FileModified(file.getAbsoluteFile, IO.lastModified(file)) + FileModified(file.getAbsoluteFile, IO.getModifiedTimeOrZero(file)) } object exists extends Style { diff --git a/util-cache/src/test/scala/FileInfoSpec.scala b/util-cache/src/test/scala/FileInfoSpec.scala index ea60ead82..7b0f3e035 100644 --- a/util-cache/src/test/scala/FileInfoSpec.scala +++ b/util-cache/src/test/scala/FileInfoSpec.scala @@ -7,7 +7,7 @@ import sbt.io.IO class FileInfoSpec extends UnitSpec { val file = new java.io.File(".").getAbsoluteFile - val fileInfo: ModifiedFileInfo = FileModified(file, IO.lastModified(file)) + val fileInfo: ModifiedFileInfo = FileModified(file, IO.getModifiedTimeOrZero(file)) val filesInfo = FilesInfo(Set(fileInfo)) it should "round trip" in assertRoundTrip(filesInfo) From 2765e07add355a1d63eb63c15da4b74fa126146c Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Thu, 21 Dec 2017 22:43:38 -0500 Subject: [PATCH 3/4] sbt 1.0.4 --- project/build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/build.properties b/project/build.properties index 94005e587..394cb75cf 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.0.0 +sbt.version=1.0.4 From de54721fc3c3beca8aa097d7ce3e0c78c8366077 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Thu, 21 Dec 2017 22:43:53 -0500 Subject: [PATCH 4/4] IO 1.1.3 --- project/Dependencies.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 453f20649..97e4f992b 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -7,7 +7,7 @@ object Dependencies { val scala211 = "2.11.12" val scala212 = "2.12.4" - private val ioVersion = "1.1.2" + private val ioVersion = "1.1.3" private val sbtIO = "org.scala-sbt" %% "io" % ioVersion