Subject: Re: [PATCH 3/3] gnu: Update shogun to 6.1.3.

From: Kei Kebreau <[email-masked]>
Date: Wed, 16 May 2018 19:24:01 -0400

Kei Kebreau <[email-masked]> writes:

> * gnu/packages/machine-learning.scm (shogun): Update to 6.1.3.
> [arguments]: Rewrite list of symlinks in 'delete-broken-symlinks' phase.
> Rewrite file lists given to substitute* in 'change-R-target-path' and
> 'fix-octave-modules' phases.  Add 'move-rxcpp' phase.  Rewrite configure-flags
> for the update.
> [inputs]: Add eigen.
> [native-inputs]: Add rxcpp.
> ---
>  gnu/packages/machine-learning.scm | 60 ++++++++++++++-----------------
>  1 file changed, 27 insertions(+), 33 deletions(-)
>
> diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
> index 6536d861e..e79aa6692 100644
> --- a/gnu/packages/machine-learning.scm
> +++ b/gnu/packages/machine-learning.scm
> @@ -37,6 +37,7 @@
>    #:use-module (guix build-system r)
>    #:use-module (guix git-download)
>    #:use-module (gnu packages)
> +  #:use-module (gnu packages algebra)
>    #:use-module (gnu packages autotools)
>    #:use-module (gnu packages boost)
>    #:use-module (gnu packages check)
> @@ -367,7 +368,7 @@ sample proximities between pairs of cases.")
>  (define-public shogun
>    (package
>      (name "shogun")
> -    (version "4.0.0")
> +    (version "6.1.3")
>      (source
>       (origin
>         (method url-fetch)
> @@ -377,7 +378,7 @@ sample proximities between pairs of cases.")
>               "/sources/shogun-" version ".tar.bz2"))
>         (sha256
>          (base32
> -         "159nlijnb7mnrv9za80wnm1shwvy45hgrqzn51hxy7gw4z6d6fdb"))
> +         "1rn9skm3nw6hr7mr3lgp2gfqhi7ii0lyxck7qmqnf8avq349s5jp"))
>         (modules '((guix build utils)
>                    (ice-9 rdelim)))
>         (snippet
> @@ -423,62 +424,54 @@ sample proximities between pairs of cases.")
>                                       "applications/easysvm/data"
>                                       "applications/msplicer/data"
>                                       "applications/ocr/data"
> -                                     "examples/documented/data"
> -                                     "examples/documented/matlab_static"
> -                                     "examples/documented/octave_static"
> -                                     "examples/undocumented/data"
> -                                     "examples/undocumented/matlab_static"
> -                                     "examples/undocumented/octave_static"
> -                                     "tests/integration/data"
> -                                     "tests/integration/matlab_static"
> -                                     "tests/integration/octave_static"
> -                                     "tests/integration/python_modular/tests"))
> +                                     "examples/meta/data"
> +                                     "examples/undocumented/data"))
>               #t))
>           (add-after 'unpack 'change-R-target-path
>             (lambda* (#:key outputs #:allow-other-keys)
> -             (substitute* '("src/interfaces/r_modular/CMakeLists.txt"
> -                            "src/interfaces/r_static/CMakeLists.txt"
> -                            "examples/undocumented/r_modular/CMakeLists.txt")
> +             (substitute* '("src/interfaces/r/CMakeLists.txt"
> +                            "examples/meta/r/CMakeLists.txt")
>                 (("\\$\\{R_COMPONENT_LIB_PATH\\}")
>                  (string-append (assoc-ref outputs "out")
>                                 "/lib/R/library/")))
>               #t))
>           (add-after 'unpack 'fix-octave-modules
>             (lambda* (#:key outputs #:allow-other-keys)
> -             (substitute* '("src/interfaces/octave_modular/CMakeLists.txt"
> -                            "src/interfaces/octave_static/CMakeLists.txt")
> +             (substitute* "src/interfaces/octave/CMakeLists.txt"
>                 (("^include_directories\\(\\$\\{OCTAVE_INCLUDE_DIRS\\}")
> -                "include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave"))
> -
> -             ;; change target directory
> -             (substitute* "src/interfaces/octave_modular/CMakeLists.txt"
> +                "include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave")
> +               ;; change target directory
>                 (("\\$\\{OCTAVE_OCT_LOCAL_API_FILE_DIR\\}")
>                  (string-append (assoc-ref outputs "out")
>                                 "/share/octave/packages")))
>               #t))
> +         (add-after 'unpack 'move-rxcpp
> +           (lambda* (#:key inputs #:allow-other-keys)
> +             (let ((rxcpp-dir "shogun/third-party/rxcpp"))
> +               (mkdir-p rxcpp-dir)
> +               (install-file (assoc-ref inputs "rxcpp") rxcpp-dir)
> +               #t)))
>           (add-before 'build 'set-HOME
>             ;; $HOME needs to be set at some point during the build phase
>             (lambda _ (setenv "HOME" "/tmp") #t)))
>         #:configure-flags
>         (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
>               "-DUSE_SVMLIGHT=OFF" ;disable proprietary SVMLIGHT
> -             ;;"-DJavaModular=ON" ;requires unpackaged jblas
> -             ;;"-DRubyModular=ON" ;requires unpackaged ruby-narray
> -             ;;"-DPerlModular=ON" ;"FindPerlLibs" does not exist
> -             ;;"-DLuaModular=ON"  ;fails because lua doesn't build pkgconfig file
> -             "-DOctaveModular=ON"
> -             "-DOctaveStatic=ON"
> -             "-DPythonModular=ON"
> -             "-DPythonStatic=ON"
> -             "-DRModular=ON"
> -             "-DRStatic=ON"
> -             "-DCmdLineStatic=ON")))
> +             "-DBUILD_META_EXAMPLES=OFF" ;requires unpackaged ctags
> +             ;;"-DINTERFACE_JAVA=ON" ;requires unpackaged jblas
> +             ;;"-DINTERFACE_RUBY=ON" ;requires unpackaged ruby-narray
> +             ;;"-DINTERFACE_PERL=ON" ;"FindPerlLibs" does not exist
> +             ;;"-DINTERFACE_LUA=ON"  ;fails because lua doesn't build pkgconfig file
> +             "-DINTERFACE_OCTAVE=ON"
> +             "-DINTERFACE_PYTHON=ON"
> +             "-DINTERFACE_R=ON")))
>      (inputs
>       `(("python" ,python)
>         ("numpy" ,python-numpy)
>         ("r-minimal" ,r-minimal)
>         ("octave" ,octave)
>         ("swig" ,swig)
> +       ("eigen" ,eigen)
>         ("hdf5" ,hdf5)
>         ("atlas" ,atlas)
>         ("arpack" ,arpack-ng)
> @@ -488,7 +481,8 @@ sample proximities between pairs of cases.")
>         ("lzo" ,lzo)
>         ("zlib" ,zlib)))
>      (native-inputs
> -     `(("pkg-config" ,pkg-config)))
> +     `(("pkg-config" ,pkg-config)
> +       ("rxcpp" ,rxcpp)))
>      ;; Non-portable SSE instructions are used so building fails on platforms
>      ;; other than x86_64.
>      (supported-systems '("x86_64-linux"))

These patches are really just to upgrade Octave, but the old Shogun
couldn't find the new version of Octave. The shogun update patch is a
WIP, but I don't have enough RAM (only 3.8GB) to make it through Shogun's
build process reliably. Could someone else help out with this patch?