Skip to content

Commit 92bbe6e

Browse files
authored
Merge branch 'main' into update/sbt-scalajs-1.9.0
2 parents 9a1ea63 + 6ee7f25 commit 92bbe6e

File tree

74 files changed

+553
-403
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+553
-403
lines changed

.github/workflows/ci.yml

Lines changed: 296 additions & 49 deletions
Large diffs are not rendered by default.

build.sbt

Lines changed: 77 additions & 224 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,32 @@
1-
sourceDirectory := file("dummy source directory")
2-
31
val Scala212 = "2.12.15"
42
val Scala213 = "2.13.8"
5-
val Scala30 = "3.0.2"
6-
val Scala31 = "3.1.0"
7-
8-
ThisBuild / crossScalaVersions := Seq(Scala31, Scala30, Scala212, Scala213)
9-
ThisBuild / scalaVersion := (ThisBuild / crossScalaVersions).value.last
10-
11-
ThisBuild / githubWorkflowPublishTargetBranches := Seq()
12-
13-
val PrimaryOS = "ubuntu-latest"
14-
ThisBuild / githubWorkflowOSes := Seq(PrimaryOS)
3+
val Scala3 = "3.0.2"
4+
5+
name := "scalacheck"
6+
ThisBuild / organization := "org.scalacheck"
7+
ThisBuild / organizationName := "Typelevel"
8+
ThisBuild / homepage := Some(url("http://www.scalacheck.org"))
9+
ThisBuild / licenses := Seq("BSD 3-clause" -> url("https://opensource.org/licenses/BSD-3-Clause"))
10+
ThisBuild / developers := List(
11+
Developer(
12+
id = "rickynils",
13+
name = "Rickard Nilsson",
14+
email = "[email protected]",
15+
url = url("https://github.com/rickynils")
16+
)
17+
)
1518

19+
ThisBuild / crossScalaVersions := Seq(Scala3, Scala212, Scala213)
1620
val Java8 = JavaSpec.temurin("8")
17-
val Java11 = JavaSpec.temurin("11")
18-
19-
ThisBuild / githubWorkflowJavaVersions := Seq(Java8, Java11)
20-
21-
// we don't need this since we aren't publishing
22-
ThisBuild / githubWorkflowArtifactUpload := false
23-
24-
ThisBuild / githubWorkflowBuildMatrixAdditions += "platform" -> List("jvm")
21+
ThisBuild / githubWorkflowJavaVersions := Seq(Java8, JavaSpec.temurin("11"))
2522
ThisBuild / githubWorkflowBuildMatrixAdditions += "workers" -> List("1", "4")
2623

27-
ThisBuild / githubWorkflowBuildMatrixInclusions ++=
28-
crossScalaVersions.value map { scala =>
29-
MatrixInclude(
30-
Map("os" -> PrimaryOS, "java" -> Java8.render, "scala" -> scala),
31-
Map("platform" -> "js", "workers" -> "1"))
32-
}
33-
34-
ThisBuild / githubWorkflowBuildMatrixInclusions ++=
35-
crossScalaVersions.value.filter(_.startsWith("2.")) map { scala =>
36-
MatrixInclude(
37-
Map(
38-
"os" -> PrimaryOS,
39-
"scala" -> scala,
40-
"java" -> Java8.render),
41-
Map("platform" -> "native", "workers" -> "1"))
42-
}
43-
44-
ThisBuild / githubWorkflowBuildPreamble +=
45-
WorkflowStep.Run(
46-
List("sudo apt install clang libunwind-dev libgc-dev libre2-dev"),
47-
name = Some("Setup scala native dependencies"),
48-
cond = Some("matrix.platform == 'native'"))
49-
50-
ThisBuild / githubWorkflowBuild := Seq(
51-
WorkflowStep.Run(
52-
List("./tools/travis-script.sh"),
53-
name = Some("Run the build script"),
54-
env = Map(
55-
"PLATFORM" -> "${{ matrix.platform }}",
56-
"TRAVIS_SCALA_VERSION" -> "${{ matrix.scala }}",
57-
"WORKERS" -> "${{ matrix.workers }}")))
24+
ThisBuild / githubWorkflowBuildMatrixExclusions ++=
25+
List(
26+
MatrixExclude(Map("project" -> "rootNative", "scala" -> Scala3)),
27+
MatrixExclude(Map("project" -> "rootJS", "workers" -> "4")),
28+
MatrixExclude(Map("project" -> "rootNative", "workers" -> "4"))
29+
)
5830

5931
ThisBuild / githubWorkflowAddedJobs ++= Seq(
6032
WorkflowJob(
@@ -67,7 +39,7 @@ ThisBuild / githubWorkflowAddedJobs ++= Seq(
6739
"for d in */ ; do cd \"$d\" && sbt test:compile && cd ../ ; done"),
6840
name = Some("Build examples"))),
6941
javas = List(Java8),
70-
scalas = List(crossScalaVersions.value.last)),
42+
scalas = List((ThisBuild / scalaVersion).value)),
7143

7244
WorkflowJob(
7345
"bench",
@@ -77,198 +49,79 @@ ThisBuild / githubWorkflowAddedJobs ++= Seq(
7749
List("bench/jmh:run -p genSize=0 -p seedCount=0 -bs 1 -wi 0 -i 1 -f 0 -t 1 -r 0 org.scalacheck.bench.GenBench"),
7850
name = Some("Build benchmark suite"))),
7951
javas = List(Java8),
80-
scalas = List(crossScalaVersions.value.last)))
81-
82-
lazy val versionNumber = "1.15.5"
83-
84-
def env(name: String): Option[String] =
85-
Option(System.getenv(name))
86-
87-
val isRelease = env("IS_RELEASE").exists(_ == "true")
88-
89-
ThisBuild / versionScheme := Some("pvp")
90-
91-
lazy val sharedSettings = MimaSettings.settings ++ Seq(
92-
93-
name := "scalacheck",
94-
95-
version := {
96-
val suffix =
97-
if (isRelease) ""
98-
else "-SNAPSHOT"
99-
versionNumber + suffix
100-
},
101-
102-
isSnapshot := !isRelease,
103-
104-
organization := "org.scalacheck",
105-
106-
licenses := Seq("BSD 3-clause" -> url("https://opensource.org/licenses/BSD-3-Clause")),
107-
108-
homepage := Some(url("http://www.scalacheck.org")),
109-
110-
credentials ++= (for {
111-
username <- env("SONATYPE_USERNAME")
112-
password <- env("SONATYPE_PASSWORD")
113-
} yield Credentials(
114-
"Sonatype Nexus Repository Manager",
115-
"oss.sonatype.org",
116-
username, password
117-
)).toSeq,
118-
119-
Compile / unmanagedSourceDirectories += (LocalRootProject / baseDirectory).value / "src" / "main" / "scala",
120-
121-
Compile / packageSrc / mappings ++= (Compile / managedSources).value.map{ f =>
122-
// to merge generated sources into sources.jar as well
123-
(f, f.relativeTo((Compile / sourceManaged).value).get.getPath)
124-
},
125-
126-
Compile / sourceGenerators += task {
127-
val dir = (Compile / sourceManaged).value / "org" / "scalacheck"
128-
codegen.genAll.map { s =>
129-
val f = dir / s.name
130-
IO.write(f, s.code)
131-
f
132-
}
133-
},
134-
135-
Compile / unmanagedSourceDirectories += {
136-
val s = CrossVersion.partialVersion(scalaVersion.value) match {
137-
case Some((3, _)) => "scala-2.13+"
138-
case Some((2, 13)) => "scala-2.13+"
139-
case _ => "scala-2.13-"
140-
}
141-
(LocalRootProject / baseDirectory).value / "src" / "main" / s
142-
},
143-
144-
Test / unmanagedSourceDirectories += (LocalRootProject / baseDirectory).value / "src" / "test" / "scala",
145-
146-
resolvers += "sonatype" at "https://oss.sonatype.org/content/repositories/releases",
147-
148-
// 2.11 - 2.13
149-
scalacOptions ++= {
150-
def mk(r: Range)(strs: String*): Int => Seq[String] =
151-
(n: Int) => if (r.contains(n)) strs else Seq.empty
152-
153-
val groups: Seq[Int => Seq[String]] = Seq(
154-
mk(12 to 12)("-Ywarn-inaccessible", "-Ywarn-nullary-override",
155-
"-Ywarn-nullary-unit", "-Xfuture", "-Xfatal-warnings", "-deprecation",
156-
"-Ywarn-infer-any", "-Ywarn-unused-import"),
157-
mk(12 to 13)("-encoding", "UTF-8", "-feature", "-unchecked",
158-
"-Ywarn-dead-code", "-Ywarn-numeric-widen", "-Xlint:-unused",
159-
"-Ywarn-unused:-patvars,-implicits,-locals,-privates,-explicits"))
160-
161-
CrossVersion.partialVersion(scalaVersion.value) match {
162-
case Some((2, n)) => groups.flatMap(f => f(n.toInt))
163-
case _ => Seq("-language:Scala2")
164-
}
165-
},
166-
167-
// HACK: without these lines, the console is basically unusable,
168-
// since all imports are reported as being unused (and then become
169-
// fatal errors).
170-
Compile / console / scalacOptions ~= {_.filterNot("-Ywarn-unused-import" == _)},
171-
Test / console / scalacOptions := (Compile / console / scalacOptions).value,
172-
173-
// don't use fatal warnings in tests
174-
Test / scalacOptions ~= (_ filterNot (_ == "-Xfatal-warnings")),
175-
176-
autoAPIMappings := true,
177-
// Mima signature checking stopped working after 3.0.2 upgrade, see #834
178-
mimaReportSignatureProblems := (CrossVersion.partialVersion(scalaVersion.value) match {
179-
case Some((3, _)) => false
180-
case _ => true
181-
}),
182-
mimaPreviousArtifacts := Set("org.scalacheck" %%% "scalacheck" % "1.15.4"),
183-
184-
// Don't publish for Scala 3.1 or later, only from 3.0
185-
publish / skip := (CrossVersion.partialVersion(scalaVersion.value) match {
186-
case Some((3, x)) if x > 0 => true
187-
case _ => false
188-
}),
189-
190-
publishTo := {
191-
val nexus = "https://oss.sonatype.org/"
192-
val (name, path) = if (isSnapshot.value) ("snapshots", "content/repositories/snapshots")
193-
else ("releases", "service/local/staging/deploy/maven2")
194-
Some(name at nexus + path)
195-
},
196-
197-
publishMavenStyle := true,
198-
199-
publishArtifact := true,
200-
201-
Test / publishArtifact := false,
202-
203-
pomIncludeRepository := { _ => false },
204-
205-
scmInfo := Some(
206-
ScmInfo(
207-
url("https://github.com/typelevel/scalacheck"),
208-
"scm:git:[email protected]:typelevel/scalacheck.git"
209-
)
210-
),
211-
developers := List(
212-
Developer(
213-
id = "rickynils",
214-
name = "Rickard Nilsson",
215-
email = "[email protected]",
216-
url = url("https://github.com/rickynils")
217-
)
218-
)
52+
scalas = List((ThisBuild / scalaVersion).value)))
53+
54+
ThisBuild / tlBaseVersion := "1.15"
55+
ThisBuild / tlMimaPreviousVersions ++= Set(
56+
// manually added because tags are not v-prefixed
57+
"1.14.0",
58+
"1.14.1",
59+
"1.14.2",
60+
"1.14.3",
61+
"1.15.0",
62+
"1.15.1",
63+
"1.15.2",
64+
"1.15.3",
65+
"1.15.4",
21966
)
67+
ThisBuild / tlVersionIntroduced := Map("3" -> "1.15.3")
22068

221-
lazy val js = project.in(file("js"))
222-
.settings(sharedSettings: _*)
223-
.settings(
224-
Global / scalaJSStage := FastOptStage,
225-
libraryDependencies +=
226-
("org.scala-js" %% "scalajs-test-interface" % scalaJSVersion).cross(CrossVersion.for3Use2_13)
227-
)
228-
.enablePlugins(ScalaJSPlugin)
69+
lazy val root = tlCrossRootProject.aggregate(core, bench)
22970

230-
lazy val jvm = project.in(file("jvm"))
231-
.settings(sharedSettings: _*)
71+
lazy val core = crossProject(JVMPlatform, JSPlatform, NativePlatform)
72+
.in(file("core"))
23273
.settings(
233-
Test / fork := {
234-
// Serialization issue in 2.13 and later
235-
CrossVersion.partialVersion(scalaVersion.value) match {
236-
case Some((3, _)) => true
237-
case Some((2, 13)) => true
238-
case _ => false
74+
name := "scalacheck",
75+
Compile / unmanagedSourceDirectories += {
76+
val s = CrossVersion.partialVersion(scalaVersion.value) match {
77+
case Some((3, _)) => "scala-2.13+"
78+
case Some((2, 13)) => "scala-2.13+"
79+
case _ => "scala-2.13-"
23980
}
81+
baseDirectory.value / ".." / "shared" / "src" / "main" / s
24082
},
24183
Test / unmanagedSourceDirectories += {
24284
val s = CrossVersion.partialVersion(scalaVersion.value) match {
24385
case Some((3, _)) => "scala-2.13+"
24486
case Some((2, 13)) => "scala-2.13+"
24587
case _ => "scala-2.13-"
24688
}
247-
baseDirectory.value / "src" / "test" / s
89+
baseDirectory.value / ".." / "shared" / "src" / "test" / s
90+
},
91+
Compile / sourceGenerators += task {
92+
val dir = (Compile / sourceManaged).value / "org" / "scalacheck"
93+
codegen.genAll.map { s =>
94+
val f = dir / s.name
95+
IO.write(f, s.code)
96+
f
97+
}
24898
},
249-
libraryDependencies += "org.apache.commons" % "commons-lang3" % "3.12.0" % "test",
250-
libraryDependencies += "org.scala-sbt" % "test-interface" % "1.0"
99+
tlFatalWarnings := false // TODO
251100
)
252-
253-
lazy val native = project.in(file("native"))
254-
.settings(sharedSettings: _*)
255-
.settings(
256-
scalaVersion := Scala212,
257-
crossScalaVersions := Seq(Scala212, Scala213),
258-
// TODO: re-enable MiMa for native once published
259-
mimaPreviousArtifacts := Set(),
101+
.jvmSettings(
102+
Test / fork := true,
260103
libraryDependencies ++= Seq(
261-
"org.scala-native" %%% "test-interface" % nativeVersion
104+
"org.apache.commons" % "commons-lang3" % "3.12.0" % Test,
105+
"org.scala-sbt" % "test-interface" % "1.0"
262106
)
263107
)
264-
.enablePlugins(ScalaNativePlugin)
108+
.jsSettings(
109+
libraryDependencies +=
110+
("org.scala-js" %% "scalajs-test-interface" % scalaJSVersion).cross(CrossVersion.for3Use2_13),
111+
tlVersionIntroduced ++= List("2.12", "2.13").map(_ -> "1.14.3").toMap
112+
)
113+
.nativeSettings(
114+
libraryDependencies ++= Seq(
115+
"org.scala-native" %%% "test-interface" % nativeVersion
116+
),
117+
tlVersionIntroduced ++=
118+
List("2.12", "2.13").map(_ -> "1.15.2").toMap ++ Map("3" -> "1.15.5")
119+
)
265120

266121
lazy val bench = project.in(file("bench"))
267-
.dependsOn(jvm)
122+
.dependsOn(core.jvm)
268123
.settings(
269124
name := "scalacheck-bench",
270125
fork := true,
271-
publish / skip := true,
272-
mimaPreviousArtifacts := Set.empty,
273126
)
274-
.enablePlugins(JmhPlugin)
127+
.enablePlugins(NoPublishPlugin, JmhPlugin)

0 commit comments

Comments
 (0)