diff options
Diffstat (limited to 'coin_build_instructions.py')
-rw-r--r-- | coin_build_instructions.py | 61 |
1 files changed, 35 insertions, 26 deletions
diff --git a/coin_build_instructions.py b/coin_build_instructions.py index 9a7d6272c..e35bcda3b 100644 --- a/coin_build_instructions.py +++ b/coin_build_instructions.py @@ -39,14 +39,14 @@ from build_scripts.options import has_option from build_scripts.options import option_value from build_scripts.utils import install_pip_dependencies -from build_scripts.utils import install_pip_wheel_package from build_scripts.utils import get_qtci_virtualEnv from build_scripts.utils import run_instruction from build_scripts.utils import rmtree from build_scripts.utils import get_python_dict -from build_scripts.utils import acceptCITestConfiguration from build_scripts.utils import get_ci_qmake_path import os +import datetime +import calendar # Values must match COIN thrift CI_HOST_OS = option_value("os") @@ -57,13 +57,18 @@ CI_HOST_OS_VER = option_value("osVer") CI_ENV_INSTALL_DIR = option_value("instdir") CI_ENV_AGENT_DIR = option_value("agentdir") CI_COMPILER = option_value("compiler") -CI_INTEGRATION_ID = option_value("coinIntegrationId") +CI_INTEGRATION_ID = option_value("coinIntegrationId") or str(calendar.timegm(datetime.datetime.now().timetuple())) CI_FEATURES = [] _ci_features = option_value("features") if _ci_features is not None: for f in _ci_features.split(', '): CI_FEATURES.append(f) CI_RELEASE_CONF = has_option("packaging") +CI_TEST_PHASE = option_value("phase") +if CI_TEST_PHASE not in ["ALL", "BUILD", "WHEEL"]: + CI_TEST_PHASE = "ALL" + + def get_current_script_path(): """ Returns the absolute path containing this script. """ @@ -96,21 +101,20 @@ def is_snapshot_build(): return True return False -def call_setup(python_ver): +def call_setup(python_ver, phase): _pExe, _env, env_pip, env_python = get_qtci_virtualEnv(python_ver, CI_HOST_OS, CI_HOST_ARCH, CI_TARGET_ARCH) - rmtree(_env, True) - run_instruction(["virtualenv", "-p", _pExe, _env], "Failed to create virtualenv") - install_pip_dependencies(env_pip, ["pip", "numpy", "setuptools", "sphinx", "six"]) - install_pip_wheel_package(env_pip) + if phase in ["BUILD"]: + rmtree(_env, True) + run_instruction(["virtualenv", "-p", _pExe, _env], "Failed to create virtualenv") + install_pip_dependencies(env_pip, ["pip", "numpy", "setuptools", "sphinx", "six", "wheel"]) cmd = [env_python, "-u", "setup.py"] - if CI_RELEASE_CONF: - cmd += ["bdist_wheel", "--standalone"] - else: - cmd += ["build"] - qmake_path = get_ci_qmake_path(CI_ENV_INSTALL_DIR, CI_HOST_OS) - cmd.append(qmake_path) + if phase in ["BUILD"]: + cmd += ["build", "--standalone", "--skip-packaging"] + elif phase in ["WHEEL"] or CI_RELEASE_CONF: + cmd += ["bdist_wheel", "--reuse-build", "--standalone", "--skip-cmake", "--skip-make-install", "--only-package"] + cmd += ["--build-tests", "--parallel=4", "--verbose-build"] @@ -119,6 +123,9 @@ def call_setup(python_ver): if is_snapshot_build(): cmd += ["--snapshot-build"] + qmake_path = get_ci_qmake_path(CI_ENV_INSTALL_DIR, CI_HOST_OS) + cmd.append(qmake_path) + # Due to certain older CMake versions generating very long paths # (at least with CMake 3.6.2) when using the export() function, # pass the shorter paths option on Windows so we don't hit @@ -129,25 +136,27 @@ def call_setup(python_ver): cmd += ["--package-timestamp=" + CI_INTEGRATION_ID] env = os.environ - run_instruction(cmd, "Failed to run setup.py", initial_env=env) + run_instruction(cmd, "Failed to run setup.py for build", initial_env=env) -def run_build_instructions(): - if not acceptCITestConfiguration(CI_HOST_OS, CI_HOST_OS_VER, CI_TARGET_ARCH, CI_COMPILER): - exit() - # Remove some environment variables that impact cmake - for env_var in ['CC', 'CXX']: - if os.environ.get(env_var): - del os.environ[env_var] +def run_build_instructions(phase): # Uses default python, hopefully we have python2 installed on all hosts # Skip building using Python 2 on Windows, because of different MSVC C runtimes (VS2008 vs VS2015+) if CI_HOST_OS != "Windows": - call_setup("") - + call_setup("", phase) # In case of packaging build, we have to build also python3 wheel if CI_RELEASE_CONF and CI_HOST_OS_VER not in ["RHEL_6_6"]: - call_setup("3") + call_setup("3", phase) if __name__ == "__main__": - run_build_instructions() + # Remove some environment variables that impact cmake + for env_var in ['CC', 'CXX']: + if os.environ.get(env_var): + del os.environ[env_var] + + if CI_TEST_PHASE in ["ALL", "BUILD"]: + run_build_instructions("BUILD") + + if CI_TEST_PHASE in ["ALL", "WHEEL"]: + run_build_instructions("WHEEL") |