summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Schubert <erich@debian.org>2017-09-29 17:04:36 +0200
committerAndrej Shadura <andrewsh@debian.org>2019-03-09 22:30:49 +0000
commitea6a27dbcbf68ee736591c99fc46e11d62ac1cec (patch)
treee4ba6e8879a20ab49ca5610a3e514efcce85bd4b
parent895b8e31c6cef474f8ff3259e24adf88ede97fc4 (diff)
Import Debian changes 0.7.1-4
elki (0.7.1-4) unstable; urgency=medium * Refresh Maven build dependencies. Closes: #867084. * Work around a dependency bug in the current Debian batik packages. * Cherry-pick a clipping and a performance fix for latest Batik.
-rw-r--r--debian/changelog8
-rw-r--r--debian/control19
-rw-r--r--debian/patches/batik-performance.patch224
-rw-r--r--debian/patches/better-classpath.patch24
-rw-r--r--debian/patches/build.patch95
-rw-r--r--debian/patches/clipping-batik18.patch167
-rw-r--r--debian/patches/series3
-rw-r--r--debian/patches/update-maven.patch102
8 files changed, 525 insertions, 117 deletions
diff --git a/debian/changelog b/debian/changelog
index c6e3ef9e..c36b72b2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+elki (0.7.1-4) unstable; urgency=medium
+
+ * Refresh Maven build dependencies. Closes: #867084.
+ * Work around a dependency bug in the current Debian batik packages.
+ * Cherry-pick a clipping and a performance fix for latest Batik.
+
+ -- Erich Schubert <erich@debian.org> Fri, 29 Sep 2017 17:04:36 +0200
+
elki (0.7.1-3) unstable; urgency=medium
* Temporarily disable test suite. Some tests seem to be time-dependent
diff --git a/debian/control b/debian/control
index 1503c626..9eee9ebd 100644
--- a/debian/control
+++ b/debian/control
@@ -3,15 +3,18 @@ Section: science
Priority: extra
Maintainer: Erich Schubert <erich@debian.org>
Build-Depends: debhelper (>= 9), default-jdk (>= 2:1.7) | java7-sdk, maven-debian-helper (>= 1.5),
+ maven (>= 3),
libbatik-java (>= 1.8), libxmlgraphics-commons-java,
- libsvm3-java, libtrove3-java, maven (>= 3),
- libmaven-antrun-plugin-java (>= 1.7), libmaven-antrun-plugin-java (<< 1.8),
- libmaven-compiler-plugin-java (>= 3.2), libmaven-compiler-plugin-java (<< 3.3),
- libmaven-exec-plugin-java (>= 1.1.1), libmaven-exec-plugin-java (<< 1.2),
- libmaven-javadoc-plugin-java (>= 2.10.3), libmaven-javadoc-plugin-java (<< 2.11),
- libmaven-resources-plugin-java (>= 2.6), libmaven-resources-plugin-java (<< 2.7),
- libmaven-source-plugin-java (>= 2.4), libmaven-source-plugin-java (<< 2.5),
- libsurefire-java (>= 2.17), libsurefire-java (<< 2.18), junit4,
+ libsvm3-java,
+ libtrove3-java,
+ libmaven-antrun-plugin-java,
+ libmaven-compiler-plugin-java,
+ libmaven-exec-plugin-java,
+ libmaven-javadoc-plugin-java,
+ libmaven-resources-plugin-java,
+ libmaven-source-plugin-java,
+ libsurefire-java,
+ junit4,
default-jdk-doc
Standards-Version: 3.9.6
Homepage: http://elki.dbs.ifi.lmu.de/
diff --git a/debian/patches/batik-performance.patch b/debian/patches/batik-performance.patch
new file mode 100644
index 00000000..6a329bab
--- /dev/null
+++ b/debian/patches/batik-performance.patch
@@ -0,0 +1,224 @@
+commit e02ba7683a45ffd3eb210d0d31a81c40f254e877
+Author: Erich Schubert <schubert@informatik.uni-heidelberg.de>
+Date: Wed Mar 29 15:26:04 2017 +0200
+
+ Improve Batik performance by avoding `<symbol>` and `<use>`.
+
+ Batik will materialize the copies otherwise and add too many listeners.
+ So it is substantially faster to not use `<use>`
+
+--- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/PrettyMarkers.java
++++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/PrettyMarkers.java
+@@ -23,11 +23,11 @@
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+-import org.apache.batik.util.CSSConstants;
+ import org.apache.batik.util.SVGConstants;
+ import org.w3c.dom.Element;
+
+ import de.lmu.ifi.dbs.elki.visualization.colors.ColorLibrary;
++import de.lmu.ifi.dbs.elki.visualization.css.CSSClass;
+ import de.lmu.ifi.dbs.elki.visualization.style.StyleLibrary;
+ import de.lmu.ifi.dbs.elki.visualization.svg.SVGPlot;
+ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil;
+@@ -35,6 +35,8 @@
+ /**
+ * Marker library achieving a larger number of styles by combining different
+ * shapes with different colors. Uses object ID management by SVGPlot.
++ *
++ * TODO: Add more styles
+ *
+ * @author Erich Schubert
+ * @since 0.4.0
+@@ -104,79 +106,134 @@
+ */
+ public void plotMarker(SVGPlot plot, Element parent, double x, double y, int style, double size) {
+ assert (parent != null);
+- if (style == -1) {
++ if(style == -1) {
+ plotUncolored(plot, parent, x, y, size);
+ return;
+ }
+- if (style == -2) {
++ if(style == -2) {
+ plotGray(plot, parent, x, y, size);
+ return;
+ }
+- // TODO: add more styles.
+- String colorstr = colors.getColor(style);
+- String strokestyle = SVGConstants.CSS_STROKE_PROPERTY + ":" + colorstr + ";" + SVGConstants.CSS_STROKE_WIDTH_PROPERTY + ":" + SVGUtil.fmt(size / 6);
++ // No dot allowed!
++ String cssid = prefix + style + "_" + (int) (100 * size);
+
+- switch(style % 8){
++ switch(style & 0x7){
+ case 0: {
+ // + cross
++ if(!plot.getCSSClassManager().contains(cssid)) {
++ CSSClass c = new CSSClass(this, cssid);
++ String colorstr = colors.getColor(style);
++ c.setStatement(SVGConstants.CSS_STROKE_PROPERTY, colorstr);
++ c.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, size / 6);
++ plot.addCSSClassOrLogError(c);
++ }
+ Element line1 = plot.svgLine(x, y - size / 2.2, x, y + size / 2.2);
+- SVGUtil.setStyle(line1, strokestyle);
++ SVGUtil.setCSSClass(line1, cssid);
+ parent.appendChild(line1);
+ Element line2 = plot.svgLine(x - size / 2.2, y, x + size / 2.2, y);
+- SVGUtil.setStyle(line2, strokestyle);
++ SVGUtil.setCSSClass(line2, cssid);
+ parent.appendChild(line2);
+ break;
+ }
+ case 1: {
+ // X cross
++ if(!plot.getCSSClassManager().contains(cssid)) {
++ CSSClass c = new CSSClass(this, cssid);
++ String colorstr = colors.getColor(style);
++ c.setStatement(SVGConstants.CSS_STROKE_PROPERTY, colorstr);
++ c.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, size / 6);
++ plot.addCSSClassOrLogError(c);
++ }
+ Element line1 = plot.svgLine(x - size / 2.828427, y - size / 2.828427, x + size / 2.828427, y + size / 2.828427);
+- SVGUtil.setStyle(line1, strokestyle);
++ SVGUtil.setCSSClass(line1, cssid);
+ parent.appendChild(line1);
+ Element line2 = plot.svgLine(x - size / 2.828427, y + size / 2.828427, x + size / 2.828427, y - size / 2.828427);
+- SVGUtil.setStyle(line2, strokestyle);
++ SVGUtil.setCSSClass(line2, cssid);
+ parent.appendChild(line2);
+ break;
+ }
+ case 2: {
+ // O hollow circle
++ if(!plot.getCSSClassManager().contains(cssid)) {
++ CSSClass c = new CSSClass(this, cssid);
++ String colorstr = colors.getColor(style);
++ c.setStatement(SVGConstants.CSS_STROKE_PROPERTY, colorstr);
++ c.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, size / 6);
++ c.setStatement(SVGConstants.CSS_FILL_PROPERTY, SVGConstants.CSS_NONE_VALUE);
++ plot.addCSSClassOrLogError(c);
++ }
+ Element circ = plot.svgCircle(x, y, size / 2.2);
+- SVGUtil.setStyle(circ, "fill: none;" + strokestyle);
++ SVGUtil.setCSSClass(circ, cssid);
+ parent.appendChild(circ);
+ break;
+ }
+ case 3: {
+ // [] hollow rectangle
++ if(!plot.getCSSClassManager().contains(cssid)) {
++ CSSClass c = new CSSClass(this, cssid);
++ String colorstr = colors.getColor(style);
++ c.setStatement(SVGConstants.CSS_STROKE_PROPERTY, colorstr);
++ c.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, size / 6);
++ c.setStatement(SVGConstants.CSS_FILL_PROPERTY, SVGConstants.CSS_NONE_VALUE);
++ plot.addCSSClassOrLogError(c);
++ }
+ Element rect = plot.svgRect(x - size / 2.4, y - size / 2.4, size / 1.2, size / 1.2);
+- SVGUtil.setStyle(rect, "fill: none;" + strokestyle);
++ SVGUtil.setCSSClass(rect, cssid);
+ parent.appendChild(rect);
+ break;
+ }
+ case 4: {
+ // <> hollow diamond
++ if(!plot.getCSSClassManager().contains(cssid)) {
++ CSSClass c = new CSSClass(this, cssid);
++ String colorstr = colors.getColor(style);
++ c.setStatement(SVGConstants.CSS_STROKE_PROPERTY, colorstr);
++ c.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, size / 6);
++ c.setStatement(SVGConstants.CSS_FILL_PROPERTY, SVGConstants.CSS_NONE_VALUE);
++ plot.addCSSClassOrLogError(c);
++ }
+ Element rect = plot.svgRect(x - size / 2.7, y - size / 2.7, size / 1.35, size / 1.35);
+- SVGUtil.setStyle(rect, "fill: none;" + strokestyle);
++ SVGUtil.setCSSClass(rect, cssid);
+ SVGUtil.setAtt(rect, SVGConstants.SVG_TRANSFORM_ATTRIBUTE, "rotate(45," + SVGUtil.fmt(x) + "," + SVGUtil.fmt(y) + ")");
+ parent.appendChild(rect);
+ break;
+ }
+ case 5: {
+ // O filled circle
++ if(!plot.getCSSClassManager().contains(cssid)) {
++ CSSClass c = new CSSClass(this, cssid);
++ String colorstr = colors.getColor(style);
++ c.setStatement(SVGConstants.CSS_FILL_PROPERTY, colorstr);
++ plot.addCSSClassOrLogError(c);
++ }
+ Element circ = plot.svgCircle(x, y, size * .5);
+- SVGUtil.setStyle(circ, SVGConstants.CSS_FILL_PROPERTY + ":" + colorstr);
++ SVGUtil.setCSSClass(circ, cssid);
+ parent.appendChild(circ);
+ break;
+ }
+ case 6: {
+ // [] filled rectangle
++ if(!plot.getCSSClassManager().contains(cssid)) {
++ CSSClass c = new CSSClass(this, cssid);
++ String colorstr = colors.getColor(style);
++ c.setStatement(SVGConstants.CSS_FILL_PROPERTY, colorstr);
++ plot.addCSSClassOrLogError(c);
++ }
+ Element rect = plot.svgRect(x - size / 2.2, y - size / 2.2, size / 1.1, size / 1.1);
+- SVGUtil.setStyle(rect, "fill:" + colorstr);
++ SVGUtil.setCSSClass(rect, cssid);
+ parent.appendChild(rect);
+ break;
+ }
+ case 7: {
+ // <> filled diamond
++ if(!plot.getCSSClassManager().contains(cssid)) {
++ CSSClass c = new CSSClass(this, cssid);
++ String colorstr = colors.getColor(style);
++ c.setStatement(SVGConstants.CSS_FILL_PROPERTY, colorstr);
++ plot.addCSSClassOrLogError(c);
++ }
+ Element rect = plot.svgRect(x - size / 2.5, y - size / 2.5, size / 1.25, size / 1.25);
+- SVGUtil.setStyle(rect, "fill:" + colorstr);
++ SVGUtil.setCSSClass(rect, cssid);
+ SVGUtil.setAtt(rect, SVGConstants.SVG_TRANSFORM_ATTRIBUTE, "rotate(45," + SVGUtil.fmt(x) + "," + SVGUtil.fmt(y) + ")");
+ parent.appendChild(rect);
+ break;
+@@ -185,7 +242,8 @@
+ }
+
+ /**
+- * Plot a replacement marker when an object is to be plotted as "disabled", usually gray.
++ * Plot a replacement marker when an object is to be plotted as "disabled",
++ * usually gray.
+ *
+ * @param plot Plot to draw to
+ * @param parent Parent element
+@@ -216,23 +274,13 @@
+
+ @Override
+ public Element useMarker(SVGPlot plot, Element parent, double x, double y, int style, double size) {
+- String id = prefix + style + "_" + size;
+- Element existing = plot.getIdElement(id);
+- if(existing == null) {
+- Element symbol = plot.svgElement(SVGConstants.SVG_SYMBOL_TAG);
+- SVGUtil.setAtt(symbol, SVGConstants.SVG_ID_ATTRIBUTE, id);
+- SVGUtil.setAtt(symbol, CSSConstants.CSS_OVERFLOW_PROPERTY, CSSConstants.CSS_VISIBLE_VALUE);
+- plotMarker(plot, symbol, 0, 0, style, size);
+- plot.getDefs().appendChild(symbol);
+- plot.putIdElement(id, symbol);
+- }
+- Element use = plot.svgElement(SVGConstants.SVG_USE_TAG);
+- use.setAttributeNS(SVGConstants.XLINK_NAMESPACE_URI, SVGConstants.XLINK_HREF_QNAME, "#" + id);
+- SVGUtil.setAtt(use, SVGConstants.SVG_X_ATTRIBUTE, x);
+- SVGUtil.setAtt(use, SVGConstants.SVG_Y_ATTRIBUTE, y);
++ // Note: we used to use <symbol> and <use>, but Batik performance was much
++ // worse.
++ Element use = plot.svgElement(SVGConstants.SVG_G_TAG);
++ plotMarker(plot, use, x, y, style, size);
+ if(parent != null) {
+ parent.appendChild(use);
+ }
+ return use;
+ }
+-}
+\ No newline at end of file
++}
diff --git a/debian/patches/better-classpath.patch b/debian/patches/better-classpath.patch
index 0337700f..d1a2c1cd 100644
--- a/debian/patches/better-classpath.patch
+++ b/debian/patches/better-classpath.patch
@@ -1,7 +1,5 @@
-Index: elki-0.7.1/addons/batikvis/pom.xml
-===================================================================
---- elki-0.7.1.orig/addons/batikvis/pom.xml
-+++ elki-0.7.1/addons/batikvis/pom.xml
+--- a/addons/batikvis/pom.xml
++++ b/addons/batikvis/pom.xml
@@ -37,8 +37,10 @@
<manifest>
<addClasspath>true</addClasspath>
@@ -14,10 +12,8 @@ Index: elki-0.7.1/addons/batikvis/pom.xml
</archive>
</configuration>
</plugin>
-Index: elki-0.7.1/addons/tutorial/pom.xml
-===================================================================
---- elki-0.7.1.orig/addons/tutorial/pom.xml
-+++ elki-0.7.1/addons/tutorial/pom.xml
+--- a/addons/tutorial/pom.xml
++++ b/addons/tutorial/pom.xml
@@ -37,7 +37,7 @@
<manifest>
<addClasspath>true</addClasspath>
@@ -27,10 +23,8 @@ Index: elki-0.7.1/addons/tutorial/pom.xml
</manifest>
</archive>
</configuration>
-Index: elki-0.7.1/elki/pom.xml
-===================================================================
---- elki-0.7.1.orig/elki/pom.xml
-+++ elki-0.7.1/elki/pom.xml
+--- a/elki/pom.xml
++++ b/elki/pom.xml
@@ -59,8 +59,10 @@
<manifest>
<addClasspath>true</addClasspath>
@@ -43,10 +37,8 @@ Index: elki-0.7.1/elki/pom.xml
</archive>
</configuration>
</plugin>
-Index: elki-0.7.1/addons/libsvm/pom.xml
-===================================================================
---- elki-0.7.1.orig/addons/libsvm/pom.xml
-+++ elki-0.7.1/addons/libsvm/pom.xml
+--- a/addons/libsvm/pom.xml
++++ b/addons/libsvm/pom.xml
@@ -27,6 +27,32 @@
<elki.projdir>${basedir}/../..</elki.projdir>
</properties>
diff --git a/debian/patches/build.patch b/debian/patches/build.patch
index ef527fe9..c1efeee4 100644
--- a/debian/patches/build.patch
+++ b/debian/patches/build.patch
@@ -1,96 +1,5 @@
-Index: elki-0.7.1/pom.xml
-===================================================================
---- elki-0.7.1.orig/pom.xml
-+++ elki-0.7.1/pom.xml
-@@ -304,20 +304,25 @@
- </activation>
- </profile>
- <!-- Image search -->
-+<!--
- <profile>
- <id>imagesearch</id>
- <modules>
- <module>addons/imagesearch</module>
- </modules>
- </profile>
-+-->
- <!-- Luence backend for text mining -->
-+<!--
- <profile>
- <id>lucene</id>
- <modules>
- <module>addons/lucene</module>
- </modules>
- </profile>
-+-->
- <!-- OpenGL based visualization -->
-+<!--
- <profile>
- <id>jogl</id>
- <modules>
-@@ -326,6 +331,7 @@
- <module>addons/joglviz</module>
- </modules>
- </profile>
-+-->
- <!-- Profile for publishing to Sonatype Maven repository. -->
- <profile>
- <id>publish</id>
-@@ -411,43 +417,43 @@
- <dependency>
- <groupId>net.sf.trove4j</groupId>
- <artifactId>trove4j</artifactId>
-- <version>[3.0.3,)</version>
-+ <version>3.0.3</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.xmlgraphics</groupId>
- <artifactId>batik-swing</artifactId>
-- <version>[1.7,1.9)</version>
-+ <version>1.9</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.xmlgraphics</groupId>
- <artifactId>batik-rasterizer</artifactId>
-- <version>[1.7,1.9)</version>
-+ <version>1.9</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.xmlgraphics</groupId>
- <artifactId>batik-ext</artifactId>
-- <version>[1.7,1.9)</version>
-+ <version>1.9</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.xmlgraphics</groupId>
- <artifactId>batik-codec</artifactId>
-- <version>[1.7,1.9)</version>
-+ <version>1.9</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.xmlgraphics</groupId>
- <artifactId>xmlgraphics-commons</artifactId>
-- <version>[2,3)</version>
-+ <version>2.0.1</version>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
-- <version>[4.8,)</version>
-+ <version>4.12</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-Index: elki-0.7.1/addons/libsvm/pom.xml
-===================================================================
---- elki-0.7.1.orig/addons/libsvm/pom.xml
-+++ elki-0.7.1/addons/libsvm/pom.xml
+--- a/addons/libsvm/pom.xml
++++ b/addons/libsvm/pom.xml
@@ -37,6 +37,8 @@
<groupId>tw.edu.ntu.csie</groupId>
<artifactId>libsvm</artifactId>
diff --git a/debian/patches/clipping-batik18.patch b/debian/patches/clipping-batik18.patch
new file mode 100644
index 00000000..aa6a7c8a
--- /dev/null
+++ b/debian/patches/clipping-batik18.patch
@@ -0,0 +1,167 @@
+commit 179245505b04b73c8ad0473a41463314c21e6943
+Author: Erich Schubert <schubert@informatik.uni-heidelberg.de>
+Date: Wed Mar 29 10:47:41 2017 +0200
+
+ Add overflow:visible to marker symbols, adjust sizing.
+
+--- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/PrettyMarkers.java
++++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/PrettyMarkers.java
+@@ -23,6 +23,7 @@
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
++import org.apache.batik.util.CSSConstants;
+ import org.apache.batik.util.SVGConstants;
+ import org.w3c.dom.Element;
+
+@@ -220,14 +221,15 @@
+ if(existing == null) {
+ Element symbol = plot.svgElement(SVGConstants.SVG_SYMBOL_TAG);
+ SVGUtil.setAtt(symbol, SVGConstants.SVG_ID_ATTRIBUTE, id);
+- plotMarker(plot, symbol, 2 * size, 2 * size, style, 2 * size);
++ SVGUtil.setAtt(symbol, CSSConstants.CSS_OVERFLOW_PROPERTY, CSSConstants.CSS_VISIBLE_VALUE);
++ plotMarker(plot, symbol, 0, 0, style, size);
+ plot.getDefs().appendChild(symbol);
+ plot.putIdElement(id, symbol);
+ }
+ Element use = plot.svgElement(SVGConstants.SVG_USE_TAG);
+ use.setAttributeNS(SVGConstants.XLINK_NAMESPACE_URI, SVGConstants.XLINK_HREF_QNAME, "#" + id);
+- SVGUtil.setAtt(use, SVGConstants.SVG_X_ATTRIBUTE, x - 2 * size);
+- SVGUtil.setAtt(use, SVGConstants.SVG_Y_ATTRIBUTE, y - 2 * size);
++ SVGUtil.setAtt(use, SVGConstants.SVG_X_ATTRIBUTE, x);
++ SVGUtil.setAtt(use, SVGConstants.SVG_Y_ATTRIBUTE, y);
+ if(parent != null) {
+ parent.appendChild(use);
+ }
+--- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/KeyVisualization.java
++++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/KeyVisualization.java
+@@ -234,7 +234,7 @@
+ for(Cluster<Model> c : allcs) {
+ final int col = i / rows;
+ final int row = i % rows;
+- ml.useMarker(svgp, layer, 0.3 + maxwidth * col, row + 1.5, i, 0.3);
++ ml.useMarker(svgp, layer, 0.3 + maxwidth * col, row + 1.5, i, 0.5);
+ Element label = svgp.svgText(0.7 + maxwidth * col, row + 1.7, c.getNameAutomatic());
+ SVGUtil.setCSSClass(label, KEY_ENTRY);
+ layer.appendChild(label);
+--- a/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/classic.properties
++++ b/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/classic.properties
+@@ -55,11 +55,11 @@
+ ## Bubble sizes (relative)
+ plot.bubble.size=0.10
+ ## Marker size (relative)
+-plot.marker.size=0.005
++plot.marker.size=0.01
+ ## Greyed out color
+ plot.grey=grey
+ ## Dot size
+-plot.dot.size=0.002
++plot.dot.size=0.01
+ ## Reference points
+ plot.referencepoints.size=0.003
+ plot.referencepoints.color=red
+--- a/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/default.properties
++++ b/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/default.properties
+@@ -51,11 +51,11 @@
+ ## Bubble sizes (relative)
+ plot.bubble.size=0.10
+ ## Marker size (relative)
+-plot.marker.size=0.005
++plot.marker.size=0.01
+ ## Greyed out color
+ plot.grey=grey
+ ## Dot size
+-plot.dot.size=0.002
++plot.dot.size=0.01
+ ## Reference points
+ plot.referencepoints.size=0.003
+ plot.referencepoints.color=red
+--- a/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/greyscale.properties
++++ b/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/greyscale.properties
+@@ -55,11 +55,11 @@
+ ## Bubble sizes (relative)
+ plot.bubble.size=0.10
+ ## Marker size (relative)
+-plot.marker.size=0.005
++plot.marker.size=0.01
+ ## Greyed out color
+ plot.grey=lightgrey
+ ## Dot size
+-plot.dot.size=0.002
++plot.dot.size=0.01
+ ## Reference points
+ plot.referencepoints.size=0.003
+ plot.referencepoints.color=black
+--- a/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/kelly.properties
++++ b/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/kelly.properties
+@@ -53,11 +53,11 @@
+ ## Bubble sizes (relative)
+ plot.bubble.size=0.10
+ ## Marker size (relative)
+-plot.marker.size=0.005
++plot.marker.size=0.01
+ ## Greyed out color
+ plot.grey=grey
+ ## Dot size
+-plot.dot.size=0.002
++plot.dot.size=0.01
+ ## Reference points
+ plot.referencepoints.size=0.003
+ plot.referencepoints.color=red
+--- a/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/neon.properties
++++ b/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/neon.properties
+@@ -55,11 +55,11 @@
+ ## Bubble sizes (relative)
+ plot.bubble.size=0.10
+ ## Marker size (relative)
+-plot.marker.size=0.005
++plot.marker.size=0.01
+ ## Greyed out color
+ plot.grey=darkgrey
+ ## Dot size
+-plot.dot.size=0.002
++plot.dot.size=0.01
+ ## Reference points
+ plot.referencepoints.size=0.003
+ plot.referencepoints.color=red
+--- a/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/presentation.properties
++++ b/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/presentation.properties
+@@ -55,11 +55,11 @@
+ ## Bubble sizes (relative)
+ plot.bubble.size=0.10
+ ## Marker size (relative)
+-plot.marker.size=0.01
++plot.marker.size=0.02
+ ## Greyed out color
+ plot.grey=grey
+ ## Dot size
+-plot.dot.size=0.004
++plot.dot.size=0.02
+ ## Reference points
+ plot.referencepoints.size=0.006
+ plot.referencepoints.color=red
+--- a/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/print.properties
++++ b/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/print.properties
+@@ -59,7 +59,7 @@
+ ## Greyed out color
+ plot.grey=grey
+ ## Dot size
+-plot.dot.size=0.004
++plot.dot.size=0.01
+ ## Reference points
+ plot.referencepoints.size=0.006
+ plot.referencepoints.color=red
+--- a/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/wikipedia.properties
++++ b/addons/batikvis/src/main/resources/de/lmu/ifi/dbs/elki/visualization/style/wikipedia.properties
+@@ -55,9 +55,9 @@
+ ## Bubble sizes (relative)
+ plot.bubble.size=0.10
+ ## Marker size (relative)
+-plot.marker.size=0.01
++plot.marker.size=0.02
+ ## Dot size
+-plot.dot.size=0.005
++plot.dot.size=0.02
+ ## Reference points
+ plot.referencepoints.size=0.003
+ plot.referencepoints.color=red
diff --git a/debian/patches/series b/debian/patches/series
index 8af3738a..e4b895bd 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,6 @@
build.patch
better-classpath.patch
single-core-bugfix.patch
+update-maven.patch
+clipping-batik18.patch
+batik-performance.patch
diff --git a/debian/patches/update-maven.patch b/debian/patches/update-maven.patch
new file mode 100644
index 00000000..026ffb09
--- /dev/null
+++ b/debian/patches/update-maven.patch
@@ -0,0 +1,102 @@
+--- a/pom.xml
++++ b/pom.xml
+@@ -242,7 +242,7 @@
+ <!-- used for making a directory in batik visualization addon -->
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+- <version>1.7</version>
++ <!-- version>1.8</version> -->
+ </plugin>
+ <!-- Source code packaging -->
+ <plugin>
+@@ -304,20 +304,25 @@
+ </activation>
+ </profile>
+ <!-- Image search -->
++<!--
+ <profile>
+ <id>imagesearch</id>
+ <modules>
+ <module>addons/imagesearch</module>
+ </modules>
+ </profile>
++-->
+ <!-- Luence backend for text mining -->
++<!--
+ <profile>
+ <id>lucene</id>
+ <modules>
+ <module>addons/lucene</module>
+ </modules>
+ </profile>
++-->
+ <!-- OpenGL based visualization -->
++<!--
+ <profile>
+ <id>jogl</id>
+ <modules>
+@@ -326,6 +331,7 @@
+ <module>addons/joglviz</module>
+ </modules>
+ </profile>
++-->
+ <!-- Profile for publishing to Sonatype Maven repository. -->
+ <profile>
+ <id>publish</id>
+@@ -411,43 +417,49 @@
+ <dependency>
+ <groupId>net.sf.trove4j</groupId>
+ <artifactId>trove4j</artifactId>
+- <version>[3.0.3,)</version>
++ <version>3.0.3</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.xmlgraphics</groupId>
+ <artifactId>batik-swing</artifactId>
+- <version>[1.7,1.9)</version>
++ <version>1.9</version>
++ <exclusions>
++ <exclusion><groupId>org.python</groupId><artifactId>jython</artifactId></exclusion>
++ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.xmlgraphics</groupId>
+ <artifactId>batik-rasterizer</artifactId>
+- <version>[1.7,1.9)</version>
++ <version>1.9</version>
++ <exclusions>
++ <exclusion><groupId>org.apache.xmlgraphics</groupId><artifactId>batik-svgrasterizer</artifactId></exclusion>
++ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.xmlgraphics</groupId>
+ <artifactId>batik-ext</artifactId>
+- <version>[1.7,1.9)</version>
++ <version>1.9</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.xmlgraphics</groupId>
+ <artifactId>batik-codec</artifactId>
+- <version>[1.7,1.9)</version>
++ <version>1.9</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.xmlgraphics</groupId>
+ <artifactId>xmlgraphics-commons</artifactId>
+- <version>[2,3)</version>
++ <version>2.0.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+- <version>[4.8,)</version>
++ <version>4.12</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>