Gentoo Archives: gentoo-commits

From: Patrice Clement <monsieurp@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-java/colt/files/, dev-java/colt/
Date: Wed, 07 Oct 2015 23:19:18
Message-Id: 1444259383.02b0fcbb539a7d9518e3095ee8aea1ceed105eb7.monsieurp@gentoo
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 + }