Changeset 11665:102abd2f5a1e in orange


Ignore:
Timestamp:
08/23/13 13:42:13 (8 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Extended 'setup-site.cfg' configuration options.

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • setup-site.cfg

    r10250 r11665  
    1111#  * LIBLINEAR (v1.8) 
    1212#  * QHull 
     13#  * R lib (a subset) 
    1314# 
    1415#  You can customize the build process to instead link to the  
     
    2324# multi-threaded blas (or 'goto_blas', 'atlas' etc.) 
    2425# 
    25 #  Currently you still have to set the search paths (for both 
    26 # libraries and header files) using the CFLAGS, CPPFLAGS and  
    27 # LDFLAGS env. variables for compiler and linker to find your 
    28 # library (if not on the default search path). Support for  
    29 # configuring them through this file is planned.  
     26#  You can also specify the header file and library search paths 
     27# using the 'include_dirs = path' and 'library_dirs = path' if they 
     28# are not on the default search paths. 
    3029# 
    3130#  If building and installing with an automated package manager 
     
    3938#################### 
    4039 
    41 [blas]  
     40[blas] 
    4241#library = blas 
    4342 
     
    4847[libsvm] 
    4948#library = svm 
     49#include_dirs = /usr/local/include 
    5050 
    5151######################### 
     
    5555[liblinear] 
    5656#library = linear 
     57#include_dirs = /usr/include 
     58 
     59##################### 
     60# R lib configuration 
     61##################### 
     62 
     63[R] 
     64#library = R 
     65#library_dirs = /usr/lib/R/lib 
    5766 
    5867##################### 
  • setup.py

    r11622 r11665  
    2424import subprocess 
    2525from subprocess import check_call 
     26from collections import namedtuple 
     27from ConfigParser import SafeConfigParser 
    2628 
    2729from setuptools import setup, find_packages 
     
    9294    extra_compile_args = [] 
    9395    extra_link_args = [] 
     96 
     97lib_cfg = namedtuple( 
     98    "lib_cfg", ["libraries", "library_dirs", "include_dirs"]) 
     99 
     100site_cfg = namedtuple( 
     101    "site_cfg", ["libsvm", "liblinear", "blas", "R", "qhull"]) 
     102 
     103 
     104def libs_parse(text): 
     105    return [lib.strip() for lib in text.strip().split()] 
     106 
     107 
     108def dirs_parse(text): 
     109    return text.strip().split(os.path.pathsep) 
     110 
     111 
     112def parse_lib_opt(parser, section): 
     113    libs, library_dirs, include_dirs = [], [], [] 
     114 
     115    if parser.has_option(section, "libraries"): 
     116        libs = libs_parse(parser.get(section, "libraries")) 
     117    elif parser.has_option(section, "library"): 
     118        libs = libs_parse(parser.get(section, "library")) 
     119 
     120    if parser.has_option(section, "library_dirs"): 
     121        library_dirs = \ 
     122            dirs_parse(parser.get(section, "library_dirs")) 
     123 
     124    if parser.has_option(section, "include_dirs"): 
     125        include_dirs = dirs_parse(parser.get(section, "include_dirs")) 
     126 
     127    if libs or library_dirs or include_dirs: 
     128        return lib_cfg(libs, library_dirs, include_dirs) 
     129    else: 
     130        return None 
     131 
     132 
     133def site_config(): 
     134    """Return the parsed site configuration. 
     135    """ 
     136    parser = SafeConfigParser() 
     137    parser.read(["setup-site.cfg", 
     138                 os.path.expanduser("~/.orange-site.cfg")]) 
     139 
     140    libsvm = parse_lib_opt(parser, "libsvm") 
     141    liblinear = parse_lib_opt(parser, "liblinear") 
     142    blas = parse_lib_opt(parser, "blas") 
     143    R = parse_lib_opt(parser, "R") 
     144    qhull = parse_lib_opt(parser, "qhull") 
     145 
     146    return site_cfg(libsvm, liblinear, blas, R, qhull) 
     147 
    94148 
    95149# Get the command for building orangeqt extension from 
     
    501555    return files 
    502556 
    503 include_ext = LibStatic("orange_include", 
    504                         get_source_files("source/include/"), 
    505                         include_dirs=include_dirs, 
    506                         extra_compile_args=extra_compile_args) 
     557# common library statically linked into orange, orangeom, ... 
     558include_ext = LibStatic( 
     559    "orange_include", 
     560    get_source_files("source/include/"), 
     561    include_dirs=include_dirs, 
     562    extra_compile_args=extra_compile_args 
     563) 
    507564 
    508565 
     
    512569    libraries = ["stdc++", "orange_include"] 
    513570 
    514 import ConfigParser 
    515 config = ConfigParser.RawConfigParser() 
    516  
    517 config.read(["setup-site.cfg", 
    518              os.path.expanduser("~/.orange-site.cfg")] 
    519             ) 
     571 
     572# Custom site configuration 
     573 
     574site = site_config() 
    520575 
    521576orange_sources = get_source_files("source/orange/") 
     577 
    522578orange_include_dirs = list(include_dirs) 
     579orange_library_dirs = [] 
    523580orange_libraries = list(libraries) 
    524581 
    525 if config.has_option("blas", "library"): 
     582if site.blas: 
    526583    # Link external blas library 
    527     orange_libraries += [config.get("blas", "library")] 
     584    orange_libraries += site.blas.libraries 
     585    orange_library_dirs += site.blas.library_dirs 
    528586else: 
    529587    orange_sources += get_source_files("source/orange/blas/", "c") 
    530588 
    531 if config.has_option("R", "library"): 
     589if site.R: 
    532590    # Link external R library (for linpack) 
    533     orange_libraries += [config.get("R", "library")] 
     591    orange_libraries += site.R.libraries 
     592    orange_library_dirs += site.R.library_dirs 
    534593else: 
    535594    orange_sources += get_source_files("source/orange/linpack/", "c") 
    536595 
    537 if config.has_option("liblinear", "library"): 
     596if site.liblinear: 
    538597    # Link external LIBLINEAR library 
    539     orange_libraries += [config.get("liblinear", "library")] 
     598    orange_libraries += site.liblinear.libraries 
     599    orange_include_dirs += site.liblinear.include_dirs 
     600    orange_library_dirs += site.liblinear.library_dirs 
    540601else: 
    541602    orange_sources += get_source_files("source/orange/liblinear/", "cpp") 
    542603    orange_include_dirs += ["source/orange/liblinear"] 
    543604 
    544 if config.has_option("libsvm", "library"): 
     605if site.libsvm: 
    545606    # Link external LibSVM library 
    546     orange_libraries += [config.get("libsvm", "library")] 
     607    orange_libraries += site.libsvm.libraries 
     608    orange_include_dirs += site.libsvm.include_dirs 
     609    orange_library_dirs += site.libsvm.library_dirs 
    547610else: 
    548611    orange_sources += get_source_files("source/orange/libsvm/", "cpp") 
    549612 
    550 orange_ext = PyXtractSharedExtension("Orange.orange", orange_sources, 
    551                                       include_dirs=orange_include_dirs, 
    552                                       extra_compile_args = extra_compile_args + ["-DORANGE_EXPORTS"], 
    553                                       extra_link_args = extra_link_args, 
    554                                       libraries=orange_libraries, 
    555                                       extra_pyxtract_cmds = ["../pyxtract/defvectors.py"], 
    556                                       ) 
     613 
     614orange_ext = PyXtractSharedExtension( 
     615    "Orange.orange", 
     616    orange_sources, 
     617    include_dirs=orange_include_dirs, 
     618    extra_compile_args=extra_compile_args + ["-DORANGE_EXPORTS"], 
     619    extra_link_args=extra_link_args, 
     620    libraries=orange_libraries, 
     621    library_dirs=orange_library_dirs, 
     622    extra_pyxtract_cmds=["../pyxtract/defvectors.py"], 
     623) 
     624 
    557625 
    558626if sys.platform == "darwin": 
     
    567635    shared_libs = libraries + ["orange"] 
    568636 
    569 orangeom_sources = get_source_files("source/orangeom/", exclude=["lib_vectors.cpp"]) 
     637orangeom_sources = get_source_files( 
     638    "source/orangeom/", exclude=["lib_vectors.cpp"]) 
     639 
    570640orangeom_libraries = list(shared_libs) 
    571641orangeom_include_dirs = list(include_dirs) 
    572  
    573 if config.has_option("qhull", "library"): 
     642orangeom_library_dirs = [] 
     643 
     644 
     645if site.qhull: 
    574646    # Link external qhull library 
    575     orangeom_libraries += [config.get("qhull", "library")] 
     647    orangeom_libraries += site.qhull.libraries 
     648    orangeom_include_dirs += site.qhull.include_dirs 
     649    orangeom_library_dirs += site.qhull.library_dirs 
    576650else: 
    577651    orangeom_sources += get_source_files("source/orangeom/qhull/", "c") 
    578652    orangeom_include_dirs += ["source/orangeom"] 
    579653 
    580 orangeom_ext = PyXtractExtension("Orange.orangeom", orangeom_sources, 
    581                                   include_dirs=orangeom_include_dirs + ["source/orange/"], 
    582                                   extra_compile_args = extra_compile_args + ["-DORANGEOM_EXPORTS"], 
    583                                   extra_link_args = extra_link_args, 
    584                                   libraries=orangeom_libraries, 
    585                                   ) 
    586  
    587 orangene_ext = PyXtractExtension("Orange.orangene", 
     654orangeom_ext = PyXtractExtension( 
     655    "Orange.orangeom", 
     656    orangeom_sources, 
     657    include_dirs=orangeom_include_dirs + ["source/orange/"], 
     658    extra_compile_args=extra_compile_args + ["-DORANGEOM_EXPORTS"], 
     659    extra_link_args=extra_link_args, 
     660    libraries=orangeom_libraries, 
     661    library_dirs=orangeom_library_dirs 
     662 ) 
     663 
     664orangene_ext = PyXtractExtension( 
     665    "Orange.orangene", 
    588666    get_source_files("source/orangene/", exclude=["lib_vectors.cpp"]), 
    589                                   include_dirs=include_dirs + ["source/orange/"],  
    590                                   extra_compile_args = extra_compile_args + ["-DORANGENE_EXPORTS"], 
    591                                   extra_link_args = extra_link_args, 
    592                                   libraries=shared_libs, 
    593                                   ) 
    594  
    595 corn_ext = Extension("Orange.corn", get_source_files("source/corn/"), 
    596                      include_dirs=include_dirs + ["source/orange/"],  
    597                      extra_compile_args = extra_compile_args + ["-DCORN_EXPORTS"], 
    598                      extra_link_args = extra_link_args, 
    599                      libraries=libraries 
    600                      ) 
    601  
    602 statc_ext = Extension("Orange.statc", get_source_files("source/statc/"), 
    603                       include_dirs=include_dirs + ["source/orange/"],  
    604                       extra_compile_args = extra_compile_args + ["-DSTATC_EXPORTS"], 
    605                       extra_link_args = extra_link_args, 
    606                       libraries=libraries 
    607                       ) 
     667    include_dirs=include_dirs + ["source/orange/"], 
     668    extra_compile_args=extra_compile_args + ["-DORANGENE_EXPORTS"], 
     669    extra_link_args=extra_link_args, 
     670    libraries=shared_libs, 
     671) 
     672 
     673corn_ext = Extension( 
     674    "Orange.corn", get_source_files("source/corn/"), 
     675    include_dirs=include_dirs + ["source/orange/"], 
     676    extra_compile_args=extra_compile_args + ["-DCORN_EXPORTS"], 
     677    extra_link_args=extra_link_args, 
     678    libraries=libraries 
     679) 
     680 
     681statc_ext = Extension( 
     682    "Orange.statc", get_source_files("source/statc/"), 
     683    include_dirs=include_dirs + ["source/orange/"], 
     684    extra_compile_args=extra_compile_args + ["-DSTATC_EXPORTS"], 
     685    extra_link_args=extra_link_args, 
     686    libraries=libraries 
     687) 
    608688 
    609689 
Note: See TracChangeset for help on using the changeset viewer.