summaryrefslogtreecommitdiff
path: root/px/packages/machine-learning.scm
diff options
context:
space:
mode:
Diffstat (limited to 'px/packages/machine-learning.scm')
-rw-r--r--px/packages/machine-learning.scm133
1 files changed, 133 insertions, 0 deletions
diff --git a/px/packages/machine-learning.scm b/px/packages/machine-learning.scm
new file mode 100644
index 0000000..0d104a6
--- /dev/null
+++ b/px/packages/machine-learning.scm
@@ -0,0 +1,133 @@
+(define-module (px packages machine-learning)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module (guix download)
+ #:use-module (guix svn-download)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system ocaml)
+ #:use-module (guix build-system python)
+ #:use-module (guix build-system r)
+ #:use-module (guix git-download)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages adns)
+ #:use-module (gnu packages algebra)
+ #:use-module (gnu packages audio)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages boost)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages cran)
+ #:use-module (gnu packages databases)
+ #:use-module (gnu packages dejagnu)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages graphviz)
+ #:use-module (gnu packages gstreamer)
+ #:use-module (gnu packages image)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages maths)
+ #:use-module (gnu packages mpi)
+ #:use-module (gnu packages ocaml)
+ #:use-module (gnu packages onc-rpc)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages protobuf)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages python-science)
+ #:use-module (gnu packages python-web)
+ #:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages rpc)
+ #:use-module (gnu packages serialization)
+ #:use-module (gnu packages sphinx)
+ #:use-module (gnu packages statistics)
+ #:use-module (gnu packages sqlite)
+ #:use-module (gnu packages swig)
+ #:use-module (gnu packages web)
+ #:use-module (gnu packages xml)
+ #:use-module (gnu packages xorg)
+ #:use-module (ice-9 match))
+
+(define-public dlib
+ (package
+ (name "dlib")
+ (version "19.21")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://dlib.net/files/dlib-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0g7mgm6l6nw9hlw2zckf59jcd2y2lf907n88hjschkccmq1qlwmy"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Delete ~13MB of bundled dependencies.
+ (delete-file-recursively "dlib/external")
+ (delete-file-recursively "docs/dlib/external")
+ #t))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'disable-asserts
+ (lambda _
+ ;; config.h recommends explicitly enabling or disabling asserts
+ ;; when building as a shared library. By default neither is set.
+ (substitute* "dlib/config.h"
+ (("^//#define DLIB_DISABLE_ASSERTS") "#define DLIB_DISABLE_ASSERTS"))
+ #t))
+ (add-after 'disable-asserts 'disable-failing-tests
+ (lambda _
+ ;; One test times out on MIPS, so we need to disable it.
+ ;; Others are flaky on some platforms.
+ (let* ((system ,(or (%current-target-system)
+ (%current-system)))
+ (disabled-tests (cond
+ ((string-prefix? "mips64" system)
+ '("object_detector" ; timeout
+ "data_io"))
+ ((string-prefix? "armhf" system)
+ '("learning_to_track"))
+ ((string-prefix? "i686" system)
+ '("optimization"))
+ (else '()))))
+ (for-each
+ (lambda (test)
+ (substitute* "dlib/test/makefile"
+ (((string-append "SRC \\+= " test "\\.cpp")) "")))
+ disabled-tests)
+ #t)))
+ (replace 'check
+ (lambda _
+ ;; No test target, so we build and run the unit tests here.
+ (let ((test-dir (string-append "../dlib-" ,version "/dlib/test")))
+ (with-directory-excursion test-dir
+ (invoke "make" "-j" (number->string (parallel-job-count)))
+ (invoke "./dtest" "--runall"))
+ #t))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ;; For tests.
+ ("libnsl" ,libnsl)))
+ (inputs
+ `(("giflib" ,giflib)
+ ("lapack" ,lapack)
+ ("libjpeg" ,libjpeg-turbo)
+ ("libpng" ,libpng)
+ ("libx11" ,libx11)
+ ("openblas" ,openblas)
+ ("zlib" ,zlib)))
+ (synopsis
+ "Toolkit for making machine learning and data analysis applications in C++")
+ (description
+ "Dlib is a modern C++ toolkit containing machine learning algorithms and
+tools. It is used in both industry and academia in a wide range of domains
+including robotics, embedded devices, mobile phones, and large high performance
+computing environments.")
+ (home-page "http://dlib.net")
+ (license license:boost1.0)))