Rewrite setup.py. (#5271)
The setup.py is rewritten. This new script uses only Python code and provide customized implementation of setuptools commands. This way users can run most of setuptools commands just like any other Python libraries. * Remove setup_pip.py * Remove soft links. * Define customized commands. * Remove shell script. * Remove makefile script. * Update the doc for building from source.
This commit is contained in:
@@ -1,34 +0,0 @@
|
||||
#!/bin/sh
|
||||
# This is a simple script to make xgboost in MAC and Linux for python wrapper only
|
||||
# Basically, it first try to make with OpenMP, if fails, disable OpenMP and make it again.
|
||||
# This will automatically make xgboost for MAC users who don't have OpenMP support.
|
||||
# In most cases, type make will give what you want.
|
||||
|
||||
# See additional instruction in doc/build.md
|
||||
|
||||
# note: this script is build for python package only, and it might have some filename
|
||||
# conflict with build.sh which is for everything.
|
||||
|
||||
set -e
|
||||
set -x
|
||||
|
||||
oldpath=`pwd`
|
||||
cd ./xgboost/
|
||||
|
||||
#remove the pre-compiled .so and trigger the system's on-the-fly compiling
|
||||
mkdir -p build
|
||||
cd build
|
||||
if cmake .. && make -j4; then
|
||||
echo "Successfully built multi-thread xgboost"
|
||||
else
|
||||
echo "-----------------------------"
|
||||
echo "Building multi-thread xgboost failed"
|
||||
echo "Start to build single-thread xgboost"
|
||||
cmake .. -DUSE_OPENMP=0
|
||||
make -j4
|
||||
echo "Successfully built single-thread xgboost; training speed may be suboptimal."
|
||||
echo "To use all CPU cores for training jobs, install libomp package from Homebrew and re-install XGBoost"
|
||||
fi
|
||||
cd $oldpath
|
||||
|
||||
set +x
|
||||
@@ -1 +0,0 @@
|
||||
../../dmlc-core
|
||||
@@ -1 +0,0 @@
|
||||
../../include
|
||||
@@ -1 +0,0 @@
|
||||
../../lib
|
||||
@@ -19,21 +19,27 @@ def find_lib_path():
|
||||
List of all found library path to xgboost
|
||||
"""
|
||||
curr_path = os.path.dirname(os.path.abspath(os.path.expanduser(__file__)))
|
||||
# make pythonpack hack: copy this directory one level upper for setup.py
|
||||
dll_path = [curr_path, os.path.join(curr_path, '../../lib/'),
|
||||
os.path.join(curr_path, './lib/'),
|
||||
os.path.join(sys.prefix, 'xgboost')]
|
||||
dll_path = [
|
||||
# normal, after installation `lib` is copied into Python package tree.
|
||||
os.path.join(curr_path, 'lib'),
|
||||
# editable installation, no copying is performed.
|
||||
os.path.join(curr_path, os.path.pardir, os.path.pardir, 'lib'),
|
||||
]
|
||||
if sys.platform == 'win32':
|
||||
if platform.architecture()[0] == '64bit':
|
||||
dll_path.append(os.path.join(curr_path, '../../windows/x64/Release/'))
|
||||
# hack for pip installation when copy all parent source directory here
|
||||
dll_path.append(
|
||||
os.path.join(curr_path, '../../windows/x64/Release/'))
|
||||
# hack for pip installation when copy all parent source
|
||||
# directory here
|
||||
dll_path.append(os.path.join(curr_path, './windows/x64/Release/'))
|
||||
else:
|
||||
dll_path.append(os.path.join(curr_path, '../../windows/Release/'))
|
||||
# hack for pip installation when copy all parent source directory here
|
||||
# hack for pip installation when copy all parent source
|
||||
# directory here
|
||||
dll_path.append(os.path.join(curr_path, './windows/Release/'))
|
||||
dll_path = [os.path.join(p, 'xgboost.dll') for p in dll_path]
|
||||
elif sys.platform.startswith('linux') or sys.platform.startswith('freebsd'):
|
||||
elif sys.platform.startswith('linux') or sys.platform.startswith(
|
||||
'freebsd'):
|
||||
dll_path = [os.path.join(p, 'libxgboost.so') for p in dll_path]
|
||||
elif sys.platform == 'darwin':
|
||||
dll_path = [os.path.join(p, 'libxgboost.dylib') for p in dll_path]
|
||||
@@ -42,10 +48,13 @@ def find_lib_path():
|
||||
|
||||
lib_path = [p for p in dll_path if os.path.exists(p) and os.path.isfile(p)]
|
||||
|
||||
# From github issues, most of installation errors come from machines w/o compilers
|
||||
# XGBOOST_BUILD_DOC is defined by sphinx conf.
|
||||
if not lib_path and not os.environ.get('XGBOOST_BUILD_DOC', False):
|
||||
raise XGBoostLibraryNotFound(
|
||||
'Cannot find XGBoost Library in the candidate path, ' +
|
||||
'did you install compilers and run build.sh in root path?\n'
|
||||
'List of candidates:\n' + ('\n'.join(dll_path)))
|
||||
link = 'https://xgboost.readthedocs.io/en/latest/build.html'
|
||||
msg = 'Cannot find XGBoost Library in the candidate path. ' + \
|
||||
'List of candidates:\n- ' + ('\n- '.join(dll_path)) + \
|
||||
'\nXGBoost Python package path: ' + curr_path + \
|
||||
'\nsys.prefix: ' + sys.prefix + \
|
||||
'\nSee: ' + link + ' for installing XGBoost.'
|
||||
raise XGBoostLibraryNotFound(msg)
|
||||
return lib_path
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../make
|
||||
@@ -1 +0,0 @@
|
||||
../../rabit
|
||||
@@ -1 +0,0 @@
|
||||
../../src
|
||||
Reference in New Issue
Block a user