More sbt dependencies
java-fmpp-remove-imageinfo.patch unknown status 1
1 | + | See https://github.com/freemarker/fmpp/pull/18 | |
2 | + | ||
3 | + | In order to leverage the package dependency we removed | |
4 | + | `org.devlib.schmidt.imageinfo.ImageInfo` class and replaced it with more | |
5 | + | standard one javax.imageio.ImageIO in Fedora. We suggest you do the same here. | |
6 | + | ||
7 | + | The old class comes from a package whose latest release is in 2008 and whose | |
8 | + | homepage doesn't exist anymore. There doesn't seem to be any corresponding | |
9 | + | sources anymore. | |
10 | + | ||
11 | + | From 14dae73c5e5f162e6ddb59430cbfc7c555429140 Mon Sep 17 00:00:00 2001 | |
12 | + | From: Tomas Repik <trepik@redhat.com> | |
13 | + | Date: Mon, 5 Dec 2016 13:17:54 +0100 | |
14 | + | Subject: [PATCH] removed org.devlib.schmidt.imageinfo.ImageInfo dependency | |
15 | + | from sources | |
16 | + | ||
17 | + | --- | |
18 | + | .../java/fmpp/dataloaders/HtmlUtilsDataLoader.java | 399 ++++++++++----------- | |
19 | + | 1 file changed, 196 insertions(+), 203 deletions(-) | |
20 | + | ||
21 | + | diff --git a/src/main/java/fmpp/dataloaders/HtmlUtilsDataLoader.java b/src/main/java/fmpp/dataloaders/HtmlUtilsDataLoader.java | |
22 | + | index 3dcb613..6c32065 100644 | |
23 | + | --- a/src/main/java/fmpp/dataloaders/HtmlUtilsDataLoader.java | |
24 | + | +++ b/src/main/java/fmpp/dataloaders/HtmlUtilsDataLoader.java | |
25 | + | @@ -1,12 +1,12 @@ | |
26 | + | /* | |
27 | + | * Copyright 2014 Attila Szegedi, Daniel Dekany, Jonathan Revusky | |
28 | + | - * | |
29 | + | + * | |
30 | + | * Licensed under the Apache License, Version 2.0 (the "License"); | |
31 | + | * you may not use this file except in compliance with the License. | |
32 | + | * You may obtain a copy of the License at | |
33 | + | - * | |
34 | + | + * | |
35 | + | * http://www.apache.org/licenses/LICENSE-2.0 | |
36 | + | - * | |
37 | + | + * | |
38 | + | * Unless required by applicable law or agreed to in writing, software | |
39 | + | * distributed under the License is distributed on an "AS IS" BASIS, | |
40 | + | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
41 | + | @@ -14,8 +14,8 @@ | |
42 | + | * limitations under the License. | |
43 | + | */ | |
44 | + | ||
45 | + | -package fmpp.dataloaders; | |
46 | + | - | |
47 | + | +package fmpp.dataloaders; | |
48 | + | + | |
49 | + | import java.io.File; | |
50 | + | import java.io.FileNotFoundException; | |
51 | + | import java.io.IOException; | |
52 | + | @@ -25,8 +25,7 @@ import java.util.HashMap; | |
53 | + | import java.util.Iterator; | |
54 | + | import java.util.List; | |
55 | + | import java.util.Map; | |
56 | + | - | |
57 | + | -import org.devlib.schmidt.imageinfo.ImageInfo; | |
58 | + | +import javax.imageio.ImageIO; | |
59 | + | ||
60 | + | import fmpp.Engine; | |
61 | + | import fmpp.tdd.DataLoader; | |
62 | + | @@ -36,199 +35,193 @@ import freemarker.template.TemplateModelException; | |
63 | + | import freemarker.template.TemplateNumberModel; | |
64 | + | import freemarker.template.TemplateScalarModel; | |
65 | + | import freemarker.template.TemplateTransformModel; | |
66 | + | - | |
67 | + | -/** | |
68 | + | - * Returns a hash that contains useful directives for HTML generation. | |
69 | + | - * <ul> | |
70 | + | - * <li>img: Same as HTML img, but automatically calculates the width and/or | |
71 | + | - * height attributes if they are missing. | |
72 | + | - * </ul> | |
73 | + | - */ | |
74 | + | -public class HtmlUtilsDataLoader implements DataLoader { | |
75 | + | - private boolean xHtml = false; | |
76 | + | - private String eTagClose; | |
77 | + | - | |
78 | + | - private Engine engine; | |
79 | + | - | |
80 | + | - private static final int MAX_CACHE_SIZE = 100; | |
81 | + | - private Map imageInfoCache = new HashMap(); | |
82 | + | - private CachedImageInfo first; | |
83 | + | - private CachedImageInfo last; | |
84 | + | - private ImageInfo imageInfo = new ImageInfo(); | |
85 | + | - | |
86 | + | - public Object load(Engine e, List args) throws Exception { | |
87 | + | - if (args.size() != 0) { | |
88 | + | - throw new IllegalArgumentException( | |
89 | + | - "data loader does not have arguments"); | |
90 | + | - } | |
91 | + | - engine = e; | |
92 | + | - if (xHtml) { | |
93 | + | - eTagClose = " />"; | |
94 | + | - } else { | |
95 | + | - eTagClose = ">"; | |
96 | + | - } | |
97 | + | - | |
98 | + | - Map map = new HashMap(); | |
99 | + | - | |
100 | + | - map.put("img", new ImgTransform()); | |
101 | + | - | |
102 | + | - return map; | |
103 | + | - } | |
104 | + | - | |
105 | + | - public void setXHtml(boolean xHtml) { | |
106 | + | - this.xHtml = xHtml; | |
107 | + | - } | |
108 | + | - | |
109 | + | - private CachedImageInfo getImageInfo(File f) | |
110 | + | - throws IOException, TemplateModelException { | |
111 | + | - String cacheKey = f.getCanonicalPath(); | |
112 | + | - | |
113 | + | - CachedImageInfo inf = (CachedImageInfo) imageInfoCache.get(cacheKey); | |
114 | + | - if (inf != null) { | |
115 | + | - long lmd = new File(cacheKey).lastModified(); | |
116 | + | - if (inf.lmd == lmd && lmd != 0L && inf.lmd != 0L) { | |
117 | + | - if (inf != last) { | |
118 | + | - if (inf.prev != null) { | |
119 | + | - inf.prev.next = inf.next; | |
120 | + | - } else { | |
121 | + | - first = inf.next; | |
122 | + | - } | |
123 | + | - if (inf.next != null) { | |
124 | + | - inf.next.prev = inf.prev; | |
125 | + | - } else { | |
126 | + | - last = inf.prev; | |
127 | + | - } | |
128 | + | - | |
129 | + | - inf.prev = last; | |
130 | + | - inf.next = null; | |
131 | + | - last = inf; | |
132 | + | - inf.prev.next = last; | |
133 | + | - } | |
134 | + | - return inf; //! | |
135 | + | - } else { | |
136 | + | - imageInfoCache.remove(cacheKey); | |
137 | + | - if (inf.prev != null) { | |
138 | + | - inf.prev.next = inf.next; | |
139 | + | - } else { | |
140 | + | - first = inf.next; | |
141 | + | - } | |
142 | + | - if (inf.next != null) { | |
143 | + | - inf.next.prev = inf.prev; | |
144 | + | - } else { | |
145 | + | - last = inf.prev; | |
146 | + | - } | |
147 | + | - } | |
148 | + | - } | |
149 | + | - | |
150 | + | - RandomAccessFile raf; | |
151 | + | - try { | |
152 | + | - raf = new RandomAccessFile(f, "r"); | |
153 | + | - } catch (FileNotFoundException e) { | |
154 | + | - throw new TemplateModelException("Image file not found: " + f.getAbsolutePath(), e); | |
155 | + | - } | |
156 | + | - try { | |
157 | + | - imageInfo.setCollectComments(false); | |
158 | + | - imageInfo.setInput(raf); | |
159 | + | - if (!imageInfo.check()) { | |
160 | + | - throw new TemplateModelException("Failed to analyse image file: " + cacheKey); | |
161 | + | - } | |
162 | + | - } finally { | |
163 | + | - raf.close(); | |
164 | + | - } | |
165 | + | - inf = new CachedImageInfo(); | |
166 | + | - inf.lmd = f.lastModified(); | |
167 | + | - inf.width = imageInfo.getWidth(); | |
168 | + | - inf.height = imageInfo.getHeight(); | |
169 | + | - inf.path = cacheKey; | |
170 | + | - if (last != null) { | |
171 | + | - last.next = inf; | |
172 | + | - } | |
173 | + | - inf.prev = last; | |
174 | + | - inf.next = null; | |
175 | + | - last = inf; | |
176 | + | - if (inf.prev == null) { | |
177 | + | - first = inf; | |
178 | + | - } | |
179 | + | - imageInfoCache.put(cacheKey, inf); | |
180 | + | - if (imageInfoCache.size() > MAX_CACHE_SIZE) { | |
181 | + | - imageInfoCache.remove(first.path); | |
182 | + | - first.next.prev = null; | |
183 | + | - first = first.next; | |
184 | + | - } | |
185 | + | - | |
186 | + | - return inf; | |
187 | + | - } | |
188 | + | - | |
189 | + | - private class CachedImageInfo { | |
190 | + | - private CachedImageInfo prev; | |
191 | + | - private CachedImageInfo next; | |
192 | + | - private String path; | |
193 | + | - private long lmd; | |
194 | + | - private int width; | |
195 | + | - private int height; | |
196 | + | - } | |
197 | + | - | |
198 | + | - private class ImgTransform implements TemplateTransformModel { | |
199 | + | - public Writer getWriter(Writer out, Map args) | |
200 | + | - throws TemplateModelException, IOException { | |
201 | + | - boolean detectHeight = true; | |
202 | + | - boolean detectWidth = true; | |
203 | + | - String src = null; | |
204 | + | - | |
205 | + | - out.write("<img"); | |
206 | + | - | |
207 | + | - Iterator it = args.entrySet().iterator(); | |
208 | + | - while (it.hasNext()) { | |
209 | + | - Map.Entry e = (Map.Entry) it.next(); | |
210 | + | - String pname = (String) e.getKey(); | |
211 | + | - Object obj = e.getValue(); | |
212 | + | - String pvalue; | |
213 | + | - if (obj instanceof TemplateScalarModel) { | |
214 | + | - pvalue = ((TemplateScalarModel) obj).getAsString(); | |
215 | + | - } else if (obj instanceof TemplateNumberModel) { | |
216 | + | - pvalue = ((TemplateNumberModel) obj).getAsNumber() | |
217 | + | - .toString(); | |
218 | + | - } else if (obj instanceof TemplateBooleanModel) { | |
219 | + | - pvalue = null; | |
220 | + | - if (((TemplateBooleanModel) obj).getAsBoolean()) { | |
221 | + | - out.write(" " + pname); | |
222 | + | - } | |
223 | + | - } else { | |
224 | + | - throw new TemplateModelException( | |
225 | + | - "Argument to img must be string, " + "number or boolean"); | |
226 | + | - } | |
227 | + | - if (pvalue != null) { | |
228 | + | - pname = pname.toLowerCase(); | |
229 | + | - out.write(" " + pname + "=\"" | |
230 | + | - + StringUtil.htmlEnc(pvalue) + "\""); | |
231 | + | - if (pname.equals("src")) { | |
232 | + | - src = pvalue; | |
233 | + | - } else if (pname.equals("width")) { | |
234 | + | - detectWidth = false; | |
235 | + | - } else if (pname.equals("height")) { | |
236 | + | - detectHeight = false; | |
237 | + | - } | |
238 | + | - } | |
239 | + | - } | |
240 | + | - if (detectWidth || detectHeight) { | |
241 | + | - if (src == null) { | |
242 | + | - throw new TemplateModelException( | |
243 | + | - "The src attribute of img is missing"); | |
244 | + | - } | |
245 | + | - CachedImageInfo inf; | |
246 | + | - inf = getImageInfo(engine.getTemplateEnvironment() | |
247 | + | - .resolveSourcePath(src)); | |
248 | + | - if (detectWidth) { | |
249 | + | - out.write(" width=\"" + inf.width + "\""); | |
250 | + | - } | |
251 | + | - if (detectHeight) { | |
252 | + | - out.write(" height=\"" + inf.height + "\""); | |
253 | + | - } | |
254 | + | - } | |
255 | + | - | |
256 | + | - out.write(eTagClose); | |
257 | + | - | |
258 | + | - return null; | |
259 | + | - } | |
260 | + | - } | |
261 | + | -} | |
262 | + | + | |
263 | + | +/** | |
264 | + | + * Returns a hash that contains useful directives for HTML generation. | |
265 | + | + * <ul> | |
266 | + | + * <li>img: Same as HTML img, but automatically calculates the width and/or | |
267 | + | + * height attributes if they are missing. | |
268 | + | + * </ul> | |
269 | + | + */ | |
270 | + | +public class HtmlUtilsDataLoader implements DataLoader { | |
271 | + | + private boolean xHtml = false; | |
272 | + | + private String eTagClose; | |
273 | + | + | |
274 | + | + private Engine engine; | |
275 | + | + | |
276 | + | + private static final int MAX_CACHE_SIZE = 100; | |
277 | + | + private Map imageInfoCache = new HashMap(); | |
278 | + | + private CachedImageInfo first; | |
279 | + | + private CachedImageInfo last; | |
280 | + | + | |
281 | + | + public Object load(Engine e, List args) throws Exception { | |
282 | + | + if (args.size() != 0) { | |
283 | + | + throw new IllegalArgumentException( | |
284 | + | + "data loader does not have arguments"); | |
285 | + | + } | |
286 | + | + engine = e; | |
287 | + | + if (xHtml) { | |
288 | + | + eTagClose = " />"; | |
289 | + | + } else { | |
290 | + | + eTagClose = ">"; | |
291 | + | + } | |
292 | + | + | |
293 | + | + Map map = new HashMap(); | |
294 | + | + | |
295 | + | + map.put("img", new ImgTransform()); | |
296 | + | + | |
297 | + | + return map; | |
298 | + | + } | |
299 | + | + | |
300 | + | + public void setXHtml(boolean xHtml) { | |
301 | + | + this.xHtml = xHtml; | |
302 | + | + } | |
303 | + | + | |
304 | + | + private CachedImageInfo getImageInfo(File f) | |
305 | + | + throws IOException, TemplateModelException { | |
306 | + | + String cacheKey = f.getCanonicalPath(); | |
307 | + | + | |
308 | + | + CachedImageInfo inf = (CachedImageInfo) imageInfoCache.get(cacheKey); | |
309 | + | + if (inf != null) { | |
310 | + | + long lmd = new File(cacheKey).lastModified(); | |
311 | + | + if (inf.lmd == lmd && lmd != 0L && inf.lmd != 0L) { | |
312 | + | + if (inf != last) { | |
313 | + | + if (inf.prev != null) { | |
314 | + | + inf.prev.next = inf.next; | |
315 | + | + } else { | |
316 | + | + first = inf.next; | |
317 | + | + } | |
318 | + | + if (inf.next != null) { | |
319 | + | + inf.next.prev = inf.prev; | |
320 | + | + } else { | |
321 | + | + last = inf.prev; | |
322 | + | + } | |
323 | + | + | |
324 | + | + inf.prev = last; | |
325 | + | + inf.next = null; | |
326 | + | + last = inf; | |
327 | + | + inf.prev.next = last; | |
328 | + | + } | |
329 | + | + return inf; //! | |
330 | + | + } else { | |
331 | + | + imageInfoCache.remove(cacheKey); | |
332 | + | + if (inf.prev != null) { | |
333 | + | + inf.prev.next = inf.next; | |
334 | + | + } else { | |
335 | + | + first = inf.next; | |
336 | + | + } | |
337 | + | + if (inf.next != null) { | |
338 | + | + inf.next.prev = inf.prev; | |
339 | + | + } else { | |
340 | + | + last = inf.prev; | |
341 | + | + } | |
342 | + | + } | |
343 | + | + } | |
344 | + | + | |
345 | + | + int width = 0; | |
346 | + | + int height = 0; | |
347 | + | + | |
348 | + | + try { | |
349 | + | + java.awt.image.BufferedImage img = ImageIO.read(f); | |
350 | + | + width = img.getWidth(); | |
351 | + | + height = img.getHeight(); | |
352 | + | + } catch(Exception e) { | |
353 | + | + throw new TemplateModelException("Failed to analyse image file:" + cacheKey); | |
354 | + | + } | |
355 | + | + inf = new CachedImageInfo(); | |
356 | + | + inf.lmd = f.lastModified(); | |
357 | + | + inf.width = width; | |
358 | + | + inf.height = height; | |
359 | + | + inf.path = cacheKey; | |
360 | + | + if (last != null) { | |
361 | + | + last.next = inf; | |
362 | + | + } | |
363 | + | + inf.prev = last; | |
364 | + | + inf.next = null; | |
365 | + | + last = inf; | |
366 | + | + if (inf.prev == null) { | |
367 | + | + first = inf; | |
368 | + | + } | |
369 | + | + imageInfoCache.put(cacheKey, inf); | |
370 | + | + if (imageInfoCache.size() > MAX_CACHE_SIZE) { | |
371 | + | + imageInfoCache.remove(first.path); | |
372 | + | + first.next.prev = null; | |
373 | + | + first = first.next; | |
374 | + | + } | |
375 | + | + | |
376 | + | + return inf; | |
377 | + | + } | |
378 | + | + | |
379 | + | + private class CachedImageInfo { | |
380 | + | + private CachedImageInfo prev; | |
381 | + | + private CachedImageInfo next; | |
382 | + | + private String path; | |
383 | + | + private long lmd; | |
384 | + | + private int width; | |
385 | + | + private int height; | |
386 | + | + } | |
387 | + | + | |
388 | + | + private class ImgTransform implements TemplateTransformModel { | |
389 | + | + public Writer getWriter(Writer out, Map args) | |
390 | + | + throws TemplateModelException, IOException { | |
391 | + | + boolean detectHeight = true; | |
392 | + | + boolean detectWidth = true; | |
393 | + | + String src = null; | |
394 | + | + | |
395 | + | + out.write("<img"); | |
396 | + | + | |
397 | + | + Iterator it = args.entrySet().iterator(); | |
398 | + | + while (it.hasNext()) { | |
399 | + | + Map.Entry e = (Map.Entry) it.next(); | |
400 | + | + String pname = (String) e.getKey(); | |
401 | + | + Object obj = e.getValue(); | |
402 | + | + String pvalue; | |
403 | + | + if (obj instanceof TemplateScalarModel) { | |
404 | + | + pvalue = ((TemplateScalarModel) obj).getAsString(); | |
405 | + | + } else if (obj instanceof TemplateNumberModel) { | |
406 | + | + pvalue = ((TemplateNumberModel) obj).getAsNumber() | |
407 | + | + .toString(); | |
408 | + | + } else if (obj instanceof TemplateBooleanModel) { | |
409 | + | + pvalue = null; | |
410 | + | + if (((TemplateBooleanModel) obj).getAsBoolean()) { | |
411 | + | + out.write(" " + pname); | |
412 | + | + } | |
413 | + | + } else { | |
414 | + | + throw new TemplateModelException( | |
415 | + | + "Argument to img must be string, " + "number or boolean"); | |
416 | + | + } | |
417 | + | + if (pvalue != null) { | |
418 | + | + pname = pname.toLowerCase(); | |
419 | + | + out.write(" " + pname + "=\"" | |
420 | + | + + StringUtil.htmlEnc(pvalue) + "\""); | |
421 | + | + if (pname.equals("src")) { | |
422 | + | + src = pvalue; | |
423 | + | + } else if (pname.equals("width")) { | |
424 | + | + detectWidth = false; | |
425 | + | + } else if (pname.equals("height")) { | |
426 | + | + detectHeight = false; | |
427 | + | + } | |
428 | + | + } | |
429 | + | + } | |
430 | + | + if (detectWidth || detectHeight) { | |
431 | + | + if (src == null) { | |
432 | + | + throw new TemplateModelException( | |
433 | + | + "The src attribute of img is missing"); | |
434 | + | + } | |
435 | + | + CachedImageInfo inf; | |
436 | + | + inf = getImageInfo(engine.getTemplateEnvironment() | |
437 | + | + .resolveSourcePath(src)); | |
438 | + | + if (detectWidth) { | |
439 | + | + out.write(" width=\"" + inf.width + "\""); | |
440 | + | + } | |
441 | + | + if (detectHeight) { | |
442 | + | + out.write(" height=\"" + inf.height + "\""); | |
443 | + | + } | |
444 | + | + } | |
445 | + | + | |
446 | + | + out.write(eTagClose); | |
447 | + | + | |
448 | + | + return null; | |
449 | + | + } | |
450 | + | + } | |
451 | + | +} | |
452 | + | -- | |
453 | + | 2.11.0 | |
454 | + |
more/packages/java.scm
4628 | 4628 | (mkdir-p bin) | |
4629 | 4629 | (symlink (string-append jdk "/bin/java") | |
4630 | 4630 | (string-append bin "/java")) | |
4631 | + | (symlink (string-append jdk "/bin/jar") | |
4632 | + | (string-append bin "/jar")) | |
4631 | 4633 | (for-each (lambda (jar) | |
4632 | 4634 | (let* ((name (substring jar 2 (- (string-length jar) 4))) | |
4633 | 4635 | (file (string-append bin "/" name))) | |
… | |||
4637 | 4639 | (("#TARGET_JAVA#") (string-append bin "/java")) | |
4638 | 4640 | (("#PS#") ":") | |
4639 | 4641 | (("#PROGRAM#") name) | |
4640 | - | (("mylib=.*") "mylib=\"$mydir/../share/java\"\n")) | |
4642 | + | (("mylib=.*") "mylib=\"$mydir/../share/java\"\n") | |
4643 | + | (("unzip") (which "unzip"))) | |
4641 | 4644 | (chmod file #o755))) | |
4642 | 4645 | (with-directory-excursion java | |
4643 | 4646 | (find-files "." ".*.jar$")))) | |
4644 | 4647 | #t))))) | |
4648 | + | (inputs | |
4649 | + | `(("unzip" ,unzip))) | |
4645 | 4650 | (native-inputs | |
4646 | 4651 | `(("jdk" ,icedtea-8 "jdk") | |
4647 | 4652 | ("ant" ,ant))) | |
… | |||
4653 | 4658 | for compatibility with java 7. This package is part of the checkerframework.") | |
4654 | 4659 | (license license:gpl2))); GPL 2 only | |
4655 | 4660 | ||
4661 | + | (define-public java-plume-lib-reflection-util | |
4662 | + | (package | |
4663 | + | (name "java-plume-lib-reflection-util") | |
4664 | + | (version "0.0.1.1") | |
4665 | + | (source (origin | |
4666 | + | (method git-fetch) | |
4667 | + | (uri (git-reference | |
4668 | + | (url "https://github.com/plume-lib/reflection-util.git") | |
4669 | + | (commit "b0de5e70ad71f75a6fd1918d35fdaeb29e97e189"))) | |
4670 | + | (file-name (git-file-name name version)) | |
4671 | + | (sha256 | |
4672 | + | (base32 | |
4673 | + | "0k1ls34ka0vjpyav1kn3ys19wjyp1vrjaha73yr90knpjwij8mi2")))) | |
4674 | + | (build-system ant-build-system) | |
4675 | + | (arguments | |
4676 | + | `(#:jar-name "plume-lib-reflection-util.jar" | |
4677 | + | #:source-dir "src/main/java")) | |
4678 | + | (inputs | |
4679 | + | `(("java-checkerframework-qual-annotation" | |
4680 | + | ,java-checkerframework-qual-annotation))) | |
4681 | + | (native-inputs | |
4682 | + | `(("java-junit" ,java-junit))) | |
4683 | + | (home-page "https://plumelib.org") | |
4684 | + | (synopsis "") | |
4685 | + | (description "") | |
4686 | + | (license license:expat))) | |
4687 | + | ||
4688 | + | (define-public java-plume-lib-util | |
4689 | + | (package | |
4690 | + | (name "java-plume-lib-util") | |
4691 | + | (version "1.0.5") | |
4692 | + | (source (origin | |
4693 | + | (method git-fetch) | |
4694 | + | (uri (git-reference | |
4695 | + | (url "https://github.com/plume-lib/plume-util.git") | |
4696 | + | (commit "db6dd1795b942e75360bf93de16f973922d767d8"))) | |
4697 | + | (file-name (git-file-name name version)) | |
4698 | + | (sha256 | |
4699 | + | (base32 | |
4700 | + | "1i1hyvyprx879awypb0hjq74k484dw3744ljrhwyxzvvrazr5rc4")))) | |
4701 | + | (build-system ant-build-system) | |
4702 | + | (arguments | |
4703 | + | `(#:jar-name "plume-lib-util.jar" | |
4704 | + | #:source-dir "src/main/java")) | |
4705 | + | (inputs | |
4706 | + | `(("java-checkerframework-qual-annotation" | |
4707 | + | ,java-checkerframework-qual-annotation) | |
4708 | + | ("java-plume-lib-reflection-util" ,java-plume-lib-reflection-util))) | |
4709 | + | (native-inputs | |
4710 | + | `(("java-junit" ,java-junit))) | |
4711 | + | (home-page "https://plumelib.org") | |
4712 | + | (synopsis "") | |
4713 | + | (description "") | |
4714 | + | (license license:expat))) | |
4715 | + | ||
4656 | 4716 | (define-public java-annotation-tools | |
4657 | 4717 | (package | |
4658 | 4718 | (name "java-annotation-tools") | |
… | |||
4669 | 4729 | (build-system ant-build-system) | |
4670 | 4730 | (arguments | |
4671 | 4731 | `(#:build-target "all" | |
4672 | - | #:jdk ,java-jsr308-langtools)) | |
4732 | + | #:jdk ,java-jsr308-langtools | |
4733 | + | #:tests? #f; too complex for now | |
4734 | + | #:phases | |
4735 | + | (modify-phases %standard-phases | |
4736 | + | (replace 'build | |
4737 | + | (lambda* (#:key inputs #:allow-other-keys) | |
4738 | + | (mkdir-p "build/jar") | |
4739 | + | (mkdir-p "build/classes") | |
4740 | + | (apply invoke "javac" "-d" "build/classes" | |
4741 | + | (find-files "asmx/src" ".*.java$")) | |
4742 | + | (invoke "jar" "cf" "build/jar/asmx.jar" | |
4743 | + | "-C" "build/classes" ".") | |
4744 | + | (delete-file-recursively "build/classes") | |
4745 | + | (mkdir-p "build/classes") | |
4746 | + | (apply invoke "javac" "-d" "build/classes" | |
4747 | + | "-cp" (string-append "build/jar/asmx.jar:" (getenv "CLASSPATH")) | |
4748 | + | (find-files "scene-lib/src" ".*.java$")) | |
4749 | + | (invoke "jar" "cf" "build/jar/scenelib.jar" | |
4750 | + | "-C" "build/classes" ".") | |
4751 | + | (delete-file-recursively "build/classes") | |
4752 | + | (mkdir-p "build/classes") | |
4753 | + | (apply invoke "javac" "-d" "build/classes" | |
4754 | + | "-cp" (string-append | |
4755 | + | "build/jar/asmx.jar:build/jar/scenelib.jar:" | |
4756 | + | (getenv "CLASSPATH")) | |
4757 | + | (find-files "annotation-file-utilities/src" ".*.java$")) | |
4758 | + | (invoke "jar" "cf" "build/jar/annotation-file-utilities.jar" | |
4759 | + | "-C" "build/classes" ".") | |
4760 | + | #t)) | |
4761 | + | (replace 'install | |
4762 | + | (install-jars "build/jar"))))) | |
4763 | + | (inputs | |
4764 | + | `(("java-checkerframework-qual-annotation" | |
4765 | + | ,java-checkerframework-qual-annotation) | |
4766 | + | ("java-guava" ,java-guava) | |
4767 | + | ("java-plume-lib-util" ,java-plume-lib-util))) | |
4673 | 4768 | (home-page "https://checkerframework.org/annotation-file-utilities/") | |
4674 | 4769 | (synopsis "External storage of annotations") | |
4675 | 4770 | (description "Sometimes, it is convenient to specify the annotations | |
… | |||
4689 | 4784 | (file-name (git-file-name name version)) | |
4690 | 4785 | (sha256 | |
4691 | 4786 | (base32 | |
4692 | - | "0fdf6m9s1bw8k4567vymhz7x6vpx255ks30nsawdsxhi0kqd219s")))) | |
4787 | + | "0fdf6m9s1bw8k4567vymhz7x6vpx255ks30nsawdsxhi0kqd219s")) | |
4788 | + | (modules '((guix build utils))) | |
4789 | + | (snippet | |
4790 | + | `(begin | |
4791 | + | (for-each delete-file (find-files "." ".*.jar$")) | |
4792 | + | #t)))) | |
4693 | 4793 | (build-system ant-build-system) | |
4694 | 4794 | (arguments | |
4695 | 4795 | `(#:jar-name "checkerframework.jar" | |
… | |||
4744 | 4844 | (test "checker") | |
4745 | 4845 | #t))))) | |
4746 | 4846 | (inputs | |
4747 | - | `(("java-javaparser" ,java-javaparser))) | |
4847 | + | `(("java-annotation-tools" ,java-annotation-tools) | |
4848 | + | ("java-javaparser" ,java-javaparser))) | |
4748 | 4849 | (home-page "https://checkerframework.org/") | |
4749 | 4850 | (synopsis "Statically detect common mistakes") | |
4750 | 4851 | (description "This framework enhances the Java type system in order to | |
… | |||
4754 | 4855 | license:gpl2+; with classpath exception | |
4755 | 4856 | license:expat)))) | |
4756 | 4857 | ||
4757 | - | (define-public java-truth | |
4858 | + | ;; Some random annotations required by dependencies of checkerframework | |
4859 | + | (define-public java-checkerframework-qual-annotation | |
4758 | 4860 | (package | |
4759 | - | (name "java-truth") | |
4760 | - | (version "0.42") | |
4861 | + | (inherit java-checkerframework) | |
4862 | + | (name "java-checkerframework-qual-annotation") | |
4863 | + | (arguments | |
4864 | + | `(#:tests? #f | |
4865 | + | #:phases | |
4866 | + | (modify-phases %standard-phases | |
4867 | + | (replace 'build | |
4868 | + | (lambda _ | |
4869 | + | (define (find-files* dir dirs pattern) | |
4870 | + | (if (null? dirs) | |
4871 | + | (find-files dir pattern) | |
4872 | + | (let ((next (car dirs)) | |
4873 | + | (rest (cdr dirs))) | |
4874 | + | (apply append (map (lambda (dir) (find-files* dir rest pattern)) (find-files dir next #:directories? #t)))))) | |
4875 | + | (mkdir-p "build/classes") | |
4876 | + | (mkdir-p "build/jar") | |
4877 | + | (apply invoke "javac" "-d" "build/classes" | |
4878 | + | "-cp" (getenv "CLASSPATH") | |
4879 | + | (append | |
4880 | + | ;; List from checker-qual/build.gradle (copySources) | |
4881 | + | (find-files "." "^FormatUtil.java") | |
4882 | + | (find-files "." "^NullnessUtil.java") | |
4883 | + | (find-files "." "^RegexUtil.java") | |
4884 | + | (find-files "." "^UnitsTools.java") | |
4885 | + | (find-files "." "^SignednessUtil.java") | |
4886 | + | (find-files "." "^I18nFormatUtil.java") | |
4887 | + | (find-files "." "^Opt.java") | |
4888 | + | (find-files "." "^PurityUnqualified.java") | |
4889 | + | (find-files* "." '("^org$" "^checkerframework$" "^qual$") | |
4890 | + | ".*.java$"))) | |
4891 | + | (invoke "jar" "cf" "build/jar/checkerframework-qual-annotation.jar" | |
4892 | + | "-C" "build/classes" ".") | |
4893 | + | #t)) | |
4894 | + | (replace 'install | |
4895 | + | (install-jars "build/jar"))))) | |
4896 | + | (inputs '()) | |
4897 | + | (native-inputs '()))) | |
4898 | + | ||
4899 | + | ;; Some random annotations required by dependencies of checkerframework | |
4900 | + | (define-public java-checkerframework-compat-qual-annotation | |
4901 | + | (package | |
4902 | + | (inherit java-checkerframework) | |
4903 | + | (name "java-checkerframework-compat-qual-annotation") | |
4904 | + | ;; Last version to provide this package | |
4905 | + | (version "2.5.5") | |
4761 | 4906 | (source (origin | |
4762 | 4907 | (method git-fetch) | |
4763 | 4908 | (uri (git-reference | |
4764 | - | (url "https://github.com/google/truth.git") | |
4765 | - | (commit "5aaf4bc1874583db510bbb209365382e5681d65a"))) | |
4909 | + | (url "https://github.com/typetools/checker-framework.git") | |
4910 | + | (commit "62602db32dbc0dd64b5aecc8c84671252a50e08b"))) | |
4766 | 4911 | (file-name (git-file-name name version)) | |
4767 | 4912 | (sha256 | |
4768 | 4913 | (base32 | |
4769 | - | "1lyjmy66sprxx9hn9krwys4pv2ibjf4d1vqmbyhsx61bb6ji627f")))) | |
4770 | - | (build-system ant-build-system) | |
4914 | + | "0d6ngrv0262ipisfzb2f2wp7ygziqfmgd2hhsxdnip4a69ws1lz2")) | |
4915 | + | (modules '((guix build utils))) | |
4916 | + | (snippet | |
4917 | + | `(begin | |
4918 | + | (for-each delete-file (find-files "." ".*.jar$")) | |
4919 | + | #t)))) | |
4771 | 4920 | (arguments | |
4772 | - | `(#:jar-name "truth.jar" | |
4773 | - | #:source-dir "core/src/main/java" | |
4774 | - | #:test-dir "core/src/test")) | |
4775 | - | (inputs | |
4776 | - | `(("java-checkerframework" ,java-checkerframework) | |
4777 | - | ("java-diff-utils" ,java-diff-utils) | |
4778 | - | ("java-guava" ,java-guava) | |
4779 | - | ("java-junit" ,java-junit))) | |
4780 | - | (home-page "https://google.github.io/truth") | |
4781 | - | (synopsis "Assertion library for Java") | |
4782 | - | (description "Truth makes your test assertions and failure messages more | |
4783 | - | readable. Similar to AssertJ, it natively supports many JDK and Guava types, | |
4784 | - | and it is extensible to others.") | |
4785 | - | (license license:asl2.0))) | |
4921 | + | `(#:tests? #f | |
4922 | + | #:phases | |
4923 | + | (modify-phases %standard-phases | |
4924 | + | (replace 'build | |
4925 | + | (lambda _ | |
4926 | + | (define (find-files* dir dirs pattern) | |
4927 | + | (if (null? dirs) | |
4928 | + | (find-files dir pattern) | |
4929 | + | (let ((next (car dirs)) | |
4930 | + | (rest (cdr dirs))) | |
4931 | + | (apply append (map (lambda (dir) (find-files* dir rest pattern)) (find-files dir next #:directories? #t)))))) | |
4932 | + | (mkdir-p "build/classes") | |
4933 | + | (mkdir-p "build/jar") | |
4934 | + | (apply invoke "javac" "-d" "build/classes" | |
4935 | + | "-cp" (getenv "CLASSPATH") | |
4936 | + | (append | |
4937 | + | ;; List from checker-qual/build.gradle (copySources) | |
4938 | + | (find-files* "." '("^org$" "^checkerframework$" "^compatqual$") | |
4939 | + | ".*.java$"))) | |
4940 | + | (invoke "jar" "cf" "build/jar/checkerframework-qual-annotation.jar" | |
4941 | + | "-C" "build/classes" ".") | |
4942 | + | #t)) | |
4943 | + | (replace 'install | |
4944 | + | (install-jars "build/jar"))))) | |
4945 | + | (inputs '()) | |
4946 | + | (native-inputs '()))) | |
4786 | 4947 | ||
4787 | 4948 | (define-public java-truth | |
4788 | 4949 | (package | |
… | |||
4801 | 4962 | (arguments | |
4802 | 4963 | `(#:jar-name "truth.jar" | |
4803 | 4964 | #:source-dir "core/src/main/java" | |
4804 | - | #:test-dir "core/src/test")) | |
4965 | + | #:test-dir "core/src/test" | |
4966 | + | #:tests? #f; TODO: require google-testing | |
4967 | + | #:phases | |
4968 | + | (modify-phases %standard-phases | |
4969 | + | (add-before 'build 'remove-duplicate | |
4970 | + | (lambda _ | |
4971 | + | (delete-file-recursively | |
4972 | + | "core/src/main/java/com/google/common/truth/super") | |
4973 | + | (delete-file-recursively | |
4974 | + | "core/src/test/java/com/google/common/truth/super") | |
4975 | + | #t))))) | |
4805 | 4976 | (inputs | |
4806 | - | `(("java-diff-utils" ,java-diff-utils) | |
4807 | - | ("java-guava" ,java-guava) | |
4977 | + | `(("java-checkerframework-compat-qual-annotation" | |
4978 | + | ,java-checkerframework-compat-qual-annotation) | |
4979 | + | ("java-diff-utils" ,java-diff-utils) | |
4980 | + | ("java-error-prone-annotations" ,java-error-prone-annotations) | |
4981 | + | ("java-guava-25" ,java-guava-25) | |
4982 | + | ("java-hamcrest-core" ,java-hamcrest-core) | |
4808 | 4983 | ("java-junit" ,java-junit))) | |
4809 | 4984 | (home-page "https://google.github.io/truth") | |
4810 | 4985 | (synopsis "Assertion library for Java") | |
… | |||
4829 | 5004 | (arguments | |
4830 | 5005 | `(#:jar-name (string-append ,name "-" ,version ".jar") | |
4831 | 5006 | #:source-dir "src/main/java" | |
5007 | + | #:tests? #f; TODO: require google-testing | |
4832 | 5008 | #:jdk ,icedtea-8)) | |
4833 | 5009 | (native-inputs | |
4834 | - | `(("guice" ,java-guice) | |
5010 | + | `(("java-guava-25" ,java-guava-25) | |
4835 | 5011 | ("java-junit" ,java-junit) | |
5012 | + | ("java-mockito-1" ,java-mockito-1) | |
4836 | 5013 | ("java-truth" ,java-truth))) | |
4837 | 5014 | (home-page "https://github.com/square/javapoet") | |
4838 | 5015 | (synopsis "") | |
… | |||
4917 | 5094 | (define-public java-error-prone | |
4918 | 5095 | (package | |
4919 | 5096 | (name "java-error-prone") | |
4920 | - | (version "2.0.19") | |
5097 | + | (version "2.3.2") | |
4921 | 5098 | (source (origin | |
4922 | 5099 | (method url-fetch) | |
4923 | 5100 | (uri (string-append "https://github.com/google/error-prone/archive/v" | |
… | |||
4925 | 5102 | (file-name (string-append name "-" version ".tar.gz")) | |
4926 | 5103 | (sha256 | |
4927 | 5104 | (base32 | |
4928 | - | "1qm7zpf0m75ps623h90xwb0rfyj4pywybvp005s9ykaqcvp50kzf")))) | |
5105 | + | "0m0gzdhahjmiyr1ccl2zbf35qin3qbjxf3ay42vj49ba4c3yy8s7")))) | |
4929 | 5106 | (build-system ant-build-system) | |
4930 | 5107 | (arguments | |
4931 | 5108 | `(#:tests? #f | |
… | |||
4938 | 5115 | (mkdir-p "ant/src/main/java/com/google/errorprone/internal") | |
4939 | 5116 | (copy-file | |
4940 | 5117 | "core/src/main/java/com/google/errorprone/internal/NonDelegatingClassLoader.java" | |
4941 | - | "ant/src/main/java/com/google/errorprone/internal/NonDelegatingClassLoader.java")))))) | |
5118 | + | "ant/src/main/java/com/google/errorprone/internal/NonDelegatingClassLoader.java") | |
5119 | + | #t))))) | |
4942 | 5120 | (propagated-inputs '()) | |
4943 | 5121 | (home-page "https://github.com/google/guava") | |
4944 | 5122 | (synopsis "") | |
… | |||
5170 | 5348 | ;; * "IgnoreJRERequirement" is used for Android. | |
5171 | 5349 | (substitute* (find-files "." "\\.java$") | |
5172 | 5350 | (("import com.google.j2objc.*") "") | |
5173 | - | (("import com.google.errorprone.annotation.*") "") | |
5174 | 5351 | (("import org.codehaus.mojo.animal_sniffer.*") "") | |
5175 | - | (("@CanIgnoreReturnValue") "") | |
5176 | - | (("@LazyInit") "") | |
5177 | 5352 | (("@WeakOuter") "") | |
5178 | 5353 | (("@RetainedWith") "") | |
5179 | 5354 | (("@Weak") "") | |
5180 | - | (("@ForOverride") "") | |
5181 | 5355 | (("@J2ObjCIncompatible") "") | |
5182 | - | (("@CompatibleWith\\(\"[A-Z]\"\\)") "") | |
5183 | - | (("@Immutable\\([^\\)]*\\)") "") | |
5184 | - | (("@Immutable") "") | |
5185 | 5356 | (("@ReflectionSupport\\([^\\)]*\\)") "") | |
5186 | - | (("@DoNotMock.*") "") | |
5187 | - | (("@MustBeClosed") "") | |
5188 | 5357 | (("@IgnoreJRERequirement") ""))) | |
5189 | - | #t))))))) | |
5358 | + | #t))))) | |
5359 | + | (inputs | |
5360 | + | `(("java-checkerframework-qual-annotation" | |
5361 | + | ,java-checkerframework-qual-annotation) | |
5362 | + | ("java-error-prone-annotations" ,java-error-prone-annotations) | |
5363 | + | ("java-jsr305" ,java-jsr305))))) | |
5190 | 5364 | ||
5191 | 5365 | ;(define-public java-xml-commons | |
5192 | 5366 | ; (package | |
… | |||
6331 | 6505 | (description "") | |
6332 | 6506 | (license license:asl2.0))) | |
6333 | 6507 | ||
6334 | - | (define-public openjdk9 | |
6335 | - | (package | |
6336 | - | (name "openjdk") | |
6337 | - | (version "9+181") | |
6338 | - | (source (origin | |
6339 | - | (method url-fetch) | |
6340 | - | (uri "http://hg.openjdk.java.net/jdk/jdk/archive/3cc80be736f2.tar.bz2") | |
6341 | - | (file-name (string-append name "-" version ".tar.bz2")) | |
6342 | - | (sha256 | |
6343 | - | (base32 | |
6344 | - | "01ihmyf7k5z17wbr7xig7y40l9f01d5zjgkcmawn1102hw5kchpq")))) | |
6345 | - | (build-system gnu-build-system) | |
6346 | - | (outputs '("out" "jdk" "doc")) | |
6347 | - | (arguments | |
6348 | - | `(#:tests? #f; require jtreg | |
6349 | - | #:imported-modules | |
6350 | - | ((guix build syscalls) | |
6351 | - | ,@%gnu-build-system-modules) | |
6352 | - | #:phases | |
6353 | - | (modify-phases %standard-phases | |
6354 | - | (delete 'patch-source-shebangs) | |
6355 | - | (replace 'configure | |
6356 | - | (lambda* (#:key inputs outputs #:allow-other-keys) | |
6357 | - | (invoke "bash" "./configure" | |
6358 | - | (string-append "--with-freetype=" (assoc-ref inputs "freetype")) | |
6359 | - | "--disable-freetype-bundling" | |
6360 | - | "--disable-warnings-as-errors" | |
6361 | - | "--disable-hotspot-gtest" | |
6362 | - | (string-append "--prefix=" (assoc-ref outputs "out"))) | |
6363 | - | #t)) | |
6364 | - | (replace 'build | |
6365 | - | (lambda _ | |
6366 | - | (with-output-to-file ".src-rev" | |
6367 | - | (lambda _ | |
6368 | - | (display ,version))) | |
6369 | - | (setenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES" "yes") | |
6370 | - | (invoke "make" "all") | |
6371 | - | #t)) | |
6372 | - | ;; Some of the libraries in the lib/ folder link to libjvm.so. | |
6373 | - | ;; But that shared object is located in the server/ folder, so it | |
6374 | - | ;; cannot be found. This phase creates a symbolic link in the | |
6375 | - | ;; lib/ folder so that the other libraries can find it. | |
6376 | - | ;; | |
6377 | - | ;; See: | |
6378 | - | ;; https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00169.html | |
6379 | - | ;; | |
6380 | - | ;; FIXME: Find the bug in the build system, so that this symlink is | |
6381 | - | ;; not needed. | |
6382 | - | (add-after 'install 'install-libjvm | |
6383 | - | (lambda* (#:key inputs outputs #:allow-other-keys) | |
6384 | - | (let* ((lib-out (string-append (assoc-ref outputs "out") | |
6385 | - | "/lib")) | |
6386 | - | (lib-jdk (string-append (assoc-ref outputs "jdk") | |
6387 | - | "/lib"))) | |
6388 | - | (symlink (string-append lib-jdk "/server/libjvm.so") | |
6389 | - | (string-append lib-jdk "/libjvm.so")) | |
6390 | - | (symlink (string-append lib-out "/server/libjvm.so") | |
6391 | - | (string-append lib-out "/libjvm.so"))) | |
6392 | - | #t)) | |
6393 | - | (replace 'install | |
6394 | - | (lambda* (#:key outputs #:allow-other-keys) | |
6395 | - | (let ((out (assoc-ref outputs "out")) | |
6396 | - | (jdk (assoc-ref outputs "jdk")) | |
6397 | - | (doc (assoc-ref outputs "doc")) | |
6398 | - | (images (car (find-files "build" ".*-server-release" | |
6399 | - | #:directories? #t)))) | |
6400 | - | (copy-recursively (string-append images "/images/jdk") jdk) | |
6401 | - | (copy-recursively (string-append images "/images/jre") out) | |
6402 | - | (copy-recursively (string-append images "/images/docs") doc)) | |
6403 | - | #t)) | |
6404 | - | (add-after 'install 'strip-zip-timestamps | |
6405 | - | (lambda* (#:key outputs #:allow-other-keys) | |
6406 | - | (use-modules (guix build syscalls)) | |
6407 | - | (for-each (lambda (zip) | |
6408 | - | (let ((dir (mkdtemp! "zip-contents.XXXXXX"))) | |
6409 | - | (with-directory-excursion dir | |
6410 | - | (invoke "unzip" zip)) | |
6411 | - | (delete-file zip) | |
6412 | - | (for-each (lambda (file) | |
6413 | - | (let ((s (lstat file))) | |
6414 | - | (unless (eq? (stat:type s) 'symlink) | |
6415 | - | (format #t "reset ~a~%" file) | |
6416 | - | (utime file 0 0 0 0)))) | |
6417 | - | (find-files dir #:directories? #t)) | |
6418 | - | (with-directory-excursion dir | |
6419 | - | (let ((files (find-files "." ".*" #:directories? #t))) | |
6420 | - | (apply invoke "zip" "-0" "-X" zip files))))) | |
6421 | - | (find-files (assoc-ref outputs "doc") ".*.zip$")) | |
6422 | - | #t))))) | |
6423 | - | (inputs | |
6424 | - | `(("alsa-lib" ,alsa-lib) | |
6425 | - | ("cups" ,cups) | |
6426 | - | ("fontconfig" ,fontconfig) | |
6427 | - | ("freetype" ,freetype) | |
6428 | - | ("libelf" ,libelf) | |
6429 | - | ("libice" ,libice) | |
6430 | - | ("libx11" ,libx11) | |
6431 | - | ("libxcomposite" ,libxcomposite) | |
6432 | - | ("libxi" ,libxi) | |
6433 | - | ("libxinerama" ,libxinerama) | |
6434 | - | ("libxrender" ,libxrender) | |
6435 | - | ("libxt" ,libxt) | |
6436 | - | ("libxtst" ,libxtst))) | |
6437 | - | (native-inputs | |
6438 | - | `(("icedtea-8" ,icedtea-8) | |
6439 | - | ("icedtea-8:jdk" ,icedtea-8 "jdk") | |
6440 | - | ("unzip" ,unzip) | |
6441 | - | ("which" ,which) | |
6442 | - | ("zip" ,zip))) | |
6443 | - | (home-page "http://openjdk.java.net/projects/jdk9/") | |
6444 | - | (synopsis "") | |
6445 | - | (description "") | |
6446 | - | (license license:gpl2))) | |
6447 | - | ||
6448 | - | (define-public openjdk10 | |
6449 | - | (package | |
6450 | - | (name "openjdk") | |
6451 | - | (version "10+46") | |
6452 | - | (source (origin | |
6453 | - | (method url-fetch) | |
6454 | - | (uri "http://hg.openjdk.java.net/jdk/jdk/archive/6fa770f9f8ab.tar.bz2") | |
6455 | - | (file-name (string-append name "-" version ".tar.bz2")) | |
6456 | - | (sha256 | |
6457 | - | (base32 | |
6458 | - | "0zywq2203b4hx4jms9vbwvjcj1d3k2v3qpx4s33729fkpmid97r4")))) | |
6459 | - | (build-system gnu-build-system) | |
6460 | - | (outputs '("out" "jdk" "doc")) | |
6461 | - | (arguments | |
6462 | - | `(#:tests? #f; require jtreg | |
6463 | - | #:imported-modules | |
6464 | - | ((guix build syscalls) | |
6465 | - | ,@%gnu-build-system-modules) | |
6466 | - | #:phases | |
6467 | - | (modify-phases %standard-phases | |
6468 | - | (delete 'patch-source-shebangs) | |
6469 | - | (replace 'configure | |
6470 | - | (lambda* (#:key inputs outputs #:allow-other-keys) | |
6471 | - | (invoke "bash" "./configure" | |
6472 | - | (string-append "--with-freetype=" (assoc-ref inputs "freetype")) | |
6473 | - | "--disable-freetype-bundling" | |
6474 | - | "--disable-warnings-as-errors" | |
6475 | - | "--disable-hotspot-gtest" | |
6476 | - | (string-append "--prefix=" (assoc-ref outputs "out"))) | |
6477 | - | #t)) | |
6478 | - | (replace 'build | |
6479 | - | (lambda _ | |
6480 | - | (with-output-to-file ".src-rev" | |
6481 | - | (lambda _ | |
6482 | - | (display ,version))) | |
6483 | - | (setenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES" "yes") | |
6484 | - | (invoke "make" "all") | |
6485 | - | #t)) | |
6486 | - | ;; Some of the libraries in the lib/ folder link to libjvm.so. | |
6487 | - | ;; But that shared object is located in the server/ folder, so it | |
6488 | - | ;; cannot be found. This phase creates a symbolic link in the | |
6489 | - | ;; lib/ folder so that the other libraries can find it. | |
6490 | - | ;; | |
6491 | - | ;; See: | |
6492 | - | ;; https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00169.html | |
6493 | - | ;; | |
6494 | - | ;; FIXME: Find the bug in the build system, so that this symlink is | |
6495 | - | ;; not needed. | |
6496 | - | (add-after 'install 'install-libjvm | |
6497 | - | (lambda* (#:key inputs outputs #:allow-other-keys) | |
6498 | - | (let* ((lib-out (string-append (assoc-ref outputs "out") | |
6499 | - | "/lib")) | |
6500 | - | (lib-jdk (string-append (assoc-ref outputs "jdk") | |
6501 | - | "/lib"))) | |
6502 | - | (symlink (string-append lib-jdk "/server/libjvm.so") | |
6503 | - | (string-append lib-jdk "/libjvm.so")) | |
6504 | - | (symlink (string-append lib-out "/server/libjvm.so") | |
6505 | - | (string-append lib-out "/libjvm.so"))) | |
6506 | - | #t)) | |
6507 | - | (replace 'install | |
6508 | - | (lambda* (#:key outputs #:allow-other-keys) | |
6509 | - | (let ((out (assoc-ref outputs "out")) | |
6510 | - | (jdk (assoc-ref outputs "jdk")) | |
6511 | - | (doc (assoc-ref outputs "doc")) | |
6512 | - | (images (car (find-files "build" ".*-server-release" | |
6513 | - | #:directories? #t)))) | |
6514 | - | (copy-recursively (string-append images "/images/jdk") jdk) | |
6515 | - | (copy-recursively (string-append images "/images/jre") out) | |
6516 | - | (copy-recursively (string-append images "/images/docs") doc)) | |
6517 | - | #t)) | |
6518 | - | (add-after 'install 'strip-zip-timestamps | |
6519 | - | (lambda* (#:key outputs #:allow-other-keys) | |
6520 | - | (use-modules (guix build syscalls)) | |
6521 | - | (for-each (lambda (zip) | |
6522 | - | (let ((dir (mkdtemp! "zip-contents.XXXXXX"))) | |
6523 | - | (with-directory-excursion dir | |
6524 | - | (invoke "unzip" zip)) | |
6525 | - | (delete-file zip) | |
6526 | - | (for-each (lambda (file) | |
6527 | - | (let ((s (lstat file))) | |
6528 | - | (unless (eq? (stat:type s) 'symlink) | |
6529 | - | (format #t "reset ~a~%" file) | |
6530 | - | (utime file 0 0 0 0)))) | |
6531 | - | (find-files dir #:directories? #t)) | |
6532 | - | (with-directory-excursion dir | |
6533 | - | (let ((files (find-files "." ".*" #:directories? #t))) | |
6534 | - | (apply invoke "zip" "-0" "-X" zip files))))) | |
6535 | - | (find-files (assoc-ref outputs "doc") ".*.zip$")) | |
6536 | - | #t))))) | |
6537 | - | (inputs | |
6538 | - | `(("alsa-lib" ,alsa-lib) | |
6539 | - | ("cups" ,cups) | |
6540 | - | ("fontconfig" ,fontconfig) | |
6541 | - | ("freetype" ,freetype) | |
6542 | - | ("libelf" ,libelf) | |
6543 | - | ("libice" ,libice) | |
6544 | - | ("libx11" ,libx11) | |
6545 | - | ("libxcomposite" ,libxcomposite) | |
6546 | - | ("libxi" ,libxi) | |
6547 | - | ("libxinerama" ,libxinerama) | |
6548 | - | ("libxrender" ,libxrender) | |
6549 | - | ("libxt" ,libxt) | |
6550 | - | ("libxtst" ,libxtst))) | |
6551 | - | (native-inputs | |
6552 | - | `(("openjdk9" ,openjdk9) | |
6553 | - | ("openjdk9:jdk" ,openjdk9 "jdk") | |
6554 | - | ("unzip" ,unzip) | |
6555 | - | ("which" ,which) | |
6556 | - | ("zip" ,zip))) | |
6557 | - | (home-page "http://openjdk.java.net/projects/jdk9/") | |
6558 | - | (synopsis "") | |
6559 | - | (description "") | |
6560 | - | (license license:gpl2))) | |
6561 | - | ||
6562 | 6508 | (define-public java-procyon | |
6563 | 6509 | (package | |
6564 | 6510 | (name "java-procyon") | |
… | |||
7350 | 7296 | (build-system ant-build-system) | |
7351 | 7297 | (arguments | |
7352 | 7298 | `(#:jar-name "caffeine.jar" | |
7353 | - | #:source-dir "caffeine/src/main/java" | |
7299 | + | #:source-dir "caffeine/src/main/java:caffeine/generated-sources" | |
7300 | + | #:test-dir "caffeine/src/test" | |
7301 | + | #:jdk ,openjdk9 | |
7354 | 7302 | #:phases | |
7355 | 7303 | (modify-phases %standard-phases | |
7356 | 7304 | (add-before 'build 'generate-javapoet | |
… | |||
7359 | 7307 | (apply invoke "javac" "-cp" (getenv "CLASSPATH") | |
7360 | 7308 | "-d" "build/javapoet" | |
7361 | 7309 | (find-files "caffeine/src/javaPoet" ".*.java$")) | |
7310 | + | (copy-recursively "caffeine/src/javaPoet/resources" | |
7311 | + | "build/javapoet") | |
7312 | + | (invoke "java" "-cp" (string-append (getenv "CLASSPATH") | |
7313 | + | ":build/javapoet") | |
7314 | + | "-noverify" | |
7315 | + | "com.github.benmanes.caffeine.cache.LocalCacheFactoryGenerator" | |
7316 | + | "caffeine/generated-sources") | |
7317 | + | (invoke "java" "-cp" (string-append (getenv "CLASSPATH") | |
7318 | + | ":build/javapoet") | |
7319 | + | "-noverify" | |
7320 | + | "com.github.benmanes.caffeine.cache.NodeFactoryGenerator" | |
7321 | + | "caffeine/generated-sources") | |
7362 | 7322 | #t))))) | |
7363 | 7323 | (inputs | |
7364 | - | `(("java-jsr305" ,java-jsr305) | |
7324 | + | `(("java-commons-lang3" ,java-commons-lang3) | |
7325 | + | ("java-guava" ,java-guava) | |
7326 | + | ("java-jsr305" ,java-jsr305) | |
7365 | 7327 | ("java-javapoet" ,java-javapoet))) | |
7328 | + | (native-inputs | |
7329 | + | `(("java-hamcrest-all" ,java-hamcrest-all) | |
7330 | + | ("java-mockito-1" ,java-mockito-1) | |
7331 | + | ("java-testng" ,java-testng))) | |
7366 | 7332 | (home-page "") | |
7367 | 7333 | (synopsis "") | |
7368 | 7334 | (description "") |