From f3b87fead2d4cb2a790f0709080551e252d5a46c Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Thu, 21 Jun 2018 21:36:20 +0200 Subject: Associate Coin snapshot builds with Coin integration IDs This change adds a new setup.py option called --package-timestamp which allows setting the "dev" part of the version number of a snapshot package. It also modifies coin_build_instructions.py to set the package timestamp to the value of the Coin integration ID. This has a couple of benefits: 1) We can look up the build and test logs of a specific package on testresults.qt.io. This can also be looked up for non-snapshot builds, the "timestamp = Coin integration ID" can also be found in the generated __init__.py file. 2) All the different platform packages within one integration will have the same timestamp, which allows pinning snapshot packages inside a pipenv Pipfile. 3) It's easier to figure out which packages were built as part of the same Coin integration. Task-number: PYSIDE-680 Change-Id: Idb2f2d2313cee213a5d742f88b60315a4e505250 Reviewed-by: Qt CI Bot Reviewed-by: Friedemann Kleint Reviewed-by: Cristian Maureira-Fredes --- build_scripts/main.py | 5 +++++ build_scripts/options.py | 1 + coin_build_instructions.py | 3 +++ setup.py | 4 ++++ 4 files changed, 13 insertions(+) diff --git a/build_scripts/main.py b/build_scripts/main.py index b424aa8e4..579cfeae3 100644 --- a/build_scripts/main.py +++ b/build_scripts/main.py @@ -51,6 +51,11 @@ setup_py_path = os.path.join(setup_script_dir, "setup.py") @memoize def get_package_timestamp(): + """ In a Coin CI build the returned timestamp will be the + Coin integration id timestamp. For regular builds it's + just the current timestamp or a user provided one.""" + if OPTION_PACKAGE_TIMESTAMP: + return OPTION_PACKAGE_TIMESTAMP return int(time.time()) @memoize diff --git a/build_scripts/options.py b/build_scripts/options.py index d7174feff..fd8b0718e 100644 --- a/build_scripts/options.py +++ b/build_scripts/options.py @@ -81,3 +81,4 @@ OPTION_VERBOSE_BUILD = has_option("verbose-build") OPTION_SANITIZE_ADDRESS = has_option("sanitize-address") OPTION_SNAPSHOT_BUILD = has_option("snapshot-build") OPTION_LIMITED_API = option_value("limited-api") +OPTION_PACKAGE_TIMESTAMP = option_value("package-timestamp") diff --git a/coin_build_instructions.py b/coin_build_instructions.py index c9d59a0a6..aee0bf265 100644 --- a/coin_build_instructions.py +++ b/coin_build_instructions.py @@ -55,6 +55,7 @@ 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_FEATURES = [] _ci_features = option_value("features") if _ci_features is not None: @@ -118,6 +119,8 @@ def call_setup(python_ver): if is_snapshot_build(): cmd += ["--snapshot-build"] + cmd += ["--package-timestamp=" + CI_INTEGRATION_ID] + run_instruction(cmd, "Failed to run setup.py") def run_build_instructions(): diff --git a/setup.py b/setup.py index a24e656e5..42d74ca77 100644 --- a/setup.py +++ b/setup.py @@ -140,6 +140,10 @@ using `setup.py build`: --skip-docs skip the documentation generation. --limited-api=yes|no default yes if applicable Set or clear the limited API flag. Ignored for Python 2. + --package-timestamp allows specifying the timestamp that will be + used as part of the version number for a snapshot package. + For example given --package-timestamp=1529646276 + the package version will be 5.x.y.dev1529646276. REQUIREMENTS: -- cgit v1.2.3