aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build_scripts/utils.py32
-rw-r--r--coin_build_instructions.py98
-rw-r--r--coin_test_instructions.py80
3 files changed, 208 insertions, 2 deletions
diff --git a/build_scripts/utils.py b/build_scripts/utils.py
index af40916b7..8ce1b8a51 100644
--- a/build_scripts/utils.py
+++ b/build_scripts/utils.py
@@ -409,7 +409,7 @@ def make_file_writable_by_owner(path):
current_permissions = stat.S_IMODE(os.lstat(path).st_mode)
os.chmod(path, current_permissions | stat.S_IWUSR)
-def rmtree(dirname):
+def rmtree(dirname, ignore=False):
def handleRemoveReadonly(func, path, exc):
excvalue = exc[1]
if func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES:
@@ -417,7 +417,7 @@ def rmtree(dirname):
func(path)
else:
raise
- shutil.rmtree(dirname, ignore_errors=False, onerror=handleRemoveReadonly)
+ shutil.rmtree(dirname, ignore_errors=ignore, onerror=handleRemoveReadonly)
def run_process_output(args, initial_env=None):
if initial_env is None:
@@ -1081,3 +1081,31 @@ def get_python_dict(python_script_path):
print("get_python_dict: Couldn't get dict from python "
"file: {}.".format(python_script_path))
raise
+
+def install_pip_dependencies(env_pip, packages):
+ for p in packages:
+ run_instruction([env_pip, "install", p], "Failed to install " + p)
+
+def get_qtci_virtualEnv(python_ver, host):
+ _pExe = "python"
+ _env = "env" + str(python_ver)
+ env_python = _env + "/bin/python"
+ env_pip = _env + "/bin/pip"
+
+ if host == "Windows":
+ _pExe = "python.exe"
+ if python_ver == "3":
+ _pExe = os.path.join(os.getenv("PYTHON3_PATH"), "python.exe")
+ env_python = _env + "\\Scripts\\python.exe"
+ env_pip = _env + "\\Scripts\\pip.exe"
+ else:
+ if python_ver == "3":
+ _pExe = "python3"
+ return(_pExe, _env, env_pip, env_python)
+
+def run_instruction(instruction, error):
+ print("Running Coin instruction: " + ' '.join(str(e) for e in instruction))
+ result = subprocess.call(instruction)
+ if result != 0:
+ print("ERROR : " + error)
+ exit(result)
diff --git a/coin_build_instructions.py b/coin_build_instructions.py
new file mode 100644
index 000000000..d8aa74758
--- /dev/null
+++ b/coin_build_instructions.py
@@ -0,0 +1,98 @@
+#############################################################################
+##
+## Copyright (C) 2018 The Qt Company Ltd.
+## Contact: https://www.qt.io/licensing/
+##
+## This file is part of PySide2.
+##
+## $QT_BEGIN_LICENSE:LGPL$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and The Qt Company. For licensing terms
+## and conditions see https://www.qt.io/terms-conditions. For further
+## information use the contact form at https://www.qt.io/contact-us.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 3 as published by the Free Software
+## Foundation and appearing in the file LICENSE.LGPL3 included in the
+## packaging of this file. Please review the following information to
+## ensure the GNU Lesser General Public License version 3 requirements
+## will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+##
+## GNU General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU
+## General Public License version 2.0 or (at your option) the GNU General
+## Public license version 3 or any later version approved by the KDE Free
+## Qt Foundation. The licenses are as published by the Free Software
+## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+## included in the packaging of this file. Please review the following
+## information to ensure the GNU General Public License requirements will
+## be met: https://www.gnu.org/licenses/gpl-2.0.html and
+## https://www.gnu.org/licenses/gpl-3.0.html.
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+from build_scripts.utils import has_option
+from build_scripts.utils import option_value
+from build_scripts.utils import install_pip_dependencies
+from build_scripts.utils import get_qtci_virtualEnv
+from build_scripts.utils import run_instruction
+from build_scripts.utils import rmtree
+import os
+
+# Values must match COIN thrift
+CI_HOST_OS = option_value("os")
+CI_TARGET_OS = option_value("targetOs")
+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_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")
+
+
+def call_setup(python_ver):
+ _pExe, _env, env_pip, env_python = get_qtci_virtualEnv(python_ver, CI_HOST_OS)
+ rmtree(_env, True)
+ run_instruction(["virtualenv", "-p", _pExe, _env], "Failed to create virtualenv")
+ install_pip_dependencies(env_pip, ["six", "wheel"])
+ cmd = [env_python, "setup.py"]
+ # With 5.11 CI will create two sets of release binaries, one with msvc 2015 and one with msvc 2017
+ # we shouldn't release the 2015 version.
+ if CI_RELEASE_CONF and CI_COMPILER not in ["MSVC2017"]:
+ cmd += ["bdist_wheel", "--standalone"]
+ else:
+ cmd += ["build"]
+ if CI_HOST_OS == "MacOS":
+ cmd += ["--qmake=" + CI_ENV_INSTALL_DIR + "/bin/qmake"]
+ elif CI_HOST_OS == "Windows":
+
+ cmd += ["--qmake=" + CI_ENV_INSTALL_DIR + "\\bin\\qmake.exe",
+ "--openssl=C:\\openssl\\bin\\openssl"]
+ else:
+ cmd += ["--qmake=" + CI_ENV_INSTALL_DIR + "/bin/qmake"]
+ cmd += ["--build-tests",
+ "--jobs=4",
+ "--verbose-build",
+ "--snapshot-build"]
+
+ run_instruction(cmd, "Failed to run setup.py")
+
+def run_build_instructions():
+ # Uses default python, hopefully we have python2 installed on all hosts
+ call_setup("")
+
+ # 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")
+
+if __name__ == "__main__":
+ run_build_instructions()
diff --git a/coin_test_instructions.py b/coin_test_instructions.py
new file mode 100644
index 000000000..eb6ee2ad1
--- /dev/null
+++ b/coin_test_instructions.py
@@ -0,0 +1,80 @@
+#############################################################################
+##
+## Copyright (C) 2018 The Qt Company Ltd.
+## Contact: https://www.qt.io/licensing/
+##
+## This file is part of PySide2.
+##
+## $QT_BEGIN_LICENSE:LGPL$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and The Qt Company. For licensing terms
+## and conditions see https://www.qt.io/terms-conditions. For further
+## information use the contact form at https://www.qt.io/contact-us.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 3 as published by the Free Software
+## Foundation and appearing in the file LICENSE.LGPL3 included in the
+## packaging of this file. Please review the following information to
+## ensure the GNU Lesser General Public License version 3 requirements
+## will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+##
+## GNU General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU
+## General Public License version 2.0 or (at your option) the GNU General
+## Public license version 3 or any later version approved by the KDE Free
+## Qt Foundation. The licenses are as published by the Free Software
+## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+## included in the packaging of this file. Please review the following
+## information to ensure the GNU General Public License requirements will
+## be met: https://www.gnu.org/licenses/gpl-2.0.html and
+## https://www.gnu.org/licenses/gpl-3.0.html.
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+from build_scripts.utils import has_option
+from build_scripts.utils import option_value
+from build_scripts.utils import install_pip_dependencies
+from build_scripts.utils import get_qtci_virtualEnv
+from build_scripts.utils import run_instruction
+from build_scripts.utils import rmtree
+import os
+
+# Values must match COIN thrift
+CI_HOST_OS = option_value("os")
+CI_TARGET_OS = option_value("targetOs")
+CI_HOST_OS_VER = option_value("osver")
+CI_ENV_INSTALL_DIR = option_value("instdir")
+CI_ENV_AGENT_DIR = option_value("agentdir") or "."
+CI_COMPILER = option_value("compiler")
+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")
+
+def call_testrunner(python_ver, buildnro):
+ _pExe, _env, env_pip, env_python = get_qtci_virtualEnv(python_ver, CI_HOST_OS)
+ rmtree(_env, True)
+ run_instruction(["virtualenv", "-p", _pExe, _env], "Failed to create virtualenv")
+ install_pip_dependencies(env_pip, ["six", "wheel"])
+ cmd = [env_python, "testrunner.py", "test",
+ "--blacklist", "build_history/blacklist.txt",
+ "--buildno=" + buildnro]
+ run_instruction(cmd, "Failed to run testrunner.py")
+
+def run_test_instructions():
+ os.chdir(CI_ENV_AGENT_DIR)
+ call_testrunner("", "0")
+ # We know that second build was with python3
+ if CI_RELEASE_CONF and CI_HOST_OS_VER not in ["RHEL_6_6"]:
+ call_testrunner("3", "1")
+
+if __name__ == "__main__":
+ run_test_instructions()