diff options
author | Dmitriy Morozov | 2015-06-23 09:59:11 -0700 |
---|---|---|
committer | Dmitriy Morozov | 2015-06-23 09:59:11 -0700 |
commit | f5bed4f34a5827058e835e2be56857516ec7b081 (patch) | |
tree | 254b576253adb216dd3a8bcdb8a96193ed93d9f1 | |
download | aur-f5bed4f34a5827058e835e2be56857516ec7b081.tar.gz |
Initial commit for AUR4
-rw-r--r-- | .SRCINFO | 17 | ||||
-rw-r--r-- | PKGBUILD | 35 | ||||
-rw-r--r-- | parallel.patch | 156 | ||||
-rw-r--r-- | shared-libs.patch | 39 |
4 files changed, 247 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..db51e4bae6fa --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,17 @@ +pkgbase = ann + pkgdesc = Approximate nearest neighbor library. + pkgver = 1.1.2 + pkgrel = 2 + url = http://www.cs.umd.edu/~mount/ANN/ + arch = i686 + arch = x86_64 + license = LGPL + source = http://www.cs.umd.edu/~mount/ANN/Files/1.1.2/ann_1.1.2.tar.gz + source = shared-libs.patch + source = parallel.patch + md5sums = 7ffaacc7ea79ca39d4958a6378071365 + md5sums = e185876a0a578a5886c11fbfea5c4644 + md5sums = b332924dd27ee8a7fc479f28761a4381 + +pkgname = ann + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..522d8f7c6033 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,35 @@ +# Contributor: Dmitriy Morozov <archlinux@foxcub.org> +pkgname=ann +pkgver=1.1.2 +pkgrel=2 +pkgdesc="Approximate nearest neighbor library." +url="http://www.cs.umd.edu/~mount/ANN/" +arch=('i686' 'x86_64') +license="LGPL" +depends=() +source=(http://www.cs.umd.edu/~mount/ANN/Files/$pkgver/${pkgname}_$pkgver.tar.gz + shared-libs.patch parallel.patch) + +build() +{ + cd $srcdir/${pkgname}_$pkgver + # patch -p1 < $startdir/src/gcc43.patch + patch -p1 < $srcdir/shared-libs.patch + patch -p1 < $srcdir/parallel.patch + make linux-g++-sl + # make clean + make linux-g++ +} + +package() +{ + cd $srcdir/${pkgname}_$pkgver + mkdir $pkgdir/usr + cp -r include $pkgdir/usr + cp -r lib $pkgdir/usr + mkdir -p $pkgdir/usr/share/doc/ann + cp doc/* $pkgdir/usr/share/doc/ann +} +md5sums=('7ffaacc7ea79ca39d4958a6378071365' + 'e185876a0a578a5886c11fbfea5c4644' + 'b332924dd27ee8a7fc479f28761a4381') diff --git a/parallel.patch b/parallel.patch new file mode 100644 index 000000000000..1d5e3ebb4ca4 --- /dev/null +++ b/parallel.patch @@ -0,0 +1,156 @@ +# HG changeset patch +# User Dmitriy Morozov <dmitriy@mrzv.org> +# Date 1247864070 25200 +# Node ID f1e962ffa1c22e979d80ab282aa26ab07d263390 +# Parent 689462154b3a1e285a559ed5747063498660f1df +ANNkd_tree:annkSearch() is reentrant, in particular it works with OpenMP + +diff -r 689462154b3a -r f1e962ffa1c2 src/bd_search.cpp +--- a/src/bd_search.cpp Tue Jul 14 09:25:24 2009 -0700 ++++ b/src/bd_search.cpp Fri Jul 17 13:54:30 2009 -0700 +@@ -36,6 +36,8 @@ + // bd_shrink::ann_search - search a shrinking node + //---------------------------------------------------------------------- + ++ANNpoint ANNkdQ; // query point ++ANNmin_k *ANNkdPointMK; // set of k closest points + void ANNbd_shrink::ann_search(ANNdist box_dist) + { + // check dist calc term cond. +diff -r 689462154b3a -r f1e962ffa1c2 src/kd_search.cpp +--- a/src/kd_search.cpp Tue Jul 14 09:25:24 2009 -0700 ++++ b/src/kd_search.cpp Fri Jul 17 13:54:30 2009 -0700 +@@ -77,10 +77,8 @@ + //---------------------------------------------------------------------- + + int ANNkdDim; // dimension of space +-ANNpoint ANNkdQ; // query point + double ANNkdMaxErr; // max tolerable squared error + ANNpointArray ANNkdPts; // the points +-ANNmin_k *ANNkdPointMK; // set of k closest points + + //---------------------------------------------------------------------- + // annkSearch - search for the k nearest neighbors +@@ -93,6 +91,8 @@ + ANNdistArray dd, // the approximate nearest neighbor + double eps) // the error bound + { ++ ANNpoint ANNkdQ; // query point ++ ANNmin_k *ANNkdPointMK; // set of k closest points + + ANNkdDim = dim; // copy arguments to static equivs + ANNkdQ = q; +@@ -108,7 +108,7 @@ + + ANNkdPointMK = new ANNmin_k(k); // create set for closest k points + // search starting at the root +- root->ann_search(annBoxDistance(q, bnd_box_lo, bnd_box_hi, dim)); ++ root->ann_search(ANNkdQ, ANNkdPointMK, annBoxDistance(q, bnd_box_lo, bnd_box_hi, dim)); + + for (int i = 0; i < k; i++) { // extract the k-th closest points + dd[i] = ANNkdPointMK->ith_smallest_key(i); +@@ -121,7 +121,7 @@ + // kd_split::ann_search - search a splitting node + //---------------------------------------------------------------------- + +-void ANNkd_split::ann_search(ANNdist box_dist) ++void ANNkd_split::ann_search(ANNpoint& ANNkdQ, ANNmin_k* ANNkdPointMK, ANNdist box_dist) + { + // check dist calc term condition + if (ANNmaxPtsVisited != 0 && ANNptsVisited > ANNmaxPtsVisited) return; +@@ -130,7 +130,7 @@ + ANNcoord cut_diff = ANNkdQ[cut_dim] - cut_val; + + if (cut_diff < 0) { // left of cutting plane +- child[ANN_LO]->ann_search(box_dist);// visit closer child first ++ child[ANN_LO]->ann_search(ANNkdQ, ANNkdPointMK, box_dist);// visit closer child first + + ANNcoord box_diff = cd_bnds[ANN_LO] - ANNkdQ[cut_dim]; + if (box_diff < 0) // within bounds - ignore +@@ -141,11 +141,11 @@ + + // visit further child if close enough + if (box_dist * ANNkdMaxErr < ANNkdPointMK->max_key()) +- child[ANN_HI]->ann_search(box_dist); ++ child[ANN_HI]->ann_search(ANNkdQ, ANNkdPointMK, box_dist); + + } + else { // right of cutting plane +- child[ANN_HI]->ann_search(box_dist);// visit closer child first ++ child[ANN_HI]->ann_search(ANNkdQ, ANNkdPointMK, box_dist);// visit closer child first + + ANNcoord box_diff = ANNkdQ[cut_dim] - cd_bnds[ANN_HI]; + if (box_diff < 0) // within bounds - ignore +@@ -156,7 +156,7 @@ + + // visit further child if close enough + if (box_dist * ANNkdMaxErr < ANNkdPointMK->max_key()) +- child[ANN_LO]->ann_search(box_dist); ++ child[ANN_LO]->ann_search(ANNkdQ, ANNkdPointMK, box_dist); + + } + ANN_FLOP(10) // increment floating ops +@@ -169,7 +169,7 @@ + // some fine tuning to replace indexing by pointer operations. + //---------------------------------------------------------------------- + +-void ANNkd_leaf::ann_search(ANNdist box_dist) ++void ANNkd_leaf::ann_search(ANNpoint& ANNkdQ, ANNmin_k* ANNkdPointMK, ANNdist box_dist) + { + register ANNdist dist; // distance to data point + register ANNcoord* pp; // data coordinate pointer +diff -r 689462154b3a -r f1e962ffa1c2 src/kd_search.h +--- a/src/kd_search.h Tue Jul 14 09:25:24 2009 -0700 ++++ b/src/kd_search.h Fri Jul 17 13:54:30 2009 -0700 +@@ -39,10 +39,10 @@ + //---------------------------------------------------------------------- + + extern int ANNkdDim; // dimension of space (static copy) +-extern ANNpoint ANNkdQ; // query point (static copy) ++// extern ANNpoint ANNkdQ; // query point (static copy) + extern double ANNkdMaxErr; // max tolerable squared error + extern ANNpointArray ANNkdPts; // the points (static copy) +-extern ANNmin_k *ANNkdPointMK; // set of k closest points ++// extern ANNmin_k *ANNkdPointMK; // set of k closest points + extern int ANNptsVisited; // number of points visited + + #endif +diff -r 689462154b3a -r f1e962ffa1c2 src/kd_tree.h +--- a/src/kd_tree.h Tue Jul 14 09:25:24 2009 -0700 ++++ b/src/kd_tree.h Fri Jul 17 13:54:30 2009 -0700 +@@ -28,6 +28,7 @@ + #define ANN_kd_tree_H + + #include <ANN/ANNx.h> // all ANN includes ++#include "pr_queue_k.h" // k-element priority queue + + using namespace std; // make std:: available + +@@ -47,7 +48,8 @@ + public: + virtual ~ANNkd_node() {} // virtual distroyer + +- virtual void ann_search(ANNdist) = 0; // tree search ++ virtual void ann_search(ANNdist) {} // tree search ++ virtual void ann_search(ANNpoint& ANNkdQ, ANNmin_k* ANNkdPointMK, ANNdist) {} // tree search + virtual void ann_pri_search(ANNdist) = 0; // priority search + virtual void ann_FR_search(ANNdist) = 0; // fixed-radius search + +@@ -110,7 +112,7 @@ + virtual void print(int level, ostream &out);// print node + virtual void dump(ostream &out); // dump node + +- virtual void ann_search(ANNdist); // standard search ++ virtual void ann_search(ANNpoint& ANNkdQ, ANNmin_k* ANNkdPointMK, ANNdist); // standard search + virtual void ann_pri_search(ANNdist); // priority search + virtual void ann_FR_search(ANNdist); // fixed-radius search + }; +@@ -176,7 +178,7 @@ + virtual void print(int level, ostream &out);// print node + virtual void dump(ostream &out); // dump node + +- virtual void ann_search(ANNdist); // standard search ++ virtual void ann_search(ANNpoint& ANNkdQ, ANNmin_k* ANNkdPointMK, ANNdist); // standard search + virtual void ann_pri_search(ANNdist); // priority search + virtual void ann_FR_search(ANNdist); // fixed-radius search + }; diff --git a/shared-libs.patch b/shared-libs.patch new file mode 100644 index 000000000000..45f237b50889 --- /dev/null +++ b/shared-libs.patch @@ -0,0 +1,39 @@ +diff -u -r ann_1.1.1/Make-config ann_1.1.1.new/Make-config +--- ann_1.1.1/Make-config 2006-08-04 12:46:26.000000000 -0700 ++++ ann_1.1.1.new/Make-config 2009-06-11 11:46:47.428863858 -0700 +@@ -76,6 +76,14 @@ + "MAKELIB = ar ruv" \ + "RANLIB = true" + ++linux-g++-sl: ++ $(MAKE) targets \ ++ "ANNLIB = libANN.so" \ ++ "C++ = g++" \ ++ "CFLAGS = -O3 -fPIC" \ ++ "MAKELIB = g++ -shared -o" \ ++ "RANLIB = true" ++ + # Mac OS X using g++ + macosx-g++: + $(MAKE) targets \ +diff -u -r ann_1.1.1/Makefile ann_1.1.1.new/Makefile +--- ann_1.1.1/Makefile 2006-08-04 12:46:26.000000000 -0700 ++++ ann_1.1.1.new/Makefile 2009-06-11 11:47:14.175551635 -0700 +@@ -42,6 +42,7 @@ + default: + @echo "Enter one of the following:" + @echo " make linux-g++ for Linux and g++" ++ @echo " make linux-g++-sl for Linux and g++, make shared libs" + @echo " make macosx-g++ for Mac OS X and g++" + @echo " make sunos5 for Sun with SunOS 5.x" + @echo " make sunos5-sl for Sun with SunOS 5.x, make shared libs" +@@ -56,7 +57,7 @@ + #----------------------------------------------------------------------------- + # main make entry point + #----------------------------------------------------------------------------- +-alpha-g++ macosx-g++ linux-g++ sgi sunos4 sunos4-g++ sunos5 sunos5-g++ sunos5-g++-sl authors-debug authors-perf: ++alpha-g++ macosx-g++ linux-g++ linux-g++-sl sgi sunos4 sunos4-g++ sunos5 sunos5-g++ sunos5-g++-sl authors-debug authors-perf: + cd src ; $(MAKE) $@ + cd test ; $(MAKE) $@ + cd sample ; $(MAKE) $@ +Only in ann_1.1.1.new/sample: ann_sample |