1 |
commit: 02b0fcbb539a7d9518e3095ee8aea1ceed105eb7 |
2 |
Author: Patrice Clement <monsieurp <AT> gentoo <DOT> org> |
3 |
AuthorDate: Wed Oct 7 23:08:48 2015 +0000 |
4 |
Commit: Patrice Clement <monsieurp <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Oct 7 23:09:43 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=02b0fcbb |
7 |
|
8 |
dev-java/colt: Remove dev-java/concurrent-util dependency. Fixes bug 546496. |
9 |
|
10 |
Monkey patch sources and make use of java.concurrent.util packages from the SDK instead. Raise jdk/jre to 1.7. Drop ppc+ppc64. |
11 |
|
12 |
Package-Manager: portage-2.2.20.1 |
13 |
Signed-off-by: Patrice Clement <monsieurp <AT> gentoo.org> |
14 |
|
15 |
dev-java/colt/colt-1.2.0-r3.ebuild | 48 +++++ |
16 |
...colt-1.2.0-remove-concurrent-util-imports.patch | 210 +++++++++++++++++++++ |
17 |
2 files changed, 258 insertions(+) |
18 |
|
19 |
diff --git a/dev-java/colt/colt-1.2.0-r3.ebuild b/dev-java/colt/colt-1.2.0-r3.ebuild |
20 |
new file mode 100644 |
21 |
index 0000000..68ae524 |
22 |
--- /dev/null |
23 |
+++ b/dev-java/colt/colt-1.2.0-r3.ebuild |
24 |
@@ -0,0 +1,48 @@ |
25 |
+# Copyright 1999-2015 Gentoo Foundation |
26 |
+# Distributed under the terms of the GNU General Public License v2 |
27 |
+# $Id$ |
28 |
+ |
29 |
+EAPI=5 |
30 |
+JAVA_PKG_IUSE="source doc" |
31 |
+ |
32 |
+inherit java-pkg-2 java-ant-2 eutils |
33 |
+ |
34 |
+DESCRIPTION="A set of Open Source Libraries for High Performance Scientific and Technical Computing in Java" |
35 |
+SRC_URI="http://dsd.lbl.gov/~hoschek/colt-download/releases/${P}.tar.gz" |
36 |
+HOMEPAGE="http://www-itg.lbl.gov/~hoschek/colt/" |
37 |
+ |
38 |
+LICENSE="colt" |
39 |
+IUSE="" |
40 |
+SLOT="0" |
41 |
+KEYWORDS="~amd64 ~x86" |
42 |
+ |
43 |
+DEPEND=">=virtual/jdk-1.7" |
44 |
+RDEPEND=">=virtual/jre-1.7" |
45 |
+ |
46 |
+S="${WORKDIR}/${PN}" |
47 |
+ |
48 |
+EANT_BUILD_TARGET="javac jar" |
49 |
+JAVA_ANT_REWRITE_CLASSPATH="true" |
50 |
+JAVA_ANT_ENCODING="ISO-8859-1" |
51 |
+ |
52 |
+# [0]: I don't know but it must be useful. |
53 |
+# [1]: Monkey patch manually some classes to get rid of the |
54 |
+# oswego.edu.concurrent.util imports. |
55 |
+PATCHES=( |
56 |
+ "${FILESDIR}/${P}-benchmark-no-deprecation.patch" |
57 |
+ "${FILESDIR}/${P}-remove-concurrent-util-imports.patch" |
58 |
+) |
59 |
+ |
60 |
+java_prepare() { |
61 |
+ epatch "${PATCHES[@]}" |
62 |
+ |
63 |
+ find "${S}" -name \*.jar -exec rm -v {} \; || die |
64 |
+} |
65 |
+ |
66 |
+src_install() { |
67 |
+ java-pkg_dojar "lib/${PN}.jar" |
68 |
+ |
69 |
+ dohtml README.html || die |
70 |
+ use doc && java-pkg_dojavadoc doc/api |
71 |
+ use source && java-pkg_dosrc src/* |
72 |
+} |
73 |
|
74 |
diff --git a/dev-java/colt/files/colt-1.2.0-remove-concurrent-util-imports.patch b/dev-java/colt/files/colt-1.2.0-remove-concurrent-util-imports.patch |
75 |
new file mode 100644 |
76 |
index 0000000..2cfbef7 |
77 |
--- /dev/null |
78 |
+++ b/dev-java/colt/files/colt-1.2.0-remove-concurrent-util-imports.patch |
79 |
@@ -0,0 +1,210 @@ |
80 |
+--- src/cern/colt/matrix/linalg/SmpBlas.java.orig 2015-10-07 22:23:44.969486000 +0000 |
81 |
++++ src/cern/colt/matrix/linalg/SmpBlas.java 2015-10-07 22:29:15.475486000 +0000 |
82 |
+@@ -10,7 +10,8 @@ |
83 |
+ |
84 |
+ import cern.colt.matrix.DoubleMatrix1D; |
85 |
+ import cern.colt.matrix.DoubleMatrix2D; |
86 |
+-import EDU.oswego.cs.dl.util.concurrent.FJTask; |
87 |
++ |
88 |
++import java.util.concurrent.ForkJoinTask; |
89 |
+ /** |
90 |
+ Parallel implementation of the Basic Linear Algebra System for symmetric multi processing boxes. |
91 |
+ Currently only a few algorithms are parallelised; the others are fully functional, but run in sequential mode. |
92 |
+@@ -198,7 +199,7 @@ |
93 |
+ |
94 |
+ // set up concurrent tasks |
95 |
+ int span = width/noOfTasks; |
96 |
+- final FJTask[] subTasks = new FJTask[noOfTasks]; |
97 |
++ final ForkJoinTask[] subTasks = new ForkJoinTask[noOfTasks]; |
98 |
+ for (int i=0; i<noOfTasks; i++) { |
99 |
+ final int offset = i*span; |
100 |
+ if (i==noOfTasks-1) span = width - span*i; // last span may be a bit larger |
101 |
+@@ -217,24 +218,30 @@ |
102 |
+ CC = C.viewPart(offset,0,span,p); |
103 |
+ } |
104 |
+ |
105 |
+- subTasks[i] = new FJTask() { |
106 |
++ subTasks[i] = new ForkJoinTask() { |
107 |
+ public void run() { |
108 |
+ seqBlas.dgemm(transposeA,transposeB,alpha,AA,BB,beta,CC); |
109 |
+ //System.out.println("Hello "+offset); |
110 |
+ } |
111 |
++ |
112 |
++ public boolean exec() { return true; } |
113 |
++ public void setRawResult(Object o) {} |
114 |
++ public Object getRawResult() {return null;} |
115 |
+ }; |
116 |
+ } |
117 |
+ |
118 |
+ // run tasks and wait for completion |
119 |
+- try { |
120 |
+- this.smp.taskGroup.invoke( |
121 |
+- new FJTask() { |
122 |
+- public void run() { |
123 |
+- coInvoke(subTasks); |
124 |
+- } |
125 |
+- } |
126 |
+- ); |
127 |
+- } catch (InterruptedException exc) {} |
128 |
++ this.smp.taskGroup.invoke( |
129 |
++ new ForkJoinTask() { |
130 |
++ public void run() { |
131 |
++ invokeAll(subTasks); |
132 |
++ } |
133 |
++ |
134 |
++ public boolean exec() { return true; } |
135 |
++ public void setRawResult(Object o) {} |
136 |
++ public Object getRawResult() {return null;} |
137 |
++ } |
138 |
++ ); |
139 |
+ } |
140 |
+ public void dgemv(final boolean transposeA, final double alpha, DoubleMatrix2D A, final DoubleMatrix1D x, final double beta, DoubleMatrix1D y) { |
141 |
+ /* |
142 |
+@@ -271,7 +278,7 @@ |
143 |
+ |
144 |
+ // set up concurrent tasks |
145 |
+ int span = width/noOfTasks; |
146 |
+- final FJTask[] subTasks = new FJTask[noOfTasks]; |
147 |
++ final ForkJoinTask[] subTasks = new ForkJoinTask[noOfTasks]; |
148 |
+ for (int i=0; i<noOfTasks; i++) { |
149 |
+ final int offset = i*span; |
150 |
+ if (i==noOfTasks-1) span = width - span*i; // last span may be a bit larger |
151 |
+@@ -280,24 +287,30 @@ |
152 |
+ final DoubleMatrix2D AA = A.viewPart(offset,0,span,n); |
153 |
+ final DoubleMatrix1D yy = y.viewPart(offset,span); |
154 |
+ |
155 |
+- subTasks[i] = new FJTask() { |
156 |
++ subTasks[i] = new ForkJoinTask() { |
157 |
+ public void run() { |
158 |
+ seqBlas.dgemv(transposeA,alpha,AA,x,beta,yy); |
159 |
+ //System.out.println("Hello "+offset); |
160 |
+ } |
161 |
++ |
162 |
++ public boolean exec() { return true; } |
163 |
++ public void setRawResult(Object o) {} |
164 |
++ public Object getRawResult() {return null;} |
165 |
+ }; |
166 |
+ } |
167 |
+ |
168 |
+ // run tasks and wait for completion |
169 |
+- try { |
170 |
+- this.smp.taskGroup.invoke( |
171 |
+- new FJTask() { |
172 |
+- public void run() { |
173 |
+- coInvoke(subTasks); |
174 |
+- } |
175 |
+- } |
176 |
+- ); |
177 |
+- } catch (InterruptedException exc) {} |
178 |
++ this.smp.taskGroup.invoke( |
179 |
++ new ForkJoinTask() { |
180 |
++ public void run() { |
181 |
++ invokeAll(subTasks); |
182 |
++ } |
183 |
++ |
184 |
++ public boolean exec() { return true; } |
185 |
++ public void setRawResult(Object o) {} |
186 |
++ public Object getRawResult() {return null;} |
187 |
++ } |
188 |
++ ); |
189 |
+ } |
190 |
+ public void dger(double alpha, DoubleMatrix1D x, DoubleMatrix1D y, DoubleMatrix2D A) { |
191 |
+ seqBlas.dger(alpha,x,y,A); |
192 |
+@@ -369,9 +382,6 @@ |
193 |
+ /** |
194 |
+ * Prints various snapshot statistics to System.out; Simply delegates to {@link EDU.oswego.cs.dl.util.concurrent.FJTaskRunnerGroup#stats}. |
195 |
+ */ |
196 |
+-public void stats() { |
197 |
+- if (this.smp!=null) this.smp.stats(); |
198 |
+-} |
199 |
+ private double xsum(DoubleMatrix2D A) { |
200 |
+ double[] sums = run(A,true, |
201 |
+ new Matrix2DMatrix2DFunction() { |
202 |
+--- src/cern/colt/matrix/linalg/Smp.java.orig 2015-10-07 21:08:19.443486000 +0000 |
203 |
++++ src/cern/colt/matrix/linalg/Smp.java 2015-10-07 22:28:24.722486000 +0000 |
204 |
+@@ -9,12 +9,13 @@ |
205 |
+ package cern.colt.matrix.linalg; |
206 |
+ |
207 |
+ import cern.colt.matrix.DoubleMatrix2D; |
208 |
+-import EDU.oswego.cs.dl.util.concurrent.FJTask; |
209 |
+-import EDU.oswego.cs.dl.util.concurrent.FJTaskRunnerGroup; |
210 |
++import java.util.concurrent.ForkJoinTask; |
211 |
++import java.util.concurrent.ForkJoinPool; |
212 |
++ |
213 |
+ /* |
214 |
+ */ |
215 |
+ class Smp { |
216 |
+- protected FJTaskRunnerGroup taskGroup; // a very efficient and light weight thread pool |
217 |
++ protected ForkJoinPool taskGroup; // a very efficient and light weight thread pool |
218 |
+ |
219 |
+ protected int maxThreads; |
220 |
+ /** |
221 |
+@@ -24,41 +25,39 @@ |
222 |
+ maxThreads = Math.max(1,maxThreads); |
223 |
+ this.maxThreads = maxThreads; |
224 |
+ if (maxThreads>1) { |
225 |
+- this.taskGroup = new FJTaskRunnerGroup(maxThreads); |
226 |
++ this.taskGroup = new ForkJoinPool(maxThreads); |
227 |
+ } |
228 |
+ else { // avoid parallel overhead |
229 |
+ this.taskGroup = null; |
230 |
+ } |
231 |
+ } |
232 |
+-/** |
233 |
+- * Clean up deamon threads, if necessary. |
234 |
+- */ |
235 |
+-public void finalize() { |
236 |
+- if (this.taskGroup!=null) this.taskGroup.interruptAll(); |
237 |
+-} |
238 |
+ protected void run(final DoubleMatrix2D[] blocksA, final DoubleMatrix2D[] blocksB, final double[] results, final Matrix2DMatrix2DFunction function) { |
239 |
+- final FJTask[] subTasks = new FJTask[blocksA.length]; |
240 |
++ final ForkJoinTask[] subTasks = new ForkJoinTask[blocksA.length]; |
241 |
+ for (int i=0; i<blocksA.length; i++) { |
242 |
+ final int k = i; |
243 |
+- subTasks[i] = new FJTask() { |
244 |
++ subTasks[i] = new ForkJoinTask() { |
245 |
+ public void run() { |
246 |
+ double result = function.apply(blocksA[k],blocksB != null ? blocksB[k] : null); |
247 |
+ if (results!=null) results[k] = result; |
248 |
+ //System.out.print("."); |
249 |
+ } |
250 |
++ public boolean exec() { return true; } |
251 |
++ public void setRawResult(Object o) {} |
252 |
++ public Object getRawResult() {return null;} |
253 |
+ }; |
254 |
+ } |
255 |
+ |
256 |
+ // run tasks and wait for completion |
257 |
+- try { |
258 |
+- this.taskGroup.invoke( |
259 |
+- new FJTask() { |
260 |
+- public void run() { |
261 |
+- coInvoke(subTasks); |
262 |
+- } |
263 |
+- } |
264 |
+- ); |
265 |
+- } catch (InterruptedException exc) {} |
266 |
++ this.taskGroup.invoke( |
267 |
++ new ForkJoinTask() { |
268 |
++ public void run() { |
269 |
++ invokeAll(subTasks); |
270 |
++ } |
271 |
++ public boolean exec() { return true; } |
272 |
++ public void setRawResult(Object o) {} |
273 |
++ public Object getRawResult() {return null;} |
274 |
++ } |
275 |
++ ); |
276 |
+ } |
277 |
+ protected DoubleMatrix2D[] splitBlockedNN(DoubleMatrix2D A, int threshold, long flops) { |
278 |
+ /* |
279 |
+@@ -186,10 +185,4 @@ |
280 |
+ } |
281 |
+ return blocks; |
282 |
+ } |
283 |
+-/** |
284 |
+- * Prints various snapshot statistics to System.out; Simply delegates to {@link EDU.oswego.cs.dl.util.concurrent.FJTaskRunnerGroup#stats}. |
285 |
+- */ |
286 |
+-public void stats() { |
287 |
+- if (this.taskGroup!=null) this.taskGroup.stats(); |
288 |
+-} |
289 |
+ } |