Kei Kebreau <kkebr...@posteo.net> writes:

> Other than Shogun's Python/SWIG-related build failure (attached), this
> patch seems to work fairly well. There appears to be an upstream issue
> related to the invalid conversion mentioned in the build failure. I'm
> keeping an eye on it for any new developments.

FYI, this is an updated patch that bypasses the Python interface issue
and runs into an issue with R.

From f4fa63249bec73a385bba1b95bc53cac8f96420c Mon Sep 17 00:00:00 2001
From: Kei Kebreau <kkebr...@posteo.net>
Date: Wed, 30 May 2018 08:34:42 -0400
Subject: [PATCH] gnu: shogun: Use a patched swig for Octave 4.4.

* gnu/packages/swig.scm (swig-git): New variable
* gnu/packages/machine-learning.scm (shogun)[arguments]: Add
'fix-python-compiler-flags' phase.
[inputs]: Replace swig with swig-git.
---
 gnu/packages/machine-learning.scm |  9 +++++++-
 gnu/packages/swig.scm             | 34 +++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/machine-learning.scm 
b/gnu/packages/machine-learning.scm
index 15e4d4574..d992a2fe5 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -469,6 +469,13 @@ sample proximities between pairs of cases.")
                (mkdir-p rxcpp-dir)
                (install-file (assoc-ref inputs "rxcpp") rxcpp-dir)
                #t)))
+         (add-after 'unpack 'fix-python-compiler-flags
+           (lambda _
+             ;; This prevents a set of function conversions from stopping the
+             ;; build with an error.
+             (substitute* "src/interfaces/python/CMakeLists.txt"
+               (("Wno-c\\+\\+11-narrowing") "fpermissive"))
+             #t))
          (add-before 'build 'set-HOME
            ;; $HOME needs to be set at some point during the build phase
            (lambda _ (setenv "HOME" "/tmp") #t)))
@@ -488,7 +495,7 @@ sample proximities between pairs of cases.")
        ("numpy" ,python-numpy)
        ("r-minimal" ,r-minimal)
        ("octave" ,octave)
-       ("swig" ,swig)
+       ("swig" ,swig-git)
        ("eigen" ,eigen)
        ("hdf5" ,hdf5)
        ("atlas" ,atlas)
diff --git a/gnu/packages/swig.scm b/gnu/packages/swig.scm
index b931db412..3a1139dbb 100644
--- a/gnu/packages/swig.scm
+++ b/gnu/packages/swig.scm
@@ -20,8 +20,12 @@
 (define-module (gnu packages swig)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix licenses)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages boost)
@@ -74,3 +78,33 @@ you tailor the wrapping process to suit your application.")
 
     ;; See http://www.swig.org/Release/LICENSE for details.
     (license gpl3+)))
+
+;; This package contains upstream fixes that haven't been released as part of a
+;; stable version of SWIG.  This is necessary for software that uses SWIG to
+;; compile the correct and up-to-date programming language interfaces.
+(define-public swig-git
+  (let ((commit "12c66f9b7d884020e896ce92b9783bc3bac95d2d")
+        (revision "1"))
+    (package/inherit swig
+      (name "swig-git")
+      (version (git-version "4.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/swig/swig.git";)
+               (commit commit)))
+         (sha256 (base32 
"1367y47kdkly9cwyp4d60cm5d660am83g4p52k1hmzvimghwgvlp"))
+         (file-name (git-file-name name version))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments swig)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'autogen
+               (lambda _
+                 (invoke "sh" "autogen.sh")))))))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("bison" ,bison)
+         ,@(package-native-inputs swig))))))
-- 
2.17.1

[ 79%] Linking CXX shared module shogun.so
cd /tmp/guix-build-shogun-6.1.3.drv-0/build/src/interfaces/r && 
/gnu/store/8mycww9vx11vidzka3g5gghwq11alk4w-cmake-3.7.2/bin/cmake -E 
cmake_link_script CMakeFiles/interface_r.dir/link.txt --verbose=1
/gnu/store/cfdn69spjc44x4sd0acrwhxq6yay3rbc-gcc-5.5.0/bin/c++  -fPIC -O0 -g  
-I/gnu/store/42j0p3x4v2gbwqyx6iv1j83qckndm799-r-minimal-3.5.0/lib/R/include -O2 
-g -DNDEBUG  -shared  -o shogun.so 
CMakeFiles/interface_r.dir/shogunR_wrap.cxx.o 
CMakeFiles/interface_r.dir/sg_print_functions.cpp.o  
-L/gnu/store/42j0p3x4v2gbwqyx6iv1j83qckndm799-r-minimal-3.5.0/lib/R/lib 
-Wl,-rpath,/gnu/store/km7w7j4f9qsmnrsag3g94nc6fb20vrxw-shogun-6.1.3/lib:/gnu/store/42j0p3x4v2gbwqyx6iv1j83qckndm799-r-minimal-3.5.0/lib/R/lib
 ../../shogun/libshogun.so.18.0 -lR -lxml2 -lhdf5 -lz -ldl -lm 
Generating shogun.RData
cd /tmp/guix-build-shogun-6.1.3.drv-0/build/src/interfaces/r && echo 
'wd="/tmp/guix-build-shogun-6.1.3.drv-0/build/src/interfaces/r" ; setwd ( wd ) 
; f="shogun.R" ; fdata="shogun.RData" ; source ( f ) ; save ( list=ls ( 
all=TRUE ) , file=fdata , compress=TRUE ) ; q ( save="no" ) ;' | 
/gnu/store/42j0p3x4v2gbwqyx6iv1j83qckndm799-r-minimal-3.5.0/bin/R --silent 
--no-save
> wd="/tmp/guix-build-shogun-6.1.3.drv-0/build/src/interfaces/r" ; setwd ( wd ) 
> ; f="shogun.R" ; fdata="shogun.RData" ; source ( f ) ; save ( list=ls ( 
> all=TRUE ) , file=fdata , compress=TRUE ) ; q ( save="no" ) ;
in method for ‘copyToR’ with signature ‘"_p_shogun::BmrmStatistics"’: no 
definition for class “_p_shogun::BmrmStatistics”
in method for ‘copyToR’ with signature ‘"_p_shogun::CResultSet"’: no definition 
for class “_p_shogun::CResultSet”
in method for ‘copyToR’ with signature ‘"_p_shogun::CRealNumber"’: no 
definition for class “_p_shogun::CRealNumber”
in method for ‘copyToR’ with signature ‘"_p_shogun::GCEdge"’: no definition for 
class “_p_shogun::GCEdge”
in method for ‘copyToR’ with signature ‘"_p_shogun::GCNode"’: no definition for 
class “_p_shogun::GCNode”
in method for ‘copyToR’ with signature ‘"_p_shogun::GCNodePtr"’: no definition 
for class “_p_shogun::GCNodePtr”
in method for ‘copyToR’ with signature ‘"_p_shogun::RelaxedTreeNodeData"’: no 
definition for class “_p_shogun::RelaxedTreeNodeData”
in method for ‘copyToR’ with signature 
‘"_p_shogun::ConditionalProbabilityTreeNodeData"’: no definition for class 
“_p_shogun::ConditionalProbabilityTreeNodeData”
Error in assign(defName, .values, envir = where) : 
  object 'KSM_MAXIMIZE_POWER' not found
  Calls: source ... withVisible -> eval -> eval -> defineEnumeration -> assign
  Execution halted
  make[2]: *** [src/interfaces/r/CMakeFiles/interface_r.dir/build.make:141: 
src/interfaces/r/shogun.so] Error 1
  make[2]: *** Deleting file 'src/interfaces/r/shogun.so'
  make[2]: Leaving directory '/tmp/guix-build-shogun-6.1.3.drv-0/build'
  make[1]: *** [CMakeFiles/Makefile2:462: 
src/interfaces/r/CMakeFiles/interface_r.dir/all] Error 2
  make[1]: Leaving directory '/tmp/guix-build-shogun-6.1.3.drv-0/build'
  make: *** [Makefile:153: all] Error 2

Attachment: signature.asc
Description: PGP signature

Reply via email to