From 477aa3ed12545571d0e226ca527e9f472579d2e7 Mon Sep 17 00:00:00 2001 From: Fabian Pedregosa <fabian.pedregosa@inria.fr> Date: Thu, 29 Apr 2010 09:52:30 +0000 Subject: [PATCH] Add the option to link against system-wide libsvm by editing site.cfg This should make packager's life easier: linking against system-wide libsvm should be a matter of uncommenting relevant lines in file site.cfg. Something similar should be done with liblinear. git-svn-id: https://scikit-learn.svn.sourceforge.net/svnroot/scikit-learn/trunk@713 22fbfee3-77ab-4535-9bad-27d1bd3bc7d8 --- .../compression/cost_function/setup.py | 2 +- .../manifold/regression/cluster/setup.py | 2 +- scikits/learn/setup.py | 28 +++++++++++++++---- site.cfg | 11 ++++++-- 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/scikits/learn/manifold/compression/cost_function/setup.py b/scikits/learn/manifold/compression/cost_function/setup.py index 41c4894b6e..39d588f49a 100644 --- a/scikits/learn/manifold/compression/cost_function/setup.py +++ b/scikits/learn/manifold/compression/cost_function/setup.py @@ -10,7 +10,7 @@ def configuration(parent_package='', top_path=None): site_cfg = ConfigParser() site_cfg.read(get_standard_file('site.cfg')) - if site_cfg.has_section('scikit-learn') and site_cfg.getboolean('scikit-learn', 'use_boost'): + if site_cfg.has_section('boost') and site_cfg.getboolean('boost', 'use_boost'): # build this extension if enabled in site.cfg include_dirs=['../../src', '.', numpy.get_include()] config.add_extension('_cost_function', diff --git a/scikits/learn/manifold/regression/cluster/setup.py b/scikits/learn/manifold/regression/cluster/setup.py index aaeb3e9dbb..8229eca076 100644 --- a/scikits/learn/manifold/regression/cluster/setup.py +++ b/scikits/learn/manifold/regression/cluster/setup.py @@ -9,7 +9,7 @@ def configuration(parent_package='', top_path=None): site_cfg = ConfigParser() site_cfg.read(get_standard_file('site.cfg')) - if site_cfg.has_section('scikit-learn') and site_cfg.getboolean('scikit-learn', 'use_boost'): + if site_cfg.has_section('boost') and site_cfg.getboolean('boost', 'use_boost'): # build this extension if enabled in site.cfg include_dirs=['../../src', '.', numpy.get_include()] config.add_extension('_modified_general_clustering', diff --git a/scikits/learn/setup.py b/scikits/learn/setup.py index d0d9044947..f527d14881 100644 --- a/scikits/learn/setup.py +++ b/scikits/learn/setup.py @@ -1,23 +1,41 @@ from os.path import join import warnings import numpy +from ConfigParser import ConfigParser def configuration(parent_package='',top_path=None): from numpy.distutils.misc_util import Configuration - from numpy.distutils.system_info import get_info, BlasNotFoundError + from numpy.distutils.system_info import get_info, get_standard_file, BlasNotFoundError config = Configuration('learn',parent_package,top_path) + site_cfg = ConfigParser() + site_cfg.read(get_standard_file('site.cfg')) + config.add_subpackage('em') config.add_subpackage('datasets') config.add_subpackage('feature_selection') config.add_subpackage('glm') config.add_subpackage('manifold') config.add_subpackage('utils') + + # libsvm + libsvm_includes = [numpy.get_include()] + libsvm_libraries = [] + libsvm_library_dirs = [] + libsvm_sources = [join('src', 'libsvm.c')] + + if site_cfg.has_section('libsvm'): + libsvm_includes.append(site_cfg.get('libsvm', 'include_dirs')) + libsvm_libraries.append(site_cfg.get('libsvm', 'libraries')) + libsvm_library_dirs.append(site_cfg.get('libsvm', 'library_dirs')) + else: + libsvm_sources.append(join('src', 'svm.cpp')) + config.add_extension('libsvm', - sources=[join('src', 'svm.cpp'), - join('src', 'libsvm.c'), - ], - include_dirs=[numpy.get_include()], + sources=libsvm_sources, + include_dirs=libsvm_includes, + libraries=libsvm_libraries, + library_dirs=libsvm_library_dirs, depends=[join('src', 'svm.h'), join('src', 'libsvm_helper.c'), ]) diff --git a/site.cfg b/site.cfg index 541fdae454..66f867b3e1 100644 --- a/site.cfg +++ b/site.cfg @@ -1,3 +1,8 @@ -[scikit-learn] -#compile libraries that depend on boost -use_boost=0 +# uncomment this to compile libraries that depend on boost +# [boost] +# use_boost=True + +# [libsvm] +# libraries=svm +# library_dirs=/usr/lib +# include_dirs=/usr/include/libsvm-2.0/libsvm \ No newline at end of file -- GitLab