1- sourceDirectory := file(" dummy source directory" )
2-
31val Scala212 = " 2.12.15"
42val 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+ 15+ url = url(" https://github.com/rickynils" )
16+ )
17+ )
1518
19+ ThisBuild / crossScalaVersions := Seq (Scala3 , Scala212 , Scala213 )
1620val 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" ))
2522ThisBuild / 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
5931ThisBuild / 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- 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
266121lazy 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