scala.scm
1 | ;;; GNU Guix --- Functional package management for GNU |
2 | ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu> |
3 | ;;; |
4 | ;;; This file is part of GNU Guix. |
5 | ;;; |
6 | ;;; GNU Guix is free software; you can redistribute it and/or modify it |
7 | ;;; under the terms of the GNU General Public License as published by |
8 | ;;; the Free Software Foundation; either version 3 of the License, or (at |
9 | ;;; your option) any later version. |
10 | ;;; |
11 | ;;; GNU Guix is distributed in the hope that it will be useful, but |
12 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | ;;; GNU General Public License for more details. |
15 | ;;; |
16 | ;;; You should have received a copy of the GNU General Public License |
17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
18 | |
19 | (define-module (more packages scala) |
20 | #:use-module ((guix licenses) #:prefix license:) |
21 | #:use-module (gnu packages) |
22 | #:use-module (guix packages) |
23 | #:use-module (guix download) |
24 | #:use-module (guix git-download) |
25 | #:use-module (guix utils) |
26 | #:use-module (guix build-system ant) |
27 | #:use-module (guix build-system trivial) |
28 | #:use-module (gnu packages base) |
29 | #:use-module (gnu packages bash) |
30 | #:use-module (gnu packages compression) |
31 | #:use-module (gnu packages java) |
32 | #:use-module (more packages java)) |
33 | |
34 | ;; This package downloads the so-called official version of scala, a pre-built |
35 | ;; binary by the scala developers. |
36 | ;; This binary should never be made part of Guix itself, because we have |
37 | ;; ways to bootstrap it properly. The bootstrap project of scala takes time, |
38 | ;; so in the meantime... here you are :( |
39 | (define-public scala-official |
40 | (package |
41 | (name "scala-official") |
42 | (version "2.12.6") |
43 | (source |
44 | (origin |
45 | (method url-fetch) |
46 | (uri (string-append "https://downloads.lightbend.com/scala/" |
47 | version "/scala-" version ".tgz")) |
48 | (sha256 |
49 | (base32 |
50 | "05ili2959yrshqi44wpmwy0dyfm4kvp6i8mlbnj1xvc5b9649iqs")))) |
51 | (build-system trivial-build-system) |
52 | (arguments |
53 | `(#:modules ((guix build utils)) |
54 | #:builder (begin |
55 | (use-modules (guix build utils)) |
56 | (let* ((source (assoc-ref %build-inputs "source")) |
57 | (java (assoc-ref %build-inputs "icedtea-8")) |
58 | (bash (assoc-ref %build-inputs "bash")) |
59 | (tar (string-append |
60 | (assoc-ref %build-inputs "tar") |
61 | "/bin/tar")) |
62 | (gzip (assoc-ref %build-inputs "gzip")) |
63 | (output (assoc-ref %outputs "out")) |
64 | (bindir (string-append output "/bin"))) |
65 | (mkdir-p output) |
66 | (setenv "PATH" (string-append (getenv "PATH") ":" gzip "/bin")) |
67 | (invoke tar "xf" source) |
68 | (copy-recursively "scala-2.12.6" output) |
69 | (chdir output) |
70 | (for-each delete-file (find-files "bin" "bat$")) |
71 | (substitute* (find-files "bin" ".*") |
72 | (("^#!.*") |
73 | (string-append "#!" bash "/bin/bash\n" "JAVA_HOME=" java))))))) |
74 | (inputs |
75 | `(("bash" ,bash) |
76 | ("gzip" ,gzip) |
77 | ("icedtea-8" ,icedtea-8) |
78 | ("tar" ,tar))) |
79 | (home-page "https://scala-lang.org/") |
80 | (synopsis "") |
81 | (description "") |
82 | (license license:bsd-3))) |
83 | |
84 | (define-public sbt-boilerplate-standalone |
85 | (package |
86 | (name "sbt-boilerplate-standalone") |
87 | (version "0.6.1") |
88 | (source (origin |
89 | (method url-fetch) |
90 | (uri (string-append "https://github.com/sbt/sbt-boilerplate/archive/v" |
91 | version ".tar.gz")) |
92 | (file-name (string-append name "-" version ".tar.gz")) |
93 | (sha256 |
94 | (base32 |
95 | "1xzh7qrsl2nmnbyzlmrshzfsf8b4qgf6yaqm1hn3qnzk6761p2jy")))) |
96 | (build-system ant-build-system) |
97 | (arguments |
98 | `(#:tests? #f |
99 | #:jdk ,icedtea-8 |
100 | #:phases |
101 | (modify-phases %standard-phases |
102 | (add-before 'build 'add-standalone |
103 | (lambda _ |
104 | (substitute* "src/main/scala/spray/boilerplate/Generator.scala" |
105 | (("object Generator \\{") |
106 | "object Generator { |
107 | def main(args: Array[String]): Unit = { |
108 | val num = args(2).toInt |
109 | val file = scala.io.Source.fromFile(args(0)) |
110 | val content = file.mkString |
111 | val result = new java.io.PrintWriter(new java.io.File(args(1))) |
112 | |
113 | file.close |
114 | result.write(generateFromTemplate(content, num)) |
115 | result.close() |
116 | }")) |
117 | #t)) |
118 | (replace 'build |
119 | (lambda _ |
120 | (mkdir-p "build/classes") |
121 | (mkdir-p "build/jar") |
122 | (invoke "scalac" "-classpath" (getenv "CLASSPATH") |
123 | "-d" "build/classes" |
124 | "src/main/scala/spray/boilerplate/Generator.scala" |
125 | "src/main/scala/spray/boilerplate/TemplateParser.scala") |
126 | (invoke "jar" "-cf" "build/jar/boilerplate.jar" |
127 | "-C" "build/classes" ".") |
128 | #t)) |
129 | (replace 'install |
130 | (install-jars "build"))))) |
131 | (native-inputs |
132 | `(("scala" ,scala-official))) |
133 | (home-page "https://github.com/sbt/sbt-boilerplate") |
134 | (synopsis "") |
135 | (description "") |
136 | (license license:bsd-2))) |
137 | |
138 | (define-public scala-sjsonnew |
139 | (package |
140 | (name "scala-sjsonnew") |
141 | (version "0.8.2") |
142 | (source |
143 | (origin |
144 | (method url-fetch) |
145 | (uri (string-append "https://github.com/eed3si9n/sjson-new/archive/v" |
146 | version ".tar.gz")) |
147 | (file-name (string-append name "-" version ".tar.gz")) |
148 | (sha256 |
149 | (base32 |
150 | "1rv0c50af5kn27x51g650wl2ig94z52fhs0rn8ykahpz4jhg1p7p")))) |
151 | (arguments |
152 | `(#:tests? #f |
153 | #:jdk ,icedtea-8 |
154 | #:phases |
155 | (modify-phases %standard-phases |
156 | (add-before 'build 'generate-boilerplate |
157 | (lambda _ |
158 | ; CaseClassFormats.scala.template FlatUnionFormats.scala.template TupleFormats.scala.template UnionFormats.scala.template |
159 | (invoke "java" "-cp" (getenv "CLASSPATH") "spray.boilerplate.Generator" |
160 | "core/src/main/boilerplate/sjsonnew/CaseClassFormats.scala.template" |
161 | "core/src/main/scala/sjsonnew/CaseClassFormats.scala" "22") |
162 | (invoke "java" "-cp" (getenv "CLASSPATH") "spray.boilerplate.Generator" |
163 | "core/src/main/boilerplate/sjsonnew/FlatUnionFormats.scala.template" |
164 | "core/src/main/scala/sjsonnew/FlatUnionFormats.scala" "22") |
165 | (invoke "java" "-cp" (getenv "CLASSPATH") "spray.boilerplate.Generator" |
166 | "core/src/main/boilerplate/sjsonnew/TupleFormats.scala.template" |
167 | "core/src/main/scala/sjsonnew/TupleFormats.scala" "22") |
168 | (invoke "java" "-cp" (getenv "CLASSPATH") "spray.boilerplate.Generator" |
169 | "core/src/main/boilerplate/sjsonnew/UnionFormats.scala.template" |
170 | "core/src/main/scala/sjsonnew/UnionFormats.scala" "22") |
171 | #t)) |
172 | (replace 'build |
173 | (lambda _ |
174 | (mkdir-p "build/classes") |
175 | (apply invoke "scalac" "-classpath" (getenv "CLASSPATH") |
176 | "-d" "build/classes" |
177 | (find-files "core/src/main/scala" ".*.scala$")) |
178 | (mkdir-p "build/jar") |
179 | (invoke "jar" "-cf" "build/jar/sjsonnew.jar" |
180 | "-C" "build/classes" ".") |
181 | #t)) |
182 | (replace 'install |
183 | (install-jars "build"))))) |
184 | (build-system ant-build-system) |
185 | (native-inputs |
186 | `(("scala" ,scala-official) |
187 | ("sbt-boilerplate-standalone" ,sbt-boilerplate-standalone))) |
188 | (home-page "") |
189 | (synopsis "") |
190 | (description "") |
191 | (license license:asl2.0))) |
192 | |
193 | (define-public scala-scalajson |
194 | (package |
195 | (name "scala-scalajson") |
196 | (version "1.0.0-M4") |
197 | (source (origin |
198 | (method url-fetch) |
199 | (uri (string-append "https://github.com/mdedetrich/scalajson/archive/v" version ".tar.gz")) |
200 | (file-name (string-append name "-" version ".tar.gz")) |
201 | (sha256 |
202 | (base32 |
203 | "0k4dj2zm7zilhshdnvqi9n17qr4szc5s9ymsm9imgqpr8r5hm2vj")))) |
204 | (build-system ant-build-system) |
205 | (arguments |
206 | `(#:tests? #f |
207 | #:phases |
208 | (modify-phases %standard-phases |
209 | (replace 'build |
210 | (lambda _ |
211 | (mkdir-p "build/classes") |
212 | (apply invoke "scalac" "-classpath" (getenv "CLASSPATH") |
213 | "-d" "build/classes" |
214 | (find-files "shared/src/main/scala" ".*.scala$")) |
215 | (mkdir-p "build/jar") |
216 | (invoke "jar" "-cf" "build/jar/scalajson-shared.jar" |
217 | "-C" "build/classes" ".") |
218 | (delete-file-recursively "build/classes") |
219 | (setenv "CLASSPATH" (string-append (getenv "CLASSPATH") ":build/jar/scalajson-shared.jar")) |
220 | (mkdir-p "build/classes") |
221 | (apply invoke "scalac" "-classpath" (getenv "CLASSPATH") |
222 | "-d" "build/classes" |
223 | (find-files "jvm/src/main/scala" ".*.scala$")) |
224 | (mkdir-p "build/jar") |
225 | (invoke "jar" "-cf" "build/jar/scalajson-jvm.jar" |
226 | "-C" "build/classes" ".") |
227 | #t)) |
228 | (replace 'install |
229 | (install-jars "build"))))) |
230 | (native-inputs |
231 | `(("scala" ,scala-official))) |
232 | (home-page "") |
233 | (synopsis "") |
234 | (description "") |
235 | (license license:bsd-3))) |
236 | |
237 | ;; Latest is 0.13.0, but this version is required for scala-jsonnew |
238 | (define-public scala-jawn |
239 | (package |
240 | (name "scala-jawn") |
241 | (version "0.10.4") |
242 | (source (origin |
243 | (method url-fetch) |
244 | (uri (string-append "https://github.com/non/jawn/archive/v" |
245 | version ".tar.gz")) |
246 | (file-name (string-append name "-" version ".tar.gz")) |
247 | (sha256 |
248 | (base32 |
249 | "1iic1rp7w7vsy0xhi40rcp339vcq5b4b46f51qrkfpv433f7hafi")))) |
250 | (build-system ant-build-system) |
251 | (arguments |
252 | `(#:tests? #f |
253 | #:phases |
254 | (modify-phases %standard-phases |
255 | (replace 'build |
256 | (lambda _ |
257 | (mkdir-p "build/classes") |
258 | (apply invoke "scalac" "-classpath" (getenv "CLASSPATH") |
259 | "-d" "build/classes" |
260 | (find-files "util/src/main/scala" ".*.scala$")) |
261 | (mkdir-p "build/jar") |
262 | (invoke "jar" "-cf" "build/jar/jawn-util.jar" |
263 | "-C" "build/classes" ".") |
264 | (delete-file-recursively "build/classes") |
265 | (setenv "CLASSPATH" (string-append (getenv "CLASSPATH") ":build/jar/scalajson-shared.jar")) |
266 | (mkdir-p "build/classes") |
267 | (apply invoke "scalac" "-classpath" (getenv "CLASSPATH") |
268 | "-d" "build/classes" |
269 | (find-files "parser/src/main/scala" ".*.scala$")) |
270 | (mkdir-p "build/jar") |
271 | (invoke "jar" "-cf" "build/jar/jawn-parser.jar" |
272 | "-C" "build/classes" ".") |
273 | #t)) |
274 | (replace 'install |
275 | (install-jars "build"))))) |
276 | (native-inputs |
277 | `(("scala" ,scala-official))) |
278 | (home-page "") |
279 | (synopsis "") |
280 | (description "") |
281 | (license license:bsd-3))) |
282 | |
283 | (define-public scala-sjsonnew-support-scalajson |
284 | (package |
285 | (inherit scala-sjsonnew) |
286 | (name "scala-sjsonnew-support-scalajson") |
287 | (arguments |
288 | `(#:tests? #f |
289 | #:phases |
290 | (modify-phases %standard-phases |
291 | (replace 'build |
292 | (lambda _ |
293 | (substitute* (find-files "." ".*.scala") |
294 | (("shaded.scalajson") "scalajson")) |
295 | (mkdir-p "build/classes") |
296 | (apply invoke "scalac" "-classpath" (getenv "CLASSPATH") |
297 | "-d" "build/classes" |
298 | (find-files "support/scalajson/src/main/scala" ".*.scala$")) |
299 | (mkdir-p "build/jar") |
300 | (invoke "jar" "-cf" "build/jar/sjsonnew-support-scalajson.jar" |
301 | "-C" "build/classes" ".") |
302 | #t)) |
303 | (replace 'install |
304 | (install-jars "build"))))) |
305 | (inputs |
306 | `(("scala-sjsonnew" ,scala-sjsonnew) |
307 | ("scala-scalajson" ,scala-scalajson) |
308 | ("scala-jawn" ,scala-jawn))))) |
309 | |
310 | (define-public scala-sjsonnew-support-murmurhash |
311 | (package |
312 | (inherit scala-sjsonnew) |
313 | (name "scala-sjsonnew-support-murmurhash") |
314 | (arguments |
315 | `(#:tests? #f |
316 | #:phases |
317 | (modify-phases %standard-phases |
318 | (replace 'build |
319 | (lambda _ |
320 | (mkdir-p "build/classes") |
321 | (apply invoke "scalac" "-classpath" (getenv "CLASSPATH") |
322 | "-d" "build/classes" |
323 | (find-files "support/murmurhash/src/main/scala" ".*.scala$")) |
324 | (mkdir-p "build/jar") |
325 | (invoke "jar" "-cf" "build/jar/sjsonnew-support-murmurhash.jar" |
326 | "-C" "build/classes" ".") |
327 | #t)) |
328 | (replace 'install |
329 | (install-jars "build"))))) |
330 | (inputs |
331 | `(("scala-sjsonnew" ,scala-sjsonnew))))) |
332 | |
333 | (define-public scala-kind-projector |
334 | (package |
335 | (name "scala-kind-projector") |
336 | (version "0.9.7") |
337 | (source (origin |
338 | (method url-fetch) |
339 | (uri (string-append "https://github.com/non/kind-projector/archive/v" |
340 | version ".tar.gz")) |
341 | (file-name (string-append name "-" version ".tar.gz")) |
342 | (sha256 |
343 | (base32 |
344 | "176g2d7ix2asp94ch39mza84k6z8by308hzglxs8933j8byramff")))) |
345 | (build-system ant-build-system) |
346 | (arguments |
347 | `(#:jdk ,icedtea-8 |
348 | #:phases |
349 | (modify-phases %standard-phases |
350 | (replace 'build |
351 | (lambda _ |
352 | (mkdir-p "build/classes") |
353 | (mkdir-p "build/jar") |
354 | (copy-recursively "src/main/resources" "build/classes") |
355 | (apply invoke "scalac" "-classpath" (getenv "CLASSPATH") |
356 | "-d" "build/classes" |
357 | (find-files "src/main/scala" ".*.scala$")) |
358 | (invoke "jar" "-cf" "build/jar/kind-projector.jar" |
359 | "-C" "build/classes" ".") |
360 | #t)) |
361 | (replace 'check |
362 | (lambda _ |
363 | (mkdir-p "build/test-classes") |
364 | (copy-recursively "src/test/resources" "build/test-classes") |
365 | (apply invoke "scalac" "-classpath" (getenv "CLASSPATH") |
366 | "-Xplugin:build/jar/kind-projector.jar" |
367 | "-d" "build/test-classes" |
368 | (find-files "src/test/scala" ".*.scala$")) |
369 | ;; TODO: actually run the tests... :D |
370 | #t)) |
371 | (replace 'install |
372 | (install-jars "build"))))) |
373 | (native-inputs |
374 | `(("scala-official" ,scala-official) |
375 | ("java-junit" ,java-junit))) |
376 | (home-page "https://github.com/non/kind-projector") |
377 | (synopsis "Scala compiler plugin for type lambda") |
378 | (description "Kind projector is a Scala compiler plugin for making type |
379 | lambdas (type projections) easier to write.") |
380 | (license license:expat))) |
381 | |
382 | (define-public sbt-util-position |
383 | (package |
384 | (name "sbt-util-position") |
385 | (version "1.2.2") |
386 | (source |
387 | (origin |
388 | (method url-fetch) |
389 | (uri (string-append "https://github.com/sbt/util/archive/v" |
390 | version ".tar.gz")) |
391 | (file-name (string-append "sbt-util-" version ".tar.gz")) |
392 | (sha256 |
393 | (base32 |
394 | "1mj6ny62crq1d8850lkj00g3wsjhflaxrqiiv72b02fb8hn671dh")))) |
395 | (build-system ant-build-system) |
396 | (arguments |
397 | `(#:tests? #f |
398 | #:jdk ,icedtea-8 |
399 | #:phases |
400 | (modify-phases %standard-phases |
401 | (replace 'build |
402 | (lambda* (#:key inputs #:allow-other-keys) |
403 | (define (build-subproject prefix name) |
404 | (let ((build-directory (string-append "build/" name)) |
405 | (jar-name (string-append name ".jar"))) |
406 | (mkdir-p build-directory) |
407 | (format #t "Building project ~a...~%" name) |
408 | (apply invoke "scalac" "-classpath" |
409 | (string-append (getenv "CLASSPATH") ":build/util-interface") |
410 | "-d" build-directory "-language:experimental.macros" |
411 | (find-files (string-append prefix name "/src/main/scala") |
412 | ".*.scala$")) |
413 | (invoke "jar" "cf" jar-name "-C" build-directory "."))) |
414 | (build-subproject "internal/" "util-position") |
415 | #t)) |
416 | (replace 'install |
417 | (install-jars "."))))) |
418 | (inputs |
419 | `(("java-log4j-api" ,java-log4j-api) |
420 | ("java-log4j-core" ,java-log4j-core) |
421 | ("scala" ,scala-official) |
422 | ("scala-sjsonnew" ,scala-sjsonnew))) |
423 | (home-page "https://www.scala-sbt.org/") |
424 | (synopsis "") |
425 | (description "") |
426 | (license license:bsd-3))) |
427 | |
428 | (define-public sbt-util-control |
429 | (package |
430 | (inherit sbt-util-position) |
431 | (name "sbt-util-control") |
432 | (arguments |
433 | `(#:tests? #f |
434 | #:jdk ,icedtea-8 |
435 | #:phases |
436 | (modify-phases %standard-phases |
437 | (replace 'build |
438 | (lambda* (#:key inputs #:allow-other-keys) |
439 | (define (build-subproject prefix name) |
440 | (let ((build-directory (string-append "build/" name)) |
441 | (jar-name (string-append name ".jar"))) |
442 | (mkdir-p build-directory) |
443 | (format #t "Building project ~a...~%" name) |
444 | (apply invoke "scalac" "-classpath" |
445 | (string-append (getenv "CLASSPATH") ":build/util-interface") |
446 | "-d" build-directory "-language:experimental.macros" |
447 | (find-files (string-append prefix name "/src/main/scala") |
448 | ".*.scala$")) |
449 | (invoke "jar" "cf" jar-name "-C" build-directory "."))) |
450 | (build-subproject "internal/" "util-control") |
451 | #t)) |
452 | (replace 'install |
453 | (install-jars "."))))))) |
454 | |
455 | (define-public sbt-util-interface |
456 | (package |
457 | (inherit sbt-util-position) |
458 | (name "sbt-util-interface") |
459 | (arguments |
460 | `(#:tests? #f |
461 | #:jdk ,icedtea-8 |
462 | #:source-dir "internal/util-interface/src/main/java" |
463 | #:jar-name "util-interface.jar")))) |
464 | |
465 | (define-public java-log4j-api-for-sbt |
466 | (package |
467 | (inherit java-log4j-api) |
468 | (version "2.8.1") |
469 | ;(version "2.11.1") |
470 | (arguments |
471 | (ensure-keyword-arguments (package-arguments java-log4j-api) |
472 | `(#:jdk ,icedtea-8 |
473 | #:source-dir "src/main/java" |
474 | #:phases |
475 | (modify-phases %standard-phases |
476 | (add-after 'unpack 'chdir |
477 | (lambda _ |
478 | (chdir "log4j-api") |
479 | #t)) |
480 | (add-before 'build 'fix-ambiguous |
481 | (lambda _ |
482 | (substitute* "src/main/java/org/apache/logging/log4j/message/MapMessage.java" |
483 | (("append\\(data") "append((CharSequence)data")) |
484 | #t)))))) |
485 | (source (origin |
486 | (method url-fetch) |
487 | (uri (string-append "mirror://apache/logging/log4j/" version |
488 | "/apache-log4j-" version "-src.tar.gz")) |
489 | (sha256 |
490 | (base32 |
491 | "0x5gksgh0jkvd7k70rqrs2hy3glms0pkj6lhl26m6f83x1b6kvdm")))))) |
492 | ;"1dhxnd0348is21w93m1rv2sbfwyx83rv63adnbd0bgjq01gzbvic")))))) |
493 | |
494 | ;; More dependencies needed |
495 | (define-public java-log4j-core-for-sbt |
496 | (package |
497 | (inherit java-log4j-api-for-sbt) |
498 | (name "java-log4j-core") |
499 | (inputs |
500 | `(("java-osgi-core" ,java-osgi-core) |
501 | ("java-hamcrest-core" ,java-hamcrest-core) |
502 | ("java-log4j-api" ,java-log4j-api-for-sbt) |
503 | ("java-mail" ,java-mail) |
504 | ("java-jansi" ,java-jansi) |
505 | ("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec) |
506 | ("java-jctools-core" ,java-jctools-core) |
507 | ("java-lmax-disruptor" ,java-lmax-disruptor) |
508 | ("java-kafka" ,java-kafka-clients) |
509 | ("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence) |
510 | ("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations) |
511 | ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core) |
512 | ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind) |
513 | ("java-fasterxml-jackson-dataformat-xml" ,java-fasterxml-jackson-dataformat-xml) |
514 | ("java-fasterxml-jackson-dataformat-yaml" ,java-fasterxml-jackson-dataformat-yaml) |
515 | ("java-commons-compress" ,java-commons-compress) |
516 | ("java-commons-csv" ,java-commons-csv) |
517 | ("java-conversantmedia-disruptor" ,java-conversantmedia-disruptor) |
518 | ("java-jcommander" ,java-jcommander) |
519 | ("java-stax2-api" ,java-stax2-api) |
520 | ("java-jeromq" ,java-jeromq) |
521 | ("java-junit" ,java-junit))) |
522 | (native-inputs |
523 | `(("hamcrest" ,java-hamcrest-all) |
524 | ("java-commons-io" ,java-commons-io) |
525 | ("java-commons-lang3" ,java-commons-lang3) |
526 | ("slf4j" ,java-slf4j-api))) |
527 | (arguments |
528 | `(#:tests? #f ; tests require more dependencies |
529 | #:test-dir "src/test" |
530 | #:source-dir "src/main/java" |
531 | #:jar-name "log4j-core.jar" |
532 | #:jdk ,icedtea-8 |
533 | #:make-flags |
534 | (list (string-append "-Ddist.dir=" (assoc-ref %outputs "out") |
535 | "/share/java")) |
536 | #:phases |
537 | (modify-phases %standard-phases |
538 | (add-after 'unpack 'enter-dir |
539 | (lambda _ (chdir "log4j-core") #t)) |
540 | (add-before 'build 'fix-ambiguous |
541 | (lambda _ |
542 | (substitute* "src/main/java/org/apache/logging/log4j/core/pattern/MapPatternConverter.java" |
543 | (("append\\(sortedMap") "append((CharSequence)sortedMap")) |
544 | #t))))) |
545 | (synopsis "Core component of the Log4j framework") |
546 | (description "This package provides the core component of the Log4j |
547 | logging framework for Java."))) |
548 | |
549 | |
550 | (define-public sbt-util-logging |
551 | (package |
552 | (inherit sbt-util-position) |
553 | (name "sbt-util-logging") |
554 | (arguments |
555 | `(#:tests? #f |
556 | #:jdk ,icedtea-8 |
557 | #:phases |
558 | (modify-phases %standard-phases |
559 | (replace 'build |
560 | (lambda* (#:key inputs #:allow-other-keys) |
561 | (define (build-subproject prefix name) |
562 | (let ((build-directory (string-append "build/" name)) |
563 | (jar-name (string-append name ".jar"))) |
564 | (mkdir-p build-directory) |
565 | (format #t "Building project ~a...~%" name) |
566 | (substitute* (find-files "." ".*.scala") |
567 | (("sjsonnew.shaded.") "")) |
568 | (apply invoke "scalac" "-classpath" |
569 | (string-append (getenv "CLASSPATH") ":build/util-interface") |
570 | "-d" build-directory "-language:experimental.macros" |
571 | (append |
572 | (find-files (string-append prefix name "/src/main/contraband-scala") |
573 | ".*.scala$") |
574 | (find-files (string-append prefix name "/src/main/scala") |
575 | ".*.scala$"))) |
576 | (invoke "jar" "cf" jar-name "-C" build-directory "."))) |
577 | (build-subproject "internal/" "util-logging") |
578 | #t)) |
579 | (replace 'install |
580 | (install-jars "."))))) |
581 | (inputs |
582 | `(("java-log4j-api" ,java-log4j-api-for-sbt) |
583 | ("java-log4j-core" ,java-log4j-core-for-sbt) |
584 | ("sbt-util-interface" ,sbt-util-interface) |
585 | ("scala-scalajson" ,scala-scalajson) |
586 | ("scala-sjsonnew" ,scala-sjsonnew) |
587 | ("scala-sjsonnew-support-scalajson" ,scala-sjsonnew-support-scalajson))) |
588 | (native-inputs |
589 | `(("scala-official" ,scala-official))))) |
590 | |
591 | (define-public sbt-util-cache |
592 | (package |
593 | (inherit sbt-util-position) |
594 | (name "sbt-util-cache") |
595 | (arguments |
596 | `(#:tests? #f |
597 | #:phases |
598 | (modify-phases %standard-phases |
599 | (replace 'build |
600 | (lambda* (#:key inputs #:allow-other-keys) |
601 | (define (build-subproject prefix name) |
602 | (let ((build-directory (string-append "build/" name)) |
603 | (jar-name (string-append name ".jar"))) |
604 | (mkdir-p build-directory) |
605 | (substitute* (find-files "." ".*.scala") |
606 | (("sjsonnew.shaded.") "")) |
607 | (format #t "Building project ~a...~%" name) |
608 | (apply invoke "scalac" "-classpath" |
609 | (string-append (getenv "CLASSPATH") ":build/util-interface") |
610 | "-d" build-directory "-language:experimental.macros" |
611 | (append |
612 | (find-files (string-append prefix name "/src/main/contraband-scala") |
613 | ".*.scala$") |
614 | (find-files (string-append prefix name "/src/main/scala") |
615 | ".*.scala$"))) |
616 | (invoke "jar" "cf" jar-name "-C" build-directory "."))) |
617 | (build-subproject "" "util-cache") |
618 | #t)) |
619 | (replace 'install |
620 | (install-jars "."))))) |
621 | (inputs |
622 | `(("sbt-io" ,sbt-io) |
623 | ("scala-jawn" ,scala-jawn) |
624 | ("scala-scalajson" ,scala-scalajson) |
625 | ("scala-sjsonnew" ,scala-sjsonnew) |
626 | ("scala-sjsonnew-support-murmurhash" ,scala-sjsonnew-support-murmurhash) |
627 | ("scala-sjsonnew-support-scalajson" ,scala-sjsonnew-support-scalajson))) |
628 | (native-inputs |
629 | `(("scala-official" ,scala-official))))) |
630 | |
631 | (define-public java-swoval-apple-file-events |
632 | (package |
633 | (name "java-swoval-apple-file-events") |
634 | (version "1.3.2") |
635 | (source (origin |
636 | (method url-fetch) |
637 | (uri (string-append "https://github.com/swoval/swoval/archive/v" |
638 | version ".tar.gz")) |
639 | (file-name (string-append "scala-swoval-" version ".tar.gz")) |
640 | (sha256 |
641 | (base32 |
642 | "0ivrc4lcali84xp8frkjb2zi1l3lw8pim9xbkfah5iyj120gw6mq")))) |
643 | (build-system ant-build-system) |
644 | (arguments |
645 | `(#:jdk ,icedtea-8 |
646 | #:tests? #f; no tests |
647 | #:jar-name "apple-file-events.jar" |
648 | #:source-dir "apple-file-events/jvm/src/main/java")) |
649 | (home-page "") |
650 | (synopsis "") |
651 | (description "") |
652 | (license license:expat))) |
653 | |
654 | (define-public sbt-io |
655 | (package |
656 | (name "sbt-io") |
657 | (version "1.2.1") |
658 | (source |
659 | (origin |
660 | (method url-fetch) |
661 | (uri (string-append "https://github.com/sbt/io/archive/v" |
662 | version ".tar.gz")) |
663 | (file-name (string-append name "-" version ".tar.gz")) |
664 | (sha256 |
665 | (base32 |
666 | "0cgk3y3w8yjpivi910px529bz8bil49lrnib6wbwmvq8lw8mgrwq")))) |
667 | (build-system ant-build-system) |
668 | (arguments |
669 | `(#:tests? #f |
670 | #:jdk ,icedtea-8 |
671 | #:phases |
672 | (modify-phases %standard-phases |
673 | (replace 'build |
674 | (lambda* (#:key inputs #:allow-other-keys) |
675 | (mkdir-p "build/classes") |
676 | (apply invoke "scalac" "-classpath" |
677 | (string-append (getenv "CLASSPATH") ":build/util-interface") |
678 | "-d" "build/classes" |
679 | (append |
680 | (find-files "io/src/main/java" ".*.java$") |
681 | (find-files "io/src/main/scala" ".*.scala$") |
682 | (find-files "io/src/main/contraband-scala" ".*.scala$"))) |
683 | (invoke "jar" "cf" "sbt-io.jar" "-C" "build/classes" ".") |
684 | #t)) |
685 | (replace 'install |
686 | (install-jars "."))))) |
687 | (inputs |
688 | `(("java-native-access" ,java-native-access) |
689 | ("java-native-access-platform" ,java-native-access-platform) |
690 | ("java-swoval-apple-file-events" ,java-swoval-apple-file-events) |
691 | ("scala" ,scala-official))) |
692 | (home-page "https://www.scala-sbt.org/") |
693 | (synopsis "") |
694 | (description "") |
695 | (license license:bsd-3))) |
696 | |
697 | ;; https://index.scala-lang.org/eed3si9n/gigahorse/gigahorse-okhttp/0.3.0?target=_2.12 |
698 | (define-public sbt-librarymanagement |
699 | (package |
700 | (name "sbt-librarymanagement") |
701 | (version "1.2.3") |
702 | (source (origin |
703 | (method url-fetch) |
704 | (uri (string-append "https://github.com/sbt/librarymanagement/archive/v" version ".tar.gz")) |
705 | (file-name (string-append name "-" version ".tar.gz")) |
706 | (sha256 |
707 | (base32 |
708 | "0a29xzcw2qzviv073g040m3lcylybh2qj1xcdkcjdcfajad7c27k")))) |
709 | (build-system ant-build-system) |
710 | (arguments |
711 | `(#:tests? #f |
712 | #:phases |
713 | (modify-phases %standard-phases |
714 | (replace 'build |
715 | (lambda* (#:key inputs #:allow-other-keys) |
716 | (mkdir-p "build/classes") |
717 | (apply invoke "scalac" "-classpath" (getenv "CLASSPATH") |
718 | "-d" "build/classes" |
719 | (append |
720 | (find-files "core/src/main/java" ".*.java$") |
721 | (find-files "core/src/main/scala" ".*.scala$") |
722 | (find-files "core/src/main/contraband-scala" ".*.scala$"))) |
723 | (invoke "jar" "cf" "sbt-io.jar" "-C" "build/classes" ".") |
724 | #t)) |
725 | (replace 'install |
726 | (install-jars "."))))) |
727 | (inputs |
728 | `(("sbt-util-cache" ,sbt-util-cache) |
729 | ("sbt-util-interface" ,sbt-util-interface) |
730 | ("sbt-util-logging" ,sbt-util-logging) |
731 | ("sbt-util-position" ,sbt-util-position) |
732 | ("sbt-io" ,sbt-io) |
733 | ("scala-sjsonnew" ,scala-sjsonnew))) |
734 | (native-inputs |
735 | `(("scala" ,scala-official))) |
736 | (home-page "") |
737 | (synopsis "") |
738 | (description "") |
739 | ;; From core/NOTICE |
740 | (license license:bsd-2))) |
741 | |
742 | (define-public sbt |
743 | (package |
744 | (name "sbt") |
745 | (version "1.2.7") |
746 | (source |
747 | (origin |
748 | (method url-fetch) |
749 | (uri (string-append "https://github.com/sbt/sbt/archive/v" |
750 | version ".tar.gz")) |
751 | (file-name (string-append name "-" version ".tar.gz")) |
752 | (sha256 |
753 | (base32 |
754 | "0i0j6dcgn80bajq05h739h0d7kgcz7zbfk6qsnln8qrcx1wgbf0q")))) |
755 | (build-system ant-build-system) |
756 | (arguments |
757 | `(#:tests? #f |
758 | #:jdk ,icedtea-8 |
759 | #:phases |
760 | (modify-phases %standard-phases |
761 | (add-before 'build 'copy-resources |
762 | (lambda _ |
763 | (copy-recursively "sbt/src/main/resources" "build/classes") |
764 | #t)) |
765 | (add-before 'build 'generate-scalakeywords.scala |
766 | (lambda _ |
767 | (with-output-to-file "project/WriteKeywords.scala" |
768 | (lambda _ |
769 | (format #t "package project |
770 | object WriteKeywords { |
771 | def main(arg: Array[String]): Unit = { |
772 | val g = new scala.tools.nsc.Global(new scala.tools.nsc.Settings) |
773 | val keywords = g.nme.keywords.map(_.toString) |
774 | val init = keywords.map(tn => '\"' + tn + '\"').mkString(\"Set(\", \", \", \")\") |
775 | val ObjectName = \"ScalaKeywords\" |
776 | val PackageName = \"sbt.internal.util\" |
777 | val keywordsSrc = s\"\"\" |
778 | |package $PackageName |
779 | |object $ObjectName { |
780 | | val values = $init |
781 | |} |
782 | \"\"\".trim.stripMargin |
783 | val base = \"internal/util-collection/src/main/scala\" |
784 | val out = base + \"/\" + PackageName.replace('.', '/') + \"/\" + s\"$ObjectName.scala\" |
785 | val result = new java.io.PrintWriter(new java.io.File(out)) |
786 | result.write(keywordsSrc) |
787 | result.close() |
788 | } |
789 | }"))) |
790 | (invoke "scalac" "-classpath" (getenv "CLASSPATH") "project/WriteKeywords.scala") |
791 | (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":.") |
792 | "project.WriteKeywords") |
793 | #t)) |
794 | (replace 'build |
795 | (lambda* (#:key inputs #:allow-other-keys) |
796 | (define (build-subproject prefix name) |
797 | (let ((build-directory (string-append "build/" name)) |
798 | (jar-name (string-append name ".jar")) |
799 | (kind-projector (assoc-ref inputs "scala-kind-projector"))) |
800 | (mkdir-p build-directory) |
801 | (format #t "Building project ~a...~%" name) |
802 | (apply invoke "scalac" "-classpath" |
803 | ;; 13:36 < snape> roptat: I think you could use 'readdir', as in 'files-in-directory' from guix/build/union.scm |
804 | (apply string-append (getenv "CLASSPATH") |
805 | (map (lambda (file) (string-append ":" file)) |
806 | (find-files "build" "." #:directories? #t))) |
807 | "-d" build-directory |
808 | (string-append "-Xplugin:" kind-projector |
809 | "/share/java/kind-projector.jar") |
810 | (find-files (string-append prefix name "/src/main/scala") |
811 | ".*.scala$")) |
812 | (invoke "jar" "cf" jar-name "-C" build-directory "."))) |
813 | (build-subproject "internal/" "util-collection") |
814 | (build-subproject "internal/" "util-complete") |
815 | (build-subproject "" "core-macros") |
816 | (build-subproject "" "tasks") |
817 | (build-subproject "" "tasks-standard") |
818 | (build-subproject "" "main-settings") |
819 | (build-subproject "" "sbt") |
820 | #t)) |
821 | (replace 'install |
822 | (install-jars "."))))) |
823 | (inputs |
824 | `(("scala" ,scala-official) |
825 | ("scala-sjsonnew" ,scala-sjsonnew) |
826 | ("sbt-io" ,sbt-io) |
827 | ("sbt-util-cache" ,sbt-util-cache) |
828 | ("sbt-util-control" ,sbt-util-control) |
829 | ("sbt-util-interface" ,sbt-util-interface) |
830 | ("sbt-util-logging" ,sbt-util-logging) |
831 | ("sbt-util-position" ,sbt-util-position))) |
832 | (native-inputs |
833 | `(("scala-kind-projector" ,scala-kind-projector))) |
834 | (home-page "https://www.scala-sbt.org/") |
835 | (synopsis "") |
836 | (description "") |
837 | (license license:bsd-3))) |
838 |