summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitriy Morozov2015-06-23 09:59:11 -0700
committerDmitriy Morozov2015-06-23 09:59:11 -0700
commitf5bed4f34a5827058e835e2be56857516ec7b081 (patch)
tree254b576253adb216dd3a8bcdb8a96193ed93d9f1
downloadaur-f5bed4f34a5827058e835e2be56857516ec7b081.tar.gz
Initial commit for AUR4
-rw-r--r--.SRCINFO17
-rw-r--r--PKGBUILD35
-rw-r--r--parallel.patch156
-rw-r--r--shared-libs.patch39
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