gradle.scm
1 | ;;; GNU Guix --- Functional package management for GNU |
2 | ;;; Copyright © 2017 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 gradle) |
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 utils) |
25 | #:use-module (guix build-system ant) |
26 | #:use-module (gnu packages java) |
27 | #:use-module (more packages groovy) |
28 | #:use-module (more packages java)) |
29 | |
30 | (define (gradle-subproject subproject) |
31 | (package |
32 | (name (string-append "gradle-" subproject)) |
33 | ; (version "2.3") |
34 | ; (source (origin |
35 | ; (method url-fetch) |
36 | ; (uri (string-append "https://github.com/gradle/gradle/archive/REL_" |
37 | ; version ".tar.gz")) |
38 | ; (file-name (string-append "gradle-" version ".tar.gz")) |
39 | ; (sha256 |
40 | ; (base32 |
41 | ; "1v65ac38fzj92jqgrpgma8kpdy974xi8aclgwxkdasy4lcr0k37g")))) |
42 | (version "4.4.0") |
43 | (source (origin |
44 | (method url-fetch) |
45 | (uri (string-append "https://github.com/gradle/gradle/archive/v" |
46 | version ".tar.gz")) |
47 | (file-name (string-append "gradle-" version ".tar.gz")) |
48 | (sha256 |
49 | (base32 |
50 | "026232dy578nl8gzj1nfc9r25p8alcwdbwb9b8s3bw4krxmy6saz")))) |
51 | (build-system ant-build-system) |
52 | (arguments |
53 | `(#:jar-name (string-append "gradle-" ,subproject ".jar") |
54 | #:source-dir (string-append "subprojects/" ,subproject "/src/main/java") |
55 | #:jdk ,icedtea-8 |
56 | #:tests? #f;; Ignore tests for now |
57 | #:test-dir (string-append "subprojects/" ,subproject "/src/test"))) |
58 | (inputs '()) |
59 | (native-inputs '()) |
60 | (home-page "") |
61 | (synopsis "Build system") |
62 | (description "Build system") |
63 | (license license:asl2.0))) |
64 | |
65 | (define (gradle-groovy-subproject subproject) |
66 | (let ((base (gradle-subproject subproject))) |
67 | (package |
68 | (inherit base) |
69 | (arguments |
70 | `(#:jar-name (string-append "gradle-" ,subproject ".jar") |
71 | #:source-dir (string-append "subprojects/" ,subproject "/src/main/groovy") |
72 | #:test-dir (string-append "subprojects/" ,subproject "/src/test") |
73 | #:jdk ,icedtea-8 |
74 | #:tests? #f;; Ignore tests for now |
75 | #:phases |
76 | (modify-phases %standard-phases |
77 | (add-before 'build 'use-groovy |
78 | (lambda _ |
79 | (substitute* "build.xml" |
80 | (("javac") "groovyc") |
81 | (("includeantruntime=\"false\"") |
82 | "includeantruntime=\"false\" fork=\"yes\"") |
83 | (("classpath=\"@refidclasspath\"") |
84 | "classpathref=\"classpath\"") |
85 | ;; To enable joint compilation |
86 | (("classpathref=\"classpath\" />") |
87 | "classpathref=\"classpath\"><javac source=\"1.5\" target=\"1.5\" /></groovyc>") |
88 | (("<project basedir=\".\">") |
89 | "<project basedir=\".\"><taskdef name=\"groovyc\" |
90 | classname=\"org.codehaus.groovy.ant.Groovyc\" />"))))))) |
91 | (native-inputs |
92 | `(("groovy" ,groovy) |
93 | ,@(package-inputs groovy)))))) |
94 | |
95 | (define-public gradle-internal-testing |
96 | (package |
97 | (inherit (gradle-groovy-subproject "internal-testing")) |
98 | (inputs |
99 | `(("gradle-native" ,gradle-native) |
100 | ("gradle-base-services" ,gradle-base-services) |
101 | ("groovy-xml" ,groovy-xml) |
102 | ("java-commons-io" ,java-commons-io) |
103 | ("java-commons-lang" ,java-commons-lang) |
104 | ("java-guava" ,java-guava) |
105 | ("java-hamcrest-all" ,java-hamcrest-all) |
106 | ("java-jmock" ,java-jmock) |
107 | ("java-jmock-junit4" ,java-jmock-junit4) |
108 | ("java-jmock-legacy" ,java-jmock-legacy) |
109 | ("java-jsoup" ,java-jsoup) |
110 | ("java-junit" ,java-junit) |
111 | ("java-slf4j-api" ,java-slf4j-api) |
112 | ("java-spockframework-core" ,java-spockframework-core))))) |
113 | |
114 | ;; Cycle with internal-testing |
115 | (define-public gradle-base-services |
116 | (let ((base (gradle-subproject "base-services"))) |
117 | (package |
118 | (inherit base) |
119 | (inputs |
120 | `(("java-guava" ,java-guava) |
121 | ("java-slf4j-api" ,java-slf4j-api) |
122 | ("java-commons-lang" ,java-commons-lang) |
123 | ("java-commons-io" ,java-commons-io) |
124 | ("java-jsr305" ,java-jsr305) |
125 | ("java-jcip-annotations" ,java-jcip-annotations))) |
126 | (native-inputs |
127 | `(("java-junit" ,java-junit) |
128 | ("java-hamcrest-core" ,java-hamcrest-core)))))) |
129 | |
130 | (define-public gradle-base-services-groovy |
131 | (package |
132 | (inherit (gradle-subproject "base-services-groovy")) |
133 | (inputs |
134 | `(("gradle-base-services" ,gradle-base-services) |
135 | ("groovy-bootstrap" ,groovy-bootstrap) |
136 | ("java-asm" ,java-asm) |
137 | ("java-guava" ,java-guava) |
138 | ("java-jsr305" ,java-jsr305))))) |
139 | |
140 | (define-public gradle-build-option |
141 | (package |
142 | (inherit (gradle-subproject "build-option")) |
143 | (inputs |
144 | `(("gradle-cli" ,gradle-cli) |
145 | ("java-commons-lang" ,java-commons-lang) |
146 | ("java-jsr305" ,java-jsr305))))) |
147 | |
148 | (define-public gradle-cli |
149 | (package |
150 | (inherit (gradle-subproject "cli")))) |
151 | |
152 | (define-public gradle-native |
153 | (package |
154 | (inherit (gradle-subproject "native")) |
155 | (inputs |
156 | `(("gradle-base-services" ,gradle-base-services) |
157 | ("java-commons-io" ,java-commons-io) |
158 | ("java-guava" ,java-guava) |
159 | ("java-jansi" ,java-jansi) |
160 | ("java-jsr305" ,java-jsr305) |
161 | ("java-native-platform" ,java-native-platform) |
162 | ("java-slf4j-api" ,java-slf4j-api))))) |
163 | |
164 | (define-public gradle-messaging |
165 | (let ((base (gradle-subproject "messaging"))) |
166 | (package |
167 | (inherit base) |
168 | (arguments |
169 | `(#:phases |
170 | (modify-phases %standard-phases |
171 | (add-before 'build 'fix-kryo |
172 | (lambda _ |
173 | ;; gradle depends on kryo-2.20 from 2013, we packaged version 4. |
174 | (substitute* "subprojects/messaging/src/main/java/org/gradle/internal/serialize/kryo/KryoBackedEncoder.java" |
175 | (("public int getWritePosition") |
176 | "public long getWritePosition")) |
177 | #t))) |
178 | ,@(package-arguments base))) |
179 | (inputs |
180 | `(("gradle-base-services" ,gradle-base-services) |
181 | ("gradle-base-services-groovy" ,gradle-base-services-groovy) |
182 | ("java-commons-lang" ,java-commons-lang) |
183 | ("java-guava" ,java-guava) |
184 | ("java-jsr305" ,java-jsr305) |
185 | ("java-kryo" ,java-kryo) |
186 | ("java-slf4j-api" ,java-slf4j-api)))))) |
187 | |
188 | (define-public gradle-persistent-cache |
189 | (package |
190 | (inherit (gradle-subproject "persistent-cache")) |
191 | (inputs |
192 | `(("gradle-base-services" ,gradle-base-services) |
193 | ("gradle-messaging" ,gradle-messaging) |
194 | ("gradle-native" ,gradle-native) |
195 | ("java-commons-collections" ,java-commons-collections) |
196 | ("java-commons-io" ,java-commons-io) |
197 | ("java-commons-lang" ,java-commons-lang) |
198 | ("java-guava" ,java-guava) |
199 | ("java-jcip-annotations" ,java-jcip-annotations) |
200 | ("java-jsr305" ,java-jsr305) |
201 | ("java-slf4j-api" ,java-slf4j-api))))) |
202 | |
203 | (define-public gradle-logging |
204 | (package |
205 | (inherit (gradle-subproject "logging")) |
206 | (inputs |
207 | `(("gradle-base-services" ,gradle-base-services) |
208 | ("gradle-build-option" ,gradle-build-option) |
209 | ("gradle-cli" ,gradle-cli) |
210 | ("gradle-messaging" ,gradle-messaging) |
211 | ("gradle-native" ,gradle-native) |
212 | ("java-commons-lang" ,java-commons-lang) |
213 | ("java-guava" ,java-guava) |
214 | ("java-jansi" ,java-jansi) |
215 | ("java-jansi-native" ,java-jansi-native) |
216 | ("java-jcip-annotations" ,java-jcip-annotations) |
217 | ("java-jsr305" ,java-jsr305) |
218 | ("java-slf4j-api" ,java-slf4j-api) |
219 | ("java-jul-to-slf4j" ,java-jul-to-slf4j))))) |
220 | |
221 | (define-public gradle-model-core |
222 | (package |
223 | (inherit (gradle-subproject "model-core")) |
224 | (inputs |
225 | `(("gradle-base-services" ,gradle-base-services) |
226 | ("gradle-base-services-groovy" ,gradle-base-services-groovy) |
227 | ("groovy-bootstrap" ,groovy-bootstrap) |
228 | ("java-asm" ,java-asm) |
229 | ("java-commons-lang" ,java-commons-lang) |
230 | ("java-guava" ,java-guava) |
231 | ("java-jcip-annotations" ,java-jcip-annotations) |
232 | ("java-jsr305" ,java-jsr305) |
233 | ("java-slf4j-api" ,java-slf4j-api))))) |
234 | |
235 | (define-public gradle-resources |
236 | (package |
237 | (inherit (gradle-subproject "resources")) |
238 | (inputs |
239 | `(("gradle-base-services" ,gradle-base-services) |
240 | ("gradle-model-core" ,gradle-model-core) |
241 | ("gradle-native" ,gradle-native) |
242 | ("java-commons-io" ,java-commons-io) |
243 | ("java-guava" ,java-guava) |
244 | ("java-jsr305" ,java-jsr305))))) |
245 | |
246 | (define-public gradle-build-cache |
247 | (package |
248 | (inherit (gradle-subproject "build-cache")) |
249 | (inputs |
250 | `(("gradle-base-services" ,gradle-base-services) |
251 | ("gradle-logging" ,gradle-logging) |
252 | ("gradle-persistent-cache" ,gradle-persistent-cache) |
253 | ("gradle-resources" ,gradle-resources) |
254 | ("java-commons-io" ,java-commons-io) |
255 | ("java-guava" ,java-guava) |
256 | ("java-javax-inject" ,java-javax-inject) |
257 | ("java-jsr305" ,java-jsr305) |
258 | ("java-slf4j-api" ,java-slf4j-api))))) |
259 | |
260 | (define-public gradle-process-services |
261 | (package |
262 | (inherit (gradle-subproject "process-services")) |
263 | (inputs |
264 | `(("gradle-base-services" ,gradle-base-services) |
265 | ("gradle-messaging" ,gradle-messaging) |
266 | ("gradle-native" ,gradle-native) |
267 | ("java-guava" ,java-guava) |
268 | ("java-jsr305" ,java-jsr305) |
269 | ("java-native-platform" ,java-native-platform) |
270 | ("java-slf4j-api" ,java-slf4j-api))))) |
271 | |
272 | (define-public gradle-core-api |
273 | (package |
274 | (inherit (gradle-subproject "core-api")) |
275 | (inputs |
276 | `(("gradle-base-services" ,gradle-base-services) |
277 | ("gradle-base-services-groovy" ,gradle-base-services-groovy) |
278 | ("gradle-build-cache" ,gradle-build-cache) |
279 | ("gradle-logging" ,gradle-logging) |
280 | ("gradle-model-core" ,gradle-model-core) |
281 | ("gradle-persistent-cache" ,gradle-persistent-cache) |
282 | ("gradle-process-services" ,gradle-process-services) |
283 | ("gradle-resources" ,gradle-resources) |
284 | ("groovy-ant" ,groovy-ant) |
285 | ("groovy-bootstrap" ,groovy-bootstrap) |
286 | ("java-commons-lang" ,java-commons-lang) |
287 | ("java-guava" ,java-guava) |
288 | ("java-jsr305" ,java-jsr305) |
289 | ("java-slf4j-api" ,java-slf4j-api))))) |
290 | |
291 | (define-public gradle-model-groovy |
292 | (package |
293 | (inherit (gradle-subproject "model-groovy")) |
294 | (inputs |
295 | `(("gradle-base-services" ,gradle-base-services) |
296 | ("gradle-base-services-groovy" ,gradle-base-services-groovy) |
297 | ("gradle-model-core" ,gradle-model-core) |
298 | ("groovy-bootstrap" ,groovy-bootstrap) |
299 | ("java-asm" ,java-asm) |
300 | ("java-guava" ,java-guava) |
301 | ("java-jcip-annotations" ,java-jcip-annotations) |
302 | ("java-jsr305" ,java-jsr305))))) |
303 | |
304 | (define-public gradle-jvm-services |
305 | (package |
306 | (inherit (gradle-subproject "jvm-services")) |
307 | (inputs |
308 | `(("gradle-base-services" ,gradle-base-services) |
309 | ("gradle-process-services" ,gradle-process-services))))) |
310 | |
311 | (define java-guava-for-gradle |
312 | (package |
313 | (inherit java-guava) |
314 | (version "17.0") |
315 | (source (origin |
316 | (method url-fetch) |
317 | (uri (string-append "https://github.com/google/guava/" |
318 | "archive/v" version ".tar.gz")) |
319 | (sha256 |
320 | (base32 |
321 | "0kg2n0dfdncbm3kgf8fa6kig8djfhar24vf0yf287x27w5sqzhnb")))) |
322 | (arguments |
323 | `(#:jar-name "guava.jar" |
324 | #:source-dir "guava/src/" |
325 | #:tests? #f)))); Not in a "java" subdirectory |
326 | |
327 | (define-public gradle-core |
328 | (package |
329 | (inherit (gradle-subproject "core")) |
330 | (inputs |
331 | `(("gradle-base-services" ,gradle-base-services) |
332 | ("gradle-base-services-groovy" ,gradle-base-services-groovy) |
333 | ("gradle-build-cache" ,gradle-build-cache) |
334 | ("gradle-build-option" ,gradle-build-option) |
335 | ("gradle-cli" ,gradle-cli) |
336 | ("gradle-core-api" ,gradle-core-api) |
337 | ("gradle-jvm-services" ,gradle-jvm-services) |
338 | ("gradle-logging" ,gradle-logging) |
339 | ("gradle-messaging" ,gradle-messaging) |
340 | ("gradle-model-core" ,gradle-model-core) |
341 | ("gradle-model-groovy" ,gradle-model-groovy) |
342 | ("gradle-native" ,gradle-native) |
343 | ("gradle-persistent-cache" ,gradle-persistent-cache) |
344 | ("gradle-process-services" ,gradle-process-services) |
345 | ("gradle-resources" ,gradle-resources) |
346 | ("groovy-ant" ,groovy-ant) |
347 | ("groovy-bootstrap" ,groovy-bootstrap) |
348 | ("groovy-json" ,groovy-json) |
349 | ("groovy-templates" ,groovy-templates) |
350 | ("groovy-xml" ,groovy-xml) |
351 | ("java-asm-6" ,java-asm-6) |
352 | ("java-commons-collections" ,java-commons-collections) |
353 | ("java-commons-compress" ,java-commons-compress) |
354 | ("java-commons-io" ,java-commons-io) |
355 | ("java-commons-lang" ,java-commons-lang) |
356 | ("java-guava-for-gradle" ,java-guava-for-gradle) |
357 | ("java-javax-inject" ,java-javax-inject) |
358 | ("java-jcip-annotations" ,java-jcip-annotations) |
359 | ("java-jsr305" ,java-jsr305) |
360 | ("java-native-platform" ,java-native-platform) |
361 | ("java-slf4j-api" ,java-slf4j-api) |
362 | ("groovy" ,groovy))))) |
363 |