Prints fixing in setup.py

This commit is contained in:
Samer Afach 2017-01-12 20:49:24 +01:00
parent dc18dadb4c
commit 406913ce24
1 changed files with 53 additions and 43 deletions

View File

@ -24,7 +24,8 @@ temp_dir = tempfile.gettempdir()
def _print_error(msg):
sys.stderr.write("\n\nERROR: " + msg + "\n\n\n")
sys.stderr.write("\n\n" + error_color_start + "ERROR: " + msg + color_end + " \n\n\n ")
sys.stderr.flush()
def which(program):
@ -73,7 +74,7 @@ def deal_with_error_code(err_code, operation_name):
if err_code != 0:
_print_error("A non-zero error code was returned at operation: " +
str(operation_name) + ". Code returned is: " +
str(err_code) + ". Exiting!\n")
str(err_code) + ". Exiting!")
sys.exit(1)
@ -104,6 +105,7 @@ def clone_git_repository(dir, repos_link):
print("Done cloning repository: " + repos_link)
question_color_start = "\x1b[0;37;44m"
error_color_start = "\x1b[0;37;41m"
color_end = "\x1b[0m"
def ask_openblas_optimization_level():
@ -118,7 +120,8 @@ def ask_openblas_optimization_level():
print("3) -Ofast")
print("4) Keep the default")
print("5) Skip compiling OpenBLAS and assume it exists in the system")
sys.stdout.write("Please enter the option number: ")
print(question_color_start + "Please enter the option number: " + color_end)
sys.stdout.flush()
option_chosen = input()
if option_chosen.replace(" ", "") == '1':
return "-O2"
@ -131,7 +134,7 @@ def ask_openblas_optimization_level():
elif option_chosen.replace(" ", "") == '5':
return "SKIPOPENBLAS"
else:
raise IndexError("Error: An unknown option was entered")
raise IndexError(error_color_start + "Error: An unknown option was entered" + color_end)
def ask_spintrum_optimization_level():
@ -146,7 +149,8 @@ def ask_spintrum_optimization_level():
print("3) -O2")
print("4) -O3")
print("5) -Ofast")
sys.stdout.write("Please enter the option number: ")
print(question_color_start + "Please enter the option number: " + color_end)
sys.stdout.flush()
option_chosen = input("")
if option_chosen.replace(" ", "") == '1':
return "-g"
@ -159,7 +163,7 @@ def ask_spintrum_optimization_level():
elif option_chosen.replace(" ", "") == '5':
return "-Ofast"
else:
raise IndexError("Error: An unknown option was entered")
raise IndexError(error_color_start + "Error: An unknown option was entered" + color_end)
def recursive_glob(rootdir, pattern='*'):
@ -169,12 +173,52 @@ def recursive_glob(rootdir, pattern='*'):
if fnmatch.fnmatch(filename, pattern)]
return lst
def get_openblas():
openblas_dir = "3rdparty/OpenBLAS"
openblas_dir_install = "spintrum/OpenBLAS_install"
openblas_full_path = os.path.join(start_working_dir, openblas_dir)
openblas_full_path_install = os.path.join(start_working_dir, openblas_dir_install)
openblas_git = "https://github.com/xianyi/OpenBLAS.git"
openblas_target_optimization = ask_openblas_optimization_level()
if openblas_target_optimization != "SKIPOPENBLAS":
clone_git_repository(openblas_full_path, openblas_git)
if openblas_target_optimization != "":
if not os.path.isdir(openblas_dir):
_print_error("Cannot open expected OpenBLAS directory " + openblas_dir)
sys.exit(1)
makefiles_to_glob = os.path.join(openblas_dir, "Makefile*")
makefiles = glob.glob(makefiles_to_glob)
print("Number of files found: " + str(len(makefiles)))
for f in makefiles:
print(f)
inplace_change(f, "-O2", openblas_target_optimization)
# make openblas
os.chdir(openblas_dir)
make_openblas_err_code = subprocess.call(["make"], shell=True)
deal_with_error_code(make_openblas_err_code, "Making OpenBLAS")
# install openblas
install_openblas_err_code = subprocess.call(
["make PREFIX=" + openblas_full_path_install +
" install"], shell=True)
deal_with_error_code(install_openblas_err_code, "Installing OpenBLAS")
os.chdir(start_working_dir) # restore working dir
dir_name = "spintrum"
lib_file = "lib/libspintrum.so"
class DependenciesBuilder(_build):
def run(self):
sys.stdout.flush()
sys.stderr.flush()
if sys.platform.startswith('win'):
_print_error("You cannot build Spintrum on Windows. It is not supported.")
@ -186,41 +230,7 @@ class DependenciesBuilder(_build):
print("Building Spintrum C/C++ extension prerequisites")
########## get OpenBLAS
openblas_dir = "3rdparty/OpenBLAS"
openblas_dir_install = "spintrum/OpenBLAS_install"
openblas_full_path = os.path.join(start_working_dir, openblas_dir)
openblas_full_path_install = os.path.join(start_working_dir, openblas_dir_install)
openblas_git = "https://github.com/xianyi/OpenBLAS.git"
openblas_target_optimization = ask_openblas_optimization_level()
if openblas_target_optimization != "SKIPOPENBLAS":
clone_git_repository(openblas_full_path, openblas_git)
if openblas_target_optimization != "":
if not os.path.isdir(openblas_dir):
_print_error("Cannot open expected OpenBLAS directory " + openblas_dir + "\n")
sys.exit(1)
makefiles_to_glob = os.path.join(openblas_dir, "Makefile*")
makefiles = glob.glob(makefiles_to_glob)
print("Number of files found: " + str(len(makefiles)))
for f in makefiles:
print(f)
inplace_change(f, "-O2", openblas_target_optimization)
# make openblas
os.chdir(openblas_dir)
make_openblas_err_code = subprocess.call(["make"], shell=True)
deal_with_error_code(make_openblas_err_code, "Making OpenBLAS")
# install openblas
install_openblas_err_code = subprocess.call(
["make PREFIX=" + openblas_full_path_install +
" install"], shell=True)
deal_with_error_code(install_openblas_err_code, "Installing OpenBLAS")
os.chdir(start_working_dir) #restore working dir
get_openblas()
############## get Polymath
polymath_git = "https://git.afach.de/samerafach/Polymath"
@ -230,12 +240,12 @@ class DependenciesBuilder(_build):
############## build spintrum
spintrum_optimization_target = ask_spintrum_optimization_level()
print("Building Spintrum")
print("Building Spintrum extension...")
err_code = subprocess.call(["cmake . -DPythonInstallation=1 -DOptimizationLevel=" + spintrum_optimization_target], shell=True)
deal_with_error_code(err_code, "CMaking spintrum")
err_code = subprocess.call(["make"], shell=True)
deal_with_error_code(err_code, "Making spintrum")
print("Done building spintrum.")
print("Done building spintrum extension.")
setup(name='spintrum',