[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/04: gnu: Add python-faiss.
From: |
guix-commits |
Subject: |
02/04: gnu: Add python-faiss. |
Date: |
Thu, 28 Mar 2019 22:56:07 -0400 (EDT) |
rekado pushed a commit to branch master
in repository guix.
commit 51a9971ccb631e56d67f2cf71c2d8defae73955c
Author: Ricardo Wurmus <address@hidden>
Date: Thu Mar 28 23:50:33 2019 +0100
gnu: Add python-faiss.
* gnu/packages/graph.scm (python-faiss): New variable.
---
gnu/packages/graph.scm | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index b3723d4..2e8f7c1 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -22,6 +22,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix packages)
+ #:use-module (guix utils)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
@@ -42,6 +43,7 @@
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages statistics)
+ #:use-module (gnu packages swig)
#:use-module (gnu packages time)
#:use-module (gnu packages xml))
@@ -322,3 +324,51 @@ clustering of dense vectors. It contains algorithms that
search in sets of
vectors of any size, up to ones that possibly do not fit in RAM. It also
contains supporting code for evaluation and parameter tuning.")
(license license:bsd-3)))
+
+(define-public python-faiss
+ (package (inherit faiss)
+ (name "python-faiss")
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'chdir
+ (lambda _ (chdir "python") #t))
+ (add-after 'chdir 'build-swig
+ (lambda* (#:key inputs #:allow-other-keys)
+ (with-output-to-file "../makefile.inc"
+ (lambda ()
+ (let ((python-version ,(version-major+minor (package-version
python))))
+ (format #t "\
+PYTHONCFLAGS =-I~a/include/python~am/
-I~a/lib/python~a/site-packages/numpy/core/include
+LIBS = -lpython~am -lfaiss
+SHAREDFLAGS = -shared -fopenmp
+CXXFLAGS = -fpermissive -std=c++11 -fopenmp -fPIC
+CPUFLAGS = ~{~a ~}~%"
+ (assoc-ref inputs "python*") python-version
+ (assoc-ref inputs "python-numpy") python-version
+ python-version
+ (cons "-mpopcnt"
+ (list ,@(let ((system (or
(%current-target-system)
+ (%current-system))))
+ (cond
+ ((string-prefix? "x86_64" system)
+ '("-mavx" "-msse2"))
+ ((string-prefix? "i686" system)
+ '("-msse2"))
+ (else
+ '())))))))))
+ (substitute* "Makefile"
+ (("../libfaiss.a") ""))
+ (invoke "make" "cpu"))))))
+ (inputs
+ `(("faiss" ,faiss)
+ ("openblas" ,openblas)
+ ("python*" ,python)
+ ("swig" ,swig)))
+ (propagated-inputs
+ `(("python-matplotlib" ,python-matplotlib)
+ ("python-numpy" ,python-numpy)))
+ (description "Faiss is a library for efficient similarity search and
+clustering of dense vectors. This package provides Python bindings to the
+Faiss library.")))