Skip to content

Commit

Permalink
Merge pull request #45987 from danieldk/fix-vowpalwabbit
Browse files Browse the repository at this point in the history
vowpalwabbit: fix build against boost-python.
  • Loading branch information
xeji authored Sep 4, 2018
2 parents 8e9c7e8 + 69d418a commit d22e22e
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 3 deletions.
19 changes: 16 additions & 3 deletions pkgs/development/python-modules/vowpalwabbit/default.nix
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{ lib, buildPythonPackage, fetchPypi, python, boost, zlib, clang, ncurses
, pytest, docutils, pygments, numpy, scipy, scikitlearn }:
{ stdenv, lib, buildPythonPackage, fetchPypi, python, boost, zlib, clang
, ncurses, pytest, docutils, pygments, numpy, scipy, scikitlearn }:

buildPythonPackage rec {
pname = "vowpalwabbit";
Expand All @@ -9,15 +9,27 @@ buildPythonPackage rec {
inherit pname version;
sha256 = "0b517371fc64f1c728a0af42a31fa93def27306e9b4d25d6e5fd01bcff1b7304";
};

# Should be fixed in next Python release after 8.5.0:
# https://github.com/JohnLangford/vowpal_wabbit/pull/1533
patches = [
./vowpal-wabbit-find-boost.diff
];

# vw tries to write some explicit things to home
# python installed: The directory '/homeless-shelter/.cache/pip/http'
preInstall = ''
export HOME=$PWD
'';

buildInputs = [ boost.dev zlib.dev clang ncurses pytest docutils pygments ];
buildInputs = [ python.pkgs.boost zlib.dev clang ncurses pytest docutils pygments ];
propagatedBuildInputs = [ numpy scipy scikitlearn ];

# Python ctypes.find_library uses DYLD_LIBRARY_PATH.
preConfigure = lib.optionalString stdenv.isDarwin ''
export DYLD_LIBRARY_PATH="${python.pkgs.boost}/lib"
'';

checkPhase = ''
# check-manifest requires a git clone, not a tarball
# check-manifest --ignore "Makefile,PACKAGE.rst,*.cc,tox.ini,tests*,examples*,src*"
Expand All @@ -28,6 +40,7 @@ buildPythonPackage rec {
description = "Vowpal Wabbit is a fast machine learning library for online learning, and this is the python wrapper for the project.";
homepage = https://github.com/JohnLangford/vowpal_wabbit;
license = licenses.bsd3;
broken = stdenv.isAarch64;
maintainers = with maintainers; [ teh ];
};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
--- vowpalwabbit-8.5.0.orig/setup.py 2018-09-03 20:32:39.000000000 +0200
+++ vowpalwabbit-8.5.0/setup.py 2018-09-03 20:34:09.000000000 +0200
@@ -23,18 +23,11 @@

def find_boost():
"""Find correct boost-python library information """
- if system == 'Linux':
+ if system == 'Linux' or system == 'Darwin':
# use version suffix if present
- boost_lib = 'boost_python-py{v[0]}{v[1]}'.format(v=sys.version_info)
- if sys.version_info.major == 3:
- for candidate in ['-py36', '-py35', '-py34', '3']:
- boost_lib = 'boost_python{}'.format(candidate)
- if find_library(boost_lib):
- exit
+ boost_lib = 'boost_python{v[0]}{v[1]}'.format(v=sys.version_info)
if not find_library(boost_lib):
boost_lib = "boost_python"
- elif system == 'Darwin':
- boost_lib = 'boost_python-mt' if sys.version_info[0] == 2 else 'boost_python3-mt'
elif system == 'Cygwin':
boost_lib = 'boost_python-mt' if sys.version_info[0] == 2 else 'boost_python3-mt'
else:
--- vowpalwabbit-8.5.0.orig/src/Makefile 2018-09-03 20:32:40.000000000 +0200
+++ vowpalwabbit-8.5.0/src/Makefile 2018-09-03 21:42:30.000000000 +0200
@@ -37,7 +37,7 @@
NPROCS:=$(shell grep -c ^processor /proc/cpuinfo)
endif
ifeq ($(UNAME), Darwin)
- LIBS = -lboost_program_options-mt -lboost_serialization-mt -l pthread -l z
+ LIBS = -lboost_program_options -lboost_serialization -l pthread -l z
# On Macs, the location isn't always clear
# brew uses /usr/local
# but /opt/local seems to be preferred by some users

0 comments on commit d22e22e

Please sign in to comment.