guix-more/more/packages/scala.scm

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
33
;; This package downloads the so-called official version of scala, a pre-built
34
;; binary by the scala developers.
35
;; This binary should never be made part of Guix itself, because we have
36
;; ways to bootstrap it properly. The bootstrap project of scala takes time,
37
;; so in the meantime... here you are :(
38
(define-public scala-official
39
  (package
40
    (name "scala-official")
41
    (version "2.12.6")
42
    (source
43
      (origin
44
        (method url-fetch)
45
        (uri (string-append "https://downloads.lightbend.com/scala/"
46
                            version "/scala-" version ".tgz"))
47
        (sha256
48
         (base32
49
          "05ili2959yrshqi44wpmwy0dyfm4kvp6i8mlbnj1xvc5b9649iqs"))))
50
    (build-system trivial-build-system)
51
    (arguments
52
     `(#:modules ((guix build utils))
53
       #:builder (begin
54
                   (use-modules (guix build utils))
55
                   (let* ((source (assoc-ref %build-inputs "source"))
56
                          (java (assoc-ref %build-inputs "icedtea-8"))
57
                          (bash (assoc-ref %build-inputs "bash"))
58
                          (tar (string-append
59
                                 (assoc-ref %build-inputs "tar")
60
                                 "/bin/tar"))
61
                          (gzip (assoc-ref %build-inputs "gzip"))
62
                          (output (assoc-ref %outputs "out"))
63
                          (bindir (string-append output "/bin")))
64
                     (mkdir-p output)
65
                     (setenv "PATH" (string-append (getenv "PATH") ":" gzip "/bin"))
66
                     (invoke tar "xf" source)
67
                     (copy-recursively "scala-2.12.6" output)
68
                     (chdir output)
69
                     (for-each delete-file (find-files "bin" "bat$"))
70
                     (substitute* (find-files "bin" ".*")
71
                       (("^#!.*")
72
                        (string-append "#!" bash "/bin/bash\n" "JAVA_HOME=" java)))))))
73
    (inputs
74
     `(("bash" ,bash)
75
       ("gzip" ,gzip)
76
       ("icedtea-8" ,icedtea-8)
77
       ("tar" ,tar)))
78
    (home-page "https://scala-lang.org/")
79
    (synopsis "")
80
    (description "")
81
    (license license:bsd-3)))
82
83
(define-public sbt-boilerplate-standalone
84
  (package
85
    (name "sbt-boilerplate-standalone")
86
    (version "0.6.1")
87
    (source (origin
88
              (method url-fetch)
89
              (uri (string-append "https://github.com/sbt/sbt-boilerplate/archive/v"
90
                                  version ".tar.gz"))
91
              (file-name (string-append name "-" version ".tar.gz"))
92
              (sha256
93
               (base32
94
                "1xzh7qrsl2nmnbyzlmrshzfsf8b4qgf6yaqm1hn3qnzk6761p2jy"))))
95
    (build-system ant-build-system)
96
    (arguments
97
     `(#:tests? #f
98
       #:jdk ,icedtea-8
99
       #:phases
100
       (modify-phases %standard-phases
101
         (add-before 'build 'add-standalone
102
           (lambda _
103
             (substitute* "src/main/scala/spray/boilerplate/Generator.scala"
104
               (("object Generator \\{")
105
                "object Generator {
106
def main(args: Array[String]): Unit = {
107
    val num = args(2).toInt
108
    val file = scala.io.Source.fromFile(args(0))
109
    val content = file.mkString
110
    val result = new java.io.PrintWriter(new java.io.File(args(1)))
111
112
    file.close
113
    result.write(generateFromTemplate(content, num))
114
    result.close()
115
}"))
116
             #t))
117
         (replace 'build
118
           (lambda _
119
             (mkdir-p "build/classes")
120
             (mkdir-p "build/jar")
121
             (invoke "scalac" "-classpath" (getenv "CLASSPATH")
122
                     "-d" "build/classes"
123
                     "src/main/scala/spray/boilerplate/Generator.scala"
124
                     "src/main/scala/spray/boilerplate/TemplateParser.scala")
125
             (invoke "jar" "-cf" "build/jar/boilerplate.jar"
126
                     "-C" "build/classes" ".")
127
             #t))
128
         (replace 'install
129
           (install-jars "build")))))
130
    (native-inputs
131
     `(("scala" ,scala-official)))
132
    (home-page "https://github.com/sbt/sbt-boilerplate")
133
    (synopsis "")
134
    (description "")
135
    (license license:bsd-2)))
136
137
(define-public scala-sjsonnew
138
  (package
139
    (name "scala-sjsonnew")
140
    (version "0.8.2")
141
    (source
142
      (origin
143
        (method url-fetch)
144
        (uri (string-append "https://github.com/eed3si9n/sjson-new/archive/v"
145
                            version ".tar.gz"))
146
        (file-name (string-append name "-" version ".tar.gz"))
147
        (sha256
148
         (base32
149
          "1rv0c50af5kn27x51g650wl2ig94z52fhs0rn8ykahpz4jhg1p7p"))))
150
    (arguments
151
     `(#:tests? #f
152
       #:jdk ,icedtea-8
153
       #:phases
154
       (modify-phases %standard-phases
155
         (add-before 'build 'generate-boilerplate
156
           (lambda _
157
             ; CaseClassFormats.scala.template  FlatUnionFormats.scala.template  TupleFormats.scala.template  UnionFormats.scala.template
158
             (invoke "java" "-cp" (getenv "CLASSPATH") "spray.boilerplate.Generator"
159
                     "core/src/main/boilerplate/sjsonnew/CaseClassFormats.scala.template"
160
                     "core/src/main/scala/sjsonnew/CaseClassFormats.scala" "22")
161
             (invoke "java" "-cp" (getenv "CLASSPATH") "spray.boilerplate.Generator"
162
                     "core/src/main/boilerplate/sjsonnew/FlatUnionFormats.scala.template"
163
                     "core/src/main/scala/sjsonnew/FlatUnionFormats.scala" "22")
164
             (invoke "java" "-cp" (getenv "CLASSPATH") "spray.boilerplate.Generator"
165
                     "core/src/main/boilerplate/sjsonnew/TupleFormats.scala.template"
166
                     "core/src/main/scala/sjsonnew/TupleFormats.scala" "22")
167
             (invoke "java" "-cp" (getenv "CLASSPATH") "spray.boilerplate.Generator"
168
                     "core/src/main/boilerplate/sjsonnew/UnionFormats.scala.template"
169
                     "core/src/main/scala/sjsonnew/UnionFormats.scala" "22")
170
             #t))
171
         (replace 'build
172
           (lambda _
173
             (mkdir-p "build/classes")
174
             (apply invoke "scalac" "-classpath" (getenv "CLASSPATH")
175
                    "-d" "build/classes"
176
                    (find-files "core/src/main/scala" ".*.scala$"))
177
             (mkdir-p "build/jar")
178
             (invoke "jar" "-cf" "build/jar/sjsonnew.jar"
179
                     "-C" "build/classes" ".")
180
             #t))
181
         (replace 'install
182
           (install-jars "build")))))
183
    (build-system ant-build-system)
184
    (native-inputs
185
     `(("scala" ,scala-official)
186
       ("sbt-boilerplate-standalone" ,sbt-boilerplate-standalone)))
187
    (home-page "")
188
    (synopsis "")
189
    (description "")
190
    (license license:asl2.0)))
191
192
(define-public scala-kind-projector
193
  (package
194
    (name "scala-kind-projector")
195
    (version "0.9.7")
196
    (source (origin
197
              (method url-fetch)
198
              (uri (string-append "https://github.com/non/kind-projector/archive/v"
199
                                  version ".tar.gz"))
200
              (file-name (string-append name "-" version ".tar.gz"))
201
              (sha256
202
               (base32
203
                "176g2d7ix2asp94ch39mza84k6z8by308hzglxs8933j8byramff"))))
204
    (build-system ant-build-system)
205
    (arguments
206
     `(#:jdk ,icedtea-8
207
       #:phases
208
       (modify-phases %standard-phases
209
         (replace 'build
210
           (lambda _
211
             (mkdir-p "build/classes")
212
             (mkdir-p "build/jar")
213
             (copy-recursively "src/main/resources" "build/classes")
214
             (apply invoke "scalac" "-classpath" (getenv "CLASSPATH")
215
                    "-d" "build/classes"
216
                    (find-files "src/main/scala" ".*.scala$"))
217
             (invoke "jar" "-cf" "build/jar/kind-projector.jar"
218
                     "-C" "build/classes" ".")
219
             #t))
220
         (replace 'check
221
           (lambda _
222
             (mkdir-p "build/test-classes")
223
             (copy-recursively "src/test/resources" "build/test-classes")
224
             (apply invoke "scalac" "-classpath" (getenv "CLASSPATH")
225
                    "-Xplugin:build/jar/kind-projector.jar"
226
                    "-d" "build/test-classes"
227
                    (find-files "src/test/scala" ".*.scala$"))
228
             ;; TODO: actually run the tests... :D
229
             #t))
230
         (replace 'install
231
           (install-jars "build")))))
232
    (native-inputs
233
     `(("scala-official" ,scala-official)
234
       ("java-junit" ,java-junit)))
235
    (home-page "https://github.com/non/kind-projector")
236
    (synopsis "Scala compiler plugin for type lambda")
237
    (description "Kind projector is a Scala compiler plugin for making type
238
lambdas (type projections) easier to write.")
239
    (license license:expat)))
240
241
(define-public sbt-util-position
242
  (package
243
    (name "sbt-util-position")
244
    (version "1.2.2")
245
    (source
246
      (origin
247
        (method url-fetch)
248
        (uri (string-append "https://github.com/sbt/util/archive/v"
249
                            version ".tar.gz"))
250
        (file-name (string-append "sbt-util-" version ".tar.gz"))
251
        (sha256
252
         (base32
253
          "1mj6ny62crq1d8850lkj00g3wsjhflaxrqiiv72b02fb8hn671dh"))))
254
    (build-system ant-build-system)
255
    (arguments
256
     `(#:tests? #f
257
       #:jdk ,icedtea-8
258
       #:phases
259
       (modify-phases %standard-phases
260
         (replace 'build
261
           (lambda* (#:key inputs #:allow-other-keys)
262
             (define (build-subproject prefix name)
263
               (let ((build-directory (string-append "build/" name))
264
                     (jar-name (string-append name ".jar")))
265
                 (mkdir-p build-directory)
266
                 (format #t "Building project ~a...~%" name)
267
                 (apply invoke "scalac" "-classpath"
268
                        (string-append (getenv "CLASSPATH") ":build/util-interface")
269
                        "-d" build-directory "-language:experimental.macros"
270
                        (find-files (string-append prefix name "/src/main/scala")
271
                                    ".*.scala$"))
272
                 (invoke "jar" "cf" jar-name "-C" build-directory ".")))
273
             (build-subproject "internal/" "util-position")
274
             #t))
275
         (replace 'install
276
           (install-jars ".")))))
277
    (inputs
278
     `(("java-log4j-api" ,java-log4j-api)
279
       ("java-log4j-core" ,java-log4j-core)
280
       ("scala" ,scala-official)
281
       ("scala-sjsonnew" ,scala-sjsonnew)))
282
    (home-page "https://www.scala-sbt.org/")
283
    (synopsis "")
284
    (description "")
285
    (license license:bsd-3)))
286
287
(define-public sbt-util-control
288
  (package
289
    (inherit sbt-util-position)
290
    (name "sbt-util-control")
291
    (arguments
292
     `(#:tests? #f
293
       #:jdk ,icedtea-8
294
       #:phases
295
       (modify-phases %standard-phases
296
         (replace 'build
297
           (lambda* (#:key inputs #:allow-other-keys)
298
             (define (build-subproject prefix name)
299
               (let ((build-directory (string-append "build/" name))
300
                     (jar-name (string-append name ".jar")))
301
                 (mkdir-p build-directory)
302
                 (format #t "Building project ~a...~%" name)
303
                 (apply invoke "scalac" "-classpath"
304
                        (string-append (getenv "CLASSPATH") ":build/util-interface")
305
                        "-d" build-directory "-language:experimental.macros"
306
                        (find-files (string-append prefix name "/src/main/scala")
307
                                    ".*.scala$"))
308
                 (invoke "jar" "cf" jar-name "-C" build-directory ".")))
309
             (build-subproject "internal/" "util-control")
310
             #t))
311
         (replace 'install
312
           (install-jars ".")))))))
313
314
(define-public sbt-util-interface
315
  (package
316
    (inherit sbt-util-position)
317
    (name "sbt-util-interface")
318
    (arguments
319
     `(#:tests? #f
320
       #:jdk ,icedtea-8
321
       #:source-dir "internal/util-interface/src/main/java"
322
       #:jar-name "util-interface.jar"))))
323
324
(define-public java-log4j-api-for-sbt
325
  (package
326
    (inherit java-log4j-api)
327
    (version "2.8.1")
328
    ;(version "2.11.1")
329
    (arguments
330
     (ensure-keyword-arguments (package-arguments java-log4j-api)
331
       `(#:jdk ,icedtea-7)))
332
    (source (origin
333
              (method url-fetch)
334
              (uri (string-append "mirror://apache/logging/log4j/" version
335
                                  "/apache-log4j-" version "-src.tar.gz"))
336
              (sha256
337
               (base32
338
                "0x5gksgh0jkvd7k70rqrs2hy3glms0pkj6lhl26m6f83x1b6kvdm"))))))
339
                ;"1dhxnd0348is21w93m1rv2sbfwyx83rv63adnbd0bgjq01gzbvic"))))))
340
341
;; More dependencies needed
342
(define-public java-log4j-core-for-sbt
343
  (package
344
    (inherit java-log4j-api-for-sbt)
345
    (name "java-log4j-core")
346
    (inputs
347
     `(("java-osgi-core" ,java-osgi-core)
348
       ("java-hamcrest-core" ,java-hamcrest-core)
349
       ("java-log4j-api" ,java-log4j-api-for-sbt)
350
       ("java-mail" ,java-mail)
351
       ("java-jansi" ,java-jansi)
352
       ("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec)
353
       ("java-lmax-disruptor" ,java-lmax-disruptor)
354
       ("java-kafka" ,java-kafka-clients)
355
       ("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence)
356
       ("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
357
       ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)
358
       ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind)
359
       ("java-fasterxml-jackson-dataformat-xml" ,java-fasterxml-jackson-dataformat-xml)
360
       ("java-fasterxml-jackson-dataformat-yaml" ,java-fasterxml-jackson-dataformat-yaml)
361
       ("java-commons-compress" ,java-commons-compress)
362
       ("java-commons-csv" ,java-commons-csv)
363
       ("java-jeromq" ,java-jeromq)
364
       ("java-junit" ,java-junit)))
365
    (native-inputs
366
     `(("hamcrest" ,java-hamcrest-all)
367
       ("java-commons-io" ,java-commons-io)
368
       ("java-commons-lang3" ,java-commons-lang3)
369
       ("slf4j" ,java-slf4j-api)))
370
    (arguments
371
     `(#:tests? #f ; tests require more dependencies
372
       #:test-dir "src/test"
373
       #:source-dir "src/main/java"
374
       #:jar-name "log4j-core.jar"
375
       #:jdk ,icedtea-8
376
       #:make-flags
377
       (list (string-append "-Ddist.dir=" (assoc-ref %outputs "out")
378
                            "/share/java"))
379
       #:phases
380
       (modify-phases %standard-phases
381
         (add-after 'unpack 'enter-dir
382
           (lambda _ (chdir "log4j-core") #t)))))
383
    (synopsis "Core component of the Log4j framework")
384
    (description "This package provides the core component of the Log4j
385
logging framework for Java.")))
386
387
388
(define-public sbt-util-logging
389
  (package
390
    (inherit sbt-util-position)
391
    (name "sbt-util-logging")
392
    (arguments
393
     `(#:tests? #f
394
       #:jdk ,icedtea-8
395
       #:phases
396
       (modify-phases %standard-phases
397
         (replace 'build
398
           (lambda* (#:key inputs #:allow-other-keys)
399
             (define (build-subproject prefix name)
400
               (let ((build-directory (string-append "build/" name))
401
                     (jar-name (string-append name ".jar")))
402
                 (mkdir-p build-directory)
403
                 (format #t "Building project ~a...~%" name)
404
                 (apply invoke "scalac" "-classpath"
405
                        (string-append (getenv "CLASSPATH") ":build/util-interface")
406
                        "-d" build-directory "-language:experimental.macros"
407
                        (append
408
                          (find-files (string-append prefix name "/src/main/contraband-scala")
409
                                      ".*.scala$")
410
                          (find-files (string-append prefix name "/src/main/scala")
411
                                      ".*.scala$")))
412
                 (invoke "jar" "cf" jar-name "-C" build-directory ".")))
413
             (build-subproject "internal/" "util-logging")
414
             #t))
415
         (replace 'install
416
           (install-jars ".")))))
417
    (inputs
418
     `(("java-log4j-api" ,java-log4j-api-for-sbt)
419
       ("java-log4j-core" ,java-log4j-core-for-sbt)
420
       ("sbt-util-interface" ,sbt-util-interface)
421
       ("scala-sjsonnew" ,scala-sjsonnew)))
422
    (native-inputs
423
     `(("scala-official" ,scala-official)))))
424
425
(define-public java-swoval-apple-file-events
426
  (package
427
    (name "java-swoval-apple-file-events")
428
    (version "1.3.2")
429
    (source (origin
430
              (method url-fetch)
431
              (uri (string-append "https://github.com/swoval/swoval/archive/v"
432
                                  version ".tar.gz"))
433
              (file-name (string-append "scala-swoval-" version ".tar.gz"))
434
              (sha256
435
               (base32
436
                "0ivrc4lcali84xp8frkjb2zi1l3lw8pim9xbkfah5iyj120gw6mq"))))
437
    (build-system ant-build-system)
438
    (arguments
439
     `(#:jdk ,icedtea-8
440
       #:tests? #f; no tests
441
       #:jar-name "apple-file-events.jar"
442
       #:source-dir "apple-file-events/jvm/src/main/java"))
443
    (home-page "")
444
    (synopsis "")
445
    (description "")
446
    (license license:expat)))
447
448
(define-public sbt-io
449
  (package
450
    (name "sbt-io")
451
    (version "1.2.1")
452
    (source
453
      (origin
454
        (method url-fetch)
455
        (uri (string-append "https://github.com/sbt/io/archive/v"
456
                            version ".tar.gz"))
457
        (file-name (string-append name "-" version ".tar.gz"))
458
        (sha256
459
         (base32
460
          "0cgk3y3w8yjpivi910px529bz8bil49lrnib6wbwmvq8lw8mgrwq"))))
461
    (build-system ant-build-system)
462
    (arguments
463
     `(#:tests? #f
464
       #:jdk ,icedtea-8
465
       #:phases
466
       (modify-phases %standard-phases
467
         (replace 'build
468
           (lambda* (#:key inputs #:allow-other-keys)
469
             (mkdir-p "build/classes")
470
             (apply invoke "scalac" "-classpath"
471
                    (string-append (getenv "CLASSPATH") ":build/util-interface")
472
                    "-d" "build/classes"
473
                    (append
474
                      (find-files "io/src/main/java" ".*.java$")
475
                      (find-files "io/src/main/scala" ".*.scala$")
476
                      (find-files "io/src/main/contraband-scala" ".*.scala$")))
477
             (invoke "jar" "cf" "sbt-io.jar" "-C" "build/classes" ".")
478
             #t))
479
         (replace 'install
480
           (install-jars ".")))))
481
    (inputs
482
     `(("java-native-access" ,java-native-access)
483
       ("java-native-access-platform" ,java-native-access-platform)
484
       ("java-swoval-apple-file-events" ,java-swoval-apple-file-events)
485
       ("scala" ,scala-official)))
486
    (home-page "https://www.scala-sbt.org/")
487
    (synopsis "")
488
    (description "")
489
    (license license:bsd-3)))
490
491
(define-public sbt
492
  (package
493
    (name "sbt")
494
    (version "1.2.1")
495
    (source
496
      (origin
497
        (method url-fetch)
498
        (uri (string-append "https://github.com/sbt/sbt/archive/v"
499
                            version ".tar.gz"))
500
        (file-name (string-append name "-" version ".tar.gz"))
501
        (sha256
502
         (base32
503
          "15i8fd7zgairaaikscrva8d1klz0w9nh7fc0896x1n8nrs578vmy"))))
504
    (build-system ant-build-system)
505
    (arguments
506
     `(#:tests? #f
507
       #:jdk ,icedtea-8
508
       #:phases
509
       (modify-phases %standard-phases
510
         (add-before 'build 'copy-resources
511
           (lambda _
512
             (copy-recursively "sbt/src/main/resources" "build/classes")
513
             #t))
514
         (add-before 'build 'generate-scalakeywords.scala
515
           (lambda _
516
             (with-output-to-file "project/WriteKeywords.scala"
517
               (lambda _
518
                 (format #t "package project
519
object WriteKeywords {
520
  def main(arg: Array[String]): Unit = {
521
    val g = new scala.tools.nsc.Global(new scala.tools.nsc.Settings)
522
    val keywords = g.nme.keywords.map(_.toString)
523
    val init = keywords.map(tn => '\"' + tn + '\"').mkString(\"Set(\", \", \", \")\")
524
    val ObjectName = \"ScalaKeywords\"
525
    val PackageName = \"sbt.internal.util\"
526
    val keywordsSrc = s\"\"\"
527
      |package $PackageName
528
      |object $ObjectName {
529
      |  val values = $init
530
      |}
531
    \"\"\".trim.stripMargin
532
    val base = \"internal/util-collection/src/main/scala\"
533
    val out = base + \"/\" + PackageName.replace('.', '/') + \"/\" + s\"$ObjectName.scala\"
534
    val result = new java.io.PrintWriter(new java.io.File(out))
535
    result.write(keywordsSrc)
536
    result.close()
537
  }
538
}")))
539
             (invoke "scalac" "-classpath" (getenv "CLASSPATH") "project/WriteKeywords.scala")
540
             (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":.")
541
                     "project.WriteKeywords")
542
             #t))
543
         (replace 'build
544
           (lambda* (#:key inputs #:allow-other-keys)
545
             (define (build-subproject prefix name)
546
               (let ((build-directory (string-append "build/" name))
547
                     (jar-name (string-append name ".jar"))
548
                     (kind-projector (assoc-ref inputs "scala-kind-projector")))
549
                 (mkdir-p build-directory)
550
                 (format #t "Building project ~a...~%" name)
551
                 (apply invoke "scalac" "-classpath"
552
                        ;; 13:36 < snape> roptat: I think you could use 'readdir', as in 'files-in-directory' from guix/build/union.scm
553
                        (apply string-append (getenv "CLASSPATH")
554
                               (map (lambda (file) (string-append ":" file))
555
                                    (find-files "build" "." #:directories? #t)))
556
                        "-d" build-directory
557
                        (string-append "-Xplugin:" kind-projector
558
                                       "/share/java/kind-projector.jar")
559
                        (find-files (string-append prefix name "/src/main/scala")
560
                                    ".*.scala$"))
561
                 (invoke "jar" "cf" jar-name "-C" build-directory ".")))
562
             (build-subproject "internal/" "util-collection")
563
             (build-subproject "internal/" "util-complete")
564
             (build-subproject "" "core-macros")
565
             (build-subproject "" "tasks")
566
             (build-subproject "" "tasks-standard")
567
             (build-subproject "" "main-settings")
568
             (build-subproject "" "sbt")
569
             #t))
570
         (replace 'install
571
           (install-jars ".")))))
572
    (inputs
573
     `(("scala" ,scala-official)
574
       ("scala-sjsonnew" ,scala-sjsonnew)
575
       ("sbt-io" ,sbt-io)
576
       ("sbt-util-control" ,sbt-util-control)
577
       ("sbt-util-interface" ,sbt-util-interface)
578
       ("sbt-util-logging" ,sbt-util-logging)
579
       ("sbt-util-position" ,sbt-util-position)))
580
    (native-inputs
581
     `(("scala-kind-projector" ,scala-kind-projector)))
582
    (home-page "https://www.scala-sbt.org/")
583
    (synopsis "")
584
    (description "")
585
    (license license:bsd-3)))
586