diff options
author | Erich Schubert <erich@debian.org> | 2016-01-07 17:10:34 +0100 |
---|---|---|
committer | Andrej Shadura <andrewsh@debian.org> | 2019-03-09 22:30:45 +0000 |
commit | bfe7f5ccc31ffa1f1df74a724d1b04fc8742e1a3 (patch) | |
tree | f30c549e6782254c29ed6f7bc73a56364cff6a53 | |
parent | ef936dd6df45eca7d14f2345dce39257b79e5ee6 (diff) |
Import Debian changes 0.7.0-5
elki (0.7.0-5) unstable; urgency=low
* Cherry-pick important bug fixes from upstream.
* Cherry-pick upstream patch for repeatable documentation generation.
* Remove executable bit from .java files.
-rw-r--r-- | debian/changelog | 8 | ||||
-rw-r--r-- | debian/patches/powi-bugfix.patch | 125 | ||||
-rw-r--r-- | debian/patches/randomsample-bugfix.patch | 539 | ||||
-rw-r--r-- | debian/patches/repeatable-documentation.patch | 79 | ||||
-rw-r--r-- | debian/patches/series | 3 | ||||
-rwxr-xr-x | debian/rules | 5 |
6 files changed, 759 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog index b9334d33..594a6a2e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +elki (0.7.0-5) unstable; urgency=low + + * Cherry-pick important bug fixes from upstream. + * Cherry-pick upstream patch for repeatable documentation generation. + * Remove executable bit from .java files. + + -- Erich Schubert <erich@debian.org> Thu, 07 Jan 2016 17:10:34 +0100 + elki (0.7.0-4) unstable; urgency=low * Always prefer OpenJDK-7 for reproducible builds. diff --git a/debian/patches/powi-bugfix.patch b/debian/patches/powi-bugfix.patch new file mode 100644 index 00000000..766a62d5 --- /dev/null +++ b/debian/patches/powi-bugfix.patch @@ -0,0 +1,125 @@ +commit f558614879bb9def534bd2e041dc2de0fb4d1a88 +Author: Erich Schubert <schube@dbs.ifi.lmu.de> +Date: Tue Dec 1 11:16:36 2015 +0100 + + Bug fix: MathUtil.powi was also broken. Ouch. + +diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/MathUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/MathUtil.java +index deb3ed2..f112a96 100644 +--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/MathUtil.java ++++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/MathUtil.java +@@ -1046,16 +1046,15 @@ public final class MathUtil { + return Math.pow(x, p); + } + double tmp = x, ret = (p & 1) == 1 ? x : 1.; +- p >>= 1; + while(true) { ++ tmp *= tmp; ++ p >>= 1; + if(p == 1) { + return ret * tmp; + } + if((p & 1) != 0) { + ret *= tmp; + } +- tmp *= tmp; +- p >>= 1; + } + } + +diff --git a/elki/src/test/java/de/lmu/ifi/dbs/elki/math/TestMathUtil.java b/elki/src/test/java/de/lmu/ifi/dbs/elki/math/TestMathUtil.java +index 9f180ef..e085537 100644 +--- a/elki/src/test/java/de/lmu/ifi/dbs/elki/math/TestMathUtil.java ++++ b/elki/src/test/java/de/lmu/ifi/dbs/elki/math/TestMathUtil.java +@@ -34,7 +34,7 @@ import de.lmu.ifi.dbs.elki.JUnit4Test; + + /** + * Unit test for some basic math functions. +- * ++ * + * @author Erich Schubert + */ + public class TestMathUtil implements JUnit4Test { +@@ -48,7 +48,7 @@ public class TestMathUtil implements JUnit4Test { + double[] weight2 = new double[size]; + + Random r = new Random(seed); +- for (int i = 0; i < size; i++) { ++ for(int i = 0; i < size; i++) { + data1[i] = r.nextDouble(); + data2[i] = r.nextDouble(); + weight1[i] = 1.0; +@@ -88,7 +88,7 @@ public class TestMathUtil implements JUnit4Test { + @Test + public void testFloatToDouble() { + Random r = new Random(1l); +- for (int i = 0; i < 10000; i++) { ++ for(int i = 0; i < 10000; i++) { + final double dbl = Double.longBitsToDouble(r.nextLong()); + final float flt = (float) dbl; + final double uppd = MathUtil.floatToDoubleUpper(flt); +@@ -101,4 +101,12 @@ public class TestMathUtil implements JUnit4Test { + assertTrue("Expected value to round to the same float.", flt == lowf || Double.isNaN(flt)); + } + } ++ ++ @Test ++ public void testPowi() { ++ assertEquals("Power incorrect", 0.01, MathUtil.powi(0.1, 2), 1e-13); ++ assertEquals("Power incorrect", 0.001, MathUtil.powi(0.1, 3), 1e-13); ++ assertEquals("Power incorrect", 0.0001, MathUtil.powi(0.1, 4), 1e-13); ++ assertEquals("Power incorrect", 0.00001, MathUtil.powi(0.1, 5), 1e-13); ++ } + } + +commit 783a75300c96354aba1ac4bd953a56f02cac6442 +Author: Erich Schubert <schube@dbs.ifi.lmu.de> +Date: Tue Dec 1 19:31:07 2015 +0100 + + Second part of the same powi bug fix. + +diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/MathUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/MathUtil.java +index f112a96..2e8256d 100644 +--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/MathUtil.java ++++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/MathUtil.java +@@ -1071,16 +1071,15 @@ public final class MathUtil { + return (int) Math.pow(x, p); + } + int tmp = x, ret = (p & 1) == 1 ? x : 1; +- p >>= 1; + while(true) { ++ tmp *= tmp; ++ p >>= 1; + if(p == 1) { + return ret * tmp; + } + if((p & 1) != 0) { + ret *= tmp; + } +- tmp *= tmp; +- p >>= 1; + } + } + + +commit 274aae95147c01d2903c167572358fa18b8f4a52 +Author: Erich Schubert <schube@dbs.ifi.lmu.de> +Date: Tue Dec 1 11:29:56 2015 +0100 + + Update unit test, which was affected by the powi bug. + +diff --git a/elki/src/test/java/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/TestVarianceOfVolume.java b/elki/src/test/java/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/TestVarianceOfVolume.java +index 266e9f3..e66679d 100644 +--- a/elki/src/test/java/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/TestVarianceOfVolume.java ++++ b/elki/src/test/java/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/TestVarianceOfVolume.java +@@ -54,7 +54,7 @@ public class TestVarianceOfVolume extends AbstractSimpleAlgorithmTest implements + // run LOF on database + OutlierResult result = lof.run(db); + +- testSingleScore(result, 1293, 848349.0186); +- testAUC(db, "Noise", result, 0.936448179271); ++ testSingleScore(result, 1293, 2.0733100852601836e13); ++ testAUC(db, "Noise", result, 0.9306946778); + } + } +\ No newline at end of file diff --git a/debian/patches/randomsample-bugfix.patch b/debian/patches/randomsample-bugfix.patch new file mode 100644 index 00000000..03bd2e32 --- /dev/null +++ b/debian/patches/randomsample-bugfix.patch @@ -0,0 +1,539 @@ +commit 465b2ec2c925cc3f49b59651f3b6c6bfabf2ac2c +Author: Erich Schubert <schube@dbs.ifi.lmu.de> +Date: Tue Dec 1 10:30:05 2015 +0100 + + BUG fix: randomSample did not work right (brown paper bag) + +diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java +index ae85fa1..fc054f2 100644 +--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java ++++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java +@@ -41,11 +41,11 @@ import de.lmu.ifi.dbs.elki.utilities.io.ByteBufferSerializer; + + /** + * DBID Utility functions. +- * ++ * + * @author Erich Schubert +- * ++ * + * @apiviz.landmark +- * ++ * + * @apiviz.has DBIDs + * @apiviz.has DBIDRef + * @apiviz.composedOf DBIDFactory +@@ -65,7 +65,7 @@ public final class DBIDUtil { + + /** + * Get the invalid special ID. +- * ++ * + * @return invalid ID value + */ + public static DBIDRef invalid() { +@@ -74,9 +74,9 @@ public final class DBIDUtil { + + /** + * Import and integer as DBID. +- * ++ * + * Note: this may not be possible for some factories! +- * ++ * + * @param id Integer ID to import + * @return DBID + */ +@@ -86,9 +86,9 @@ public final class DBIDUtil { + + /** + * Export a DBID as int. +- * ++ * + * Note: this may not be possible for some factories! +- * ++ * + * @param id DBID to export + * @return integer value + */ +@@ -98,7 +98,7 @@ public final class DBIDUtil { + + /** + * Compare two DBIDs. +- * ++ * + * @param id1 First ID + * @param id2 Second ID + * @return Comparison result +@@ -109,7 +109,7 @@ public final class DBIDUtil { + + /** + * Test two DBIDs for equality. +- * ++ * + * @param id1 First ID + * @param id2 Second ID + * @return Comparison result +@@ -120,7 +120,7 @@ public final class DBIDUtil { + + /** + * Dereference a DBID reference. +- * ++ * + * @param ref DBID reference + * @return DBID + */ +@@ -133,7 +133,7 @@ public final class DBIDUtil { + + /** + * Format a DBID as string. +- * ++ * + * @param id DBID + * @return String representation + */ +@@ -143,7 +143,7 @@ public final class DBIDUtil { + + /** + * Format a DBID as string. +- * ++ * + * @param ids DBIDs + * @return String representation + */ +@@ -163,7 +163,7 @@ public final class DBIDUtil { + + /** + * Get a serializer for DBIDs. +- * ++ * + * @return DBID serializer + */ + public static ByteBufferSerializer<DBID> getDBIDSerializer() { +@@ -172,7 +172,7 @@ public final class DBIDUtil { + + /** + * Get a serializer for DBIDs with static size. +- * ++ * + * @return DBID serializer + */ + public static ByteBufferSerializer<DBID> getDBIDSerializerStatic() { +@@ -181,7 +181,7 @@ public final class DBIDUtil { + + /** + * Generate a single DBID. +- * ++ * + * @return A single DBID + */ + public static DBID generateSingleDBID() { +@@ -190,7 +190,7 @@ public final class DBIDUtil { + + /** + * Return a single DBID for reuse. +- * ++ * + * @param id DBID to deallocate + */ + public static void deallocateSingleDBID(DBID id) { +@@ -199,7 +199,7 @@ public final class DBIDUtil { + + /** + * Generate a static DBID range. +- * ++ * + * @param size Requested size + * @return DBID range + */ +@@ -209,7 +209,7 @@ public final class DBIDUtil { + + /** + * Deallocate a static DBID range. +- * ++ * + * @param range Range to deallocate + */ + public static void deallocateDBIDRange(DBIDRange range) { +@@ -218,7 +218,7 @@ public final class DBIDUtil { + + /** + * Make a new DBID variable. +- * ++ * + * @param val Initial value. + * @return Variable + */ +@@ -228,7 +228,7 @@ public final class DBIDUtil { + + /** + * Make a new DBID variable. +- * ++ * + * @return Variable + */ + public static DBIDVar newVar() { +@@ -237,7 +237,7 @@ public final class DBIDUtil { + + /** + * Make a new (modifiable) array of DBIDs. +- * ++ * + * @return New array + */ + public static ArrayModifiableDBIDs newArray() { +@@ -246,7 +246,7 @@ public final class DBIDUtil { + + /** + * Make a new (modifiable) hash set of DBIDs. +- * ++ * + * @return New hash set + */ + public static HashSetModifiableDBIDs newHashSet() { +@@ -255,7 +255,7 @@ public final class DBIDUtil { + + /** + * Make a new (modifiable) array of DBIDs. +- * ++ * + * @param size Size hint + * @return New array + */ +@@ -265,7 +265,7 @@ public final class DBIDUtil { + + /** + * Make a new (modifiable) hash set of DBIDs. +- * ++ * + * @param size Size hint + * @return New hash set + */ +@@ -275,7 +275,7 @@ public final class DBIDUtil { + + /** + * Make a new (modifiable) array of DBIDs. +- * ++ * + * @param existing Existing DBIDs + * @return New array + */ +@@ -285,7 +285,7 @@ public final class DBIDUtil { + + /** + * Make a new (modifiable) hash set of DBIDs. +- * ++ * + * @param existing Existing DBIDs + * @return New hash set + */ +@@ -295,7 +295,7 @@ public final class DBIDUtil { + + /** + * Compute the set intersection of two sets. +- * ++ * + * @param first First set + * @param second Second set + * @return result. +@@ -316,7 +316,7 @@ public final class DBIDUtil { + + /** + * Compute the set intersection size of two sets. +- * ++ * + * @param first First set + * @param second Second set + * @return size +@@ -345,7 +345,7 @@ public final class DBIDUtil { + + /** + * Compute the set intersection size of two sets. +- * ++ * + * @param first First set + * @param second Second set + * @return size +@@ -362,7 +362,7 @@ public final class DBIDUtil { + + /** + * Compute the set symmetric intersection of two sets. +- * ++ * + * @param first First set + * @param second Second set + * @param firstonly OUTPUT: elements only in first. MUST BE EMPTY +@@ -393,7 +393,7 @@ public final class DBIDUtil { + + /** + * Returns the union of the two specified collection of IDs. +- * ++ * + * @param ids1 the first collection + * @param ids2 the second collection + * @return the union of ids1 and ids2 without duplicates +@@ -407,7 +407,7 @@ public final class DBIDUtil { + + /** + * Returns the difference of the two specified collection of IDs. +- * ++ * + * @param ids1 the first collection + * @param ids2 the second collection + * @return the difference of ids1 minus ids2 +@@ -420,7 +420,7 @@ public final class DBIDUtil { + + /** + * Wrap an existing DBIDs collection to be unmodifiable. +- * ++ * + * @param existing Existing collection + * @return Unmodifiable collection + */ +@@ -442,7 +442,7 @@ public final class DBIDUtil { + + /** + * Ensure that the given DBIDs are array-indexable. +- * ++ * + * @param ids IDs + * @return Array DBIDs. + */ +@@ -457,7 +457,7 @@ public final class DBIDUtil { + + /** + * Ensure that the given DBIDs support fast "contains" operations. +- * ++ * + * @param ids IDs + * @return Set DBIDs. + */ +@@ -472,7 +472,7 @@ public final class DBIDUtil { + + /** + * Ensure modifiable. +- * ++ * + * @param ids IDs + * @return Modifiable DBIDs. + */ +@@ -493,10 +493,10 @@ public final class DBIDUtil { + + /** + * Make a DBID pair. +- * ++ * + * @param id1 first ID + * @param id2 second ID +- * ++ * + * @return DBID pair + */ + public static DBIDPair newPair(DBIDRef id1, DBIDRef id2) { +@@ -505,7 +505,7 @@ public final class DBIDUtil { + + /** + * Make a DoubleDBIDPair. +- * ++ * + * @param val double value + * @param id ID + * @return new pair +@@ -516,9 +516,9 @@ public final class DBIDUtil { + + /** + * Create an appropriate heap for the distance type. +- * ++ * + * This will use a double heap if appropriate. +- * ++ * + * @param k K value + * @return New heap of size k, appropriate for this distance type. + */ +@@ -528,7 +528,7 @@ public final class DBIDUtil { + + /** + * Build a new heap from a given list. +- * ++ * + * @param exist Existing result + * @return New heap + */ +@@ -538,7 +538,7 @@ public final class DBIDUtil { + + /** + * Produce a random shuffling of the given DBID array. +- * ++ * + * @param ids Original DBIDs + * @param rnd Random generator + */ +@@ -548,7 +548,7 @@ public final class DBIDUtil { + + /** + * Produce a random shuffling of the given DBID array. +- * ++ * + * @param ids Original DBIDs + * @param random Random generator + */ +@@ -558,22 +558,24 @@ public final class DBIDUtil { + + /** + * Produce a random shuffling of the given DBID array. +- * +- * Only the first {@code limit} elements will be randomized. +- * ++ * ++ * Only the first {@code limit} elements will be fully randomized, but the ++ * remaining objects will also be changed. ++ * + * @param ids Original DBIDs + * @param random Random generator + * @param limit Shuffling limit. + */ + public static void randomShuffle(ArrayModifiableDBIDs ids, Random random, final int limit) { ++ final int end = ids.size(); + for(int i = 1; i < limit; i++) { +- ids.swap(i - 1, i + random.nextInt(limit - i)); ++ ids.swap(i - 1, i + random.nextInt(end - i)); + } + } + + /** + * Produce a random sample of the given DBIDs. +- * ++ * + * @param source Original DBIDs + * @param k k Parameter + * @param seed Random generator seed +@@ -585,7 +587,7 @@ public final class DBIDUtil { + + /** + * Produce a random sample of the given DBIDs. +- * ++ * + * @param source Original DBIDs + * @param k k Parameter + * @param seed Random generator seed +@@ -602,7 +604,7 @@ public final class DBIDUtil { + + /** + * Produce a random sample of the given DBIDs. +- * ++ * + * @param source Original DBIDs + * @param k k Parameter + * @param rnd Random generator +@@ -614,7 +616,7 @@ public final class DBIDUtil { + + /** + * Produce a random sample of the given DBIDs. +- * ++ * + * @param source Original DBIDs + * @param k k Parameter + * @param random Random generator +@@ -645,7 +647,7 @@ public final class DBIDUtil { + ArrayModifiableDBIDs sample = DBIDUtil.newArray(source); + randomShuffle(sample, random, k); + // Delete trailing elements +- for(int i = sample.size() - 1; i > k; i--) { ++ for(int i = sample.size() - 1; i >= k; i--) { + sample.remove(i); + } + return sample; +@@ -654,7 +656,7 @@ public final class DBIDUtil { + + /** + * Produce a random sample of the given DBIDs. +- * ++ * + * @param ids Original ids + * @param rate Sampling rate + * @param random Random generator +@@ -666,7 +668,7 @@ public final class DBIDUtil { + + /** + * Produce a random sample of the given DBIDs. +- * ++ * + * @param ids Original ids + * @param rate Sampling rate + * @param random Random generator +@@ -711,7 +713,7 @@ public final class DBIDUtil { + + /** + * Randomly split IDs into {@code p} partitions of almost-equal size. +- * ++ * + * @param ids Original DBIDs + * @param p Desired number of partitions. + * @param rnd Random generator +@@ -722,7 +724,7 @@ public final class DBIDUtil { + + /** + * Randomly split IDs into {@code p} partitions of almost-equal size. +- * ++ * + * @param oids Original DBIDs + * @param p Desired number of partitions. + * @param random Random generator +@@ -752,7 +754,7 @@ public final class DBIDUtil { + + /** + * Get a subset of the KNN result. +- * ++ * + * @param list Existing list + * @param k k + * @return Subset +@@ -769,7 +771,7 @@ public final class DBIDUtil { + + /** + * Create a modifiable list to store distance-DBID pairs. +- * ++ * + * @param size Estimated upper list size + * @return Empty list + */ +@@ -779,7 +781,7 @@ public final class DBIDUtil { + + /** + * Create a modifiable list to store distance-DBID pairs. +- * ++ * + * @return Empty list + */ + public static ModifiableDoubleDBIDList newDistanceDBIDList() { +@@ -788,7 +790,7 @@ public final class DBIDUtil { + + /** + * Assert that the presented ids constitute a continuous {@link DBIDRange}. +- * ++ * + * @param ids ID range. + * @return DBID range. + * @throws AbortException +commit ebe72d8c1be19f9788fb90d51d5083169ce1b4de +Author: Erich Schubert <schube@dbs.ifi.lmu.de> +Date: Wed Dec 2 15:15:21 2015 +0100 + + Scores improved again, probably due to the latest fixes. + +diff --git a/elki/src/test/java/de/lmu/ifi/dbs/elki/algorithm/outlier/distance/TestReferenceBasedOutlierDetection.java b/elki/src/test/java/de/lmu/ifi/dbs/elki/algorithm/outlier/distance/TestReferenceBasedOutlierDetection.java +index de0991d..bc5442c 100644 +--- a/elki/src/test/java/de/lmu/ifi/dbs/elki/algorithm/outlier/distance/TestReferenceBasedOutlierDetection.java ++++ b/elki/src/test/java/de/lmu/ifi/dbs/elki/algorithm/outlier/distance/TestReferenceBasedOutlierDetection.java +@@ -55,7 +55,7 @@ public class TestReferenceBasedOutlierDetection extends AbstractSimpleAlgorithmT + // run ReferenceBasedOutlierDetection on database + OutlierResult result = referenceBasedOutlierDetection.run(db); + +- testAUC(db, "Noise", result, 0.9418148148); +- testSingleScore(result, 945, 0.87173403699); ++ testAUC(db, "Noise", result, 0.9693703703703); ++ testSingleScore(result, 945, 0.933574455); + } + } +\ No newline at end of file diff --git a/debian/patches/repeatable-documentation.patch b/debian/patches/repeatable-documentation.patch new file mode 100644 index 00000000..a7562c62 --- /dev/null +++ b/debian/patches/repeatable-documentation.patch @@ -0,0 +1,79 @@ +commit d255e101e847ea051c718cd6dce613af0a0c5340 +Author: Erich Schubert <schube@dbs.ifi.lmu.de> +Date: Thu Jan 7 17:05:23 2016 +0100 + + Sort classes, force UTF-8 encoding, clean up RandomParameter output. + +diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/application/internal/DocumentParameters.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/application/internal/DocumentParameters.java +index eea3dad..cdbad00 100644 +--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/application/internal/DocumentParameters.java ++++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/application/internal/DocumentParameters.java +@@ -57,6 +57,7 @@ import de.lmu.ifi.dbs.elki.application.AbstractApplication; + import de.lmu.ifi.dbs.elki.logging.Logging; + import de.lmu.ifi.dbs.elki.logging.Logging.Level; + import de.lmu.ifi.dbs.elki.logging.LoggingConfiguration; ++import de.lmu.ifi.dbs.elki.math.random.RandomFactory; + import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil; + import de.lmu.ifi.dbs.elki.utilities.ELKIServiceRegistry; + import de.lmu.ifi.dbs.elki.utilities.ELKIServiceScanner; +@@ -70,6 +71,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.UnParameter + import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ClassListParameter; + import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ClassParameter; + import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter; ++import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.RandomParameter; + import de.lmu.ifi.dbs.elki.utilities.pairs.Pair; + import de.lmu.ifi.dbs.elki.utilities.xml.HTMLUtil; + +@@ -182,7 +184,7 @@ public class DocumentParameters { + throw new RuntimeException(e); + } + try { +- PrintStream byclassstream = new PrintStream(new BufferedOutputStream(byclassfo)); ++ PrintStream byclassstream = new PrintStream(new BufferedOutputStream(byclassfo), false, "UTF-8"); + makeByClassOverviewWiki(byclass, new WikiStream(byclassstream)); + byclassstream.flush(); + byclassstream.close(); +@@ -245,7 +247,9 @@ public class DocumentParameters { + private static void buildParameterIndex(Map<Class<?>, List<Parameter<?>>> byclass, Map<OptionID, List<Pair<Parameter<?>, Class<?>>>> byopt) { + final ArrayList<TrackedParameter> options = new ArrayList<>(); + ExecutorService es = Executors.newSingleThreadExecutor(); +- for(final Class<?> cls : ELKIServiceRegistry.findAllImplementations(Object.class, false, true)) { ++ List<Class<?>> objs = ELKIServiceRegistry.findAllImplementations(Object.class, false, true); ++ Collections.sort(objs, new ELKIServiceScanner.ClassSorter()); ++ for(final Class<?> cls : objs) { + // Doesn't have a proper name? + if(cls.getCanonicalName() == null) { + continue; +@@ -1020,6 +1024,9 @@ public class DocumentParameters { + if(par instanceof ClassParameter<?>) { + appendDefaultClassLink(htmldoc, par, p); + } ++ else if(par instanceof RandomParameter && par.getDefaultValue() == RandomFactory.DEFAULT) { ++ p.appendChild(htmldoc.createTextNode("use global random seed")); ++ } + else { + Object def = par.getDefaultValue(); + p.appendChild(htmldoc.createTextNode(def.toString())); +@@ -1047,6 +1054,9 @@ public class DocumentParameters { + final Class<?> name = ((ClassParameter<?>) par).getDefaultValue(); + out.javadocLink(name, null); + } ++ else if(par instanceof RandomParameter && par.getDefaultValue() == RandomFactory.DEFAULT) { ++ out.print("use global random seed"); ++ } + else { + Object def = par.getDefaultValue(); + out.print(def.toString()); +diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/application/internal/DocumentReferences.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/application/internal/DocumentReferences.java +index 7d448fc..3b9f029 100644 +--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/application/internal/DocumentReferences.java ++++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/application/internal/DocumentReferences.java +@@ -105,7 +105,7 @@ public class DocumentReferences { + try { + File refwiki = new File(args[1]); + FileOutputStream reffow = new FileOutputStream(refwiki); +- PrintStream refstreamW = new PrintStream(reffow); ++ PrintStream refstreamW = new PrintStream(reffow, false, "UTF-8"); + documentReferencesWiki(refs, refstreamW); + refstreamW.flush(); + refstreamW.close(); diff --git a/debian/patches/series b/debian/patches/series index c7858d52..28a17e52 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -4,3 +4,6 @@ enable-profiles-hack.patch better-classpath.patch skip-cpu-dependent-test.patch javadoc-encoding.patch +repeatable-documentation.patch +powi-bugfix.patch +randomsample-bugfix.patch diff --git a/debian/rules b/debian/rules index 0c0692c7..7c7e06db 100755 --- a/debian/rules +++ b/debian/rules @@ -9,6 +9,11 @@ MVN=/usr/share/maven/bin/mvn -Dmaven.repo.local=$(REPO) %: dh $@ --buildsystem=maven +override_dh_auto_configure: + # Remove unneded executable bits: + find -type f -name "*.java" -executable -exec chmod -x {} \+ + dh_auto_configure -O--buildsystem=maven + #build: # mh_patchpoms -pelki # $(MVN) --offline -Psvg,svm -DskipTests=true package |