Skip to content
This repository was archived by the owner on Mar 13, 2026. It is now read-only.

Commit 470db2b

Browse files
authored
Merge pull request #502 from uilianries/bugfix/build-policy
Fix build policies
2 parents e145b4c + 292a051 commit 470db2b

4 files changed

Lines changed: 36 additions & 16 deletions

File tree

cpt/packager.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -240,16 +240,11 @@ def __init__(self, username=None, channel=None, runner=None,
240240
mingw_configurations, archs, allow_gcc_minors,
241241
build_types, options, cppstds)
242242

243-
build_policy = (build_policy or
243+
self.build_policy = (build_policy or
244244
self.ci_manager.get_commit_build_policy() or
245-
os.getenv("CONAN_BUILD_POLICY", None))
246-
247-
# ensure backward compatibility
248-
# build_policy can be list or a string https://github.com/conan-io/conan-package-tools/issues/394
249-
if build_policy and not isinstance(build_policy, list):
250-
build_policy = [x.strip() for x in build_policy.split(',')]
251-
252-
self.build_policy = build_policy
245+
split_colon_env("CONAN_BUILD_POLICY"))
246+
if isinstance(self.build_policy, list):
247+
self.build_policy = ",".join(self.build_policy)
253248

254249
self.sudo_docker_command = ""
255250
if "CONAN_DOCKER_USE_SUDO" in os.environ:

cpt/run_in_docker.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ def run():
2626
upload_only_recipe = os.getenv("CPT_UPLOAD_ONLY_RECIPE")
2727
uploader = Uploader(conan_api, remotes_manager, auth_manager, printer, upload_retry)
2828
build_policy = unscape_env(os.getenv("CPT_BUILD_POLICY"))
29-
if build_policy:
30-
build_policy = build_policy.split(",")
3129
test_folder = unscape_env(os.getenv("CPT_TEST_FOLDER"))
3230
reference = ConanFileReference.loads(os.getenv("CONAN_REFERENCE"))
3331

cpt/runner.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ def __init__(self, profile_abs_path, reference, conan_api, uploader,
3030
self._profile_abs_path = profile_abs_path
3131
self._reference = reference
3232
self._exclude_vcvars_precommand = exclude_vcvars_precommand
33-
self._build_policy = build_policy
33+
self._build_policy = build_policy.split(",") if \
34+
isinstance(build_policy, str) else \
35+
build_policy
36+
self._build_policy = self._build_policy or []
3437
self._runner = PrintRunner(runner or os.system, self.printer)
3538
self._test_folder = test_folder
3639
self._config_url = config_url
@@ -187,7 +190,7 @@ def __init__(self, profile_text, base_profile_text, base_profile_name, reference
187190
self._upload_only_recipe = upload_only_recipe
188191
self._reference = reference
189192
self._conan_pip_package = conan_pip_package
190-
self._build_policy = build_policy
193+
self._build_policy = build_policy or []
191194
self._docker_image = docker_image
192195
self._always_update_conan_in_docker = always_update_conan_in_docker
193196
self._docker_image_skip_update = docker_image_skip_update
@@ -335,7 +338,7 @@ def get_env_vars(self):
335338
ret["CPT_UPLOAD_ENABLED"] = self._upload
336339
ret["CPT_UPLOAD_RETRY"] = self._upload_retry
337340
ret["CPT_UPLOAD_ONLY_RECIPE"] = self._upload_only_recipe
338-
ret["CPT_BUILD_POLICY"] = escape_env(self._build_policy.join(",")) if self._build_policy else escape_env(self._build_policy)
341+
ret["CPT_BUILD_POLICY"] = escape_env(self._build_policy)
339342
ret["CPT_TEST_FOLDER"] = escape_env(self._test_folder)
340343
ret["CPT_CONFIG_URL"] = escape_env(self._config_url)
341344
ret["CPT_CONFIG_ARGS"] = escape_env(self._config_args)

cpt/test/integration/basic_test.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ class Pkg(ConanFile):
158158
self.assertTrue(found_in_export_sources)
159159

160160
def test_build_policy(self):
161-
ci_manager = MockCIManager(build_policy="outdated")
161+
ci_manager = MockCIManager()
162162
conanfile = """from conans import ConanFile
163163
import os
164164
@@ -170,6 +170,18 @@ class Pkg(ConanFile):
170170
"""
171171
self.save_conanfile(conanfile)
172172
with tools.environment_append({"CONAN_USERNAME": "lasote"}):
173+
self.packager = ConanMultiPackager(channel="mychannel",
174+
gcc_versions=["6"],
175+
visual_versions=["12"],
176+
archs=["x86", "x86_64"],
177+
build_types=["Release"],
178+
build_policy="outdated",
179+
ci_manager=ci_manager)
180+
self.packager.add_common_builds()
181+
self.packager.run()
182+
183+
with tools.environment_append({"CONAN_USERNAME": "lasote",
184+
"CONAN_BUILD_POLICY": "outdated"}):
173185
self.packager = ConanMultiPackager(channel="mychannel",
174186
gcc_versions=["6"],
175187
visual_versions=["12"],
@@ -180,7 +192,7 @@ class Pkg(ConanFile):
180192
self.packager.run()
181193

182194
def test_multiple_build_policy(self):
183-
ci_manager = MockCIManager(build_policy=["lib", "outdated"])
195+
ci_manager = MockCIManager()
184196
conanfile = """from conans import ConanFile
185197
import os
186198
@@ -192,6 +204,18 @@ class Pkg(ConanFile):
192204
"""
193205
self.save_conanfile(conanfile)
194206
with tools.environment_append({"CONAN_USERNAME": "lasote"}):
207+
self.packager = ConanMultiPackager(channel="mychannel",
208+
gcc_versions=["6"],
209+
visual_versions=["12"],
210+
archs=["x86", "x86_64"],
211+
build_types=["Release"],
212+
build_policy=["cascade", "outdated"],
213+
ci_manager=ci_manager)
214+
self.packager.add_common_builds()
215+
self.packager.run()
216+
217+
with tools.environment_append({"CONAN_USERNAME": "lasote",
218+
"CONAN_BUILD_POLICY": "outdated, lib"}):
195219
self.packager = ConanMultiPackager(channel="mychannel",
196220
gcc_versions=["6"],
197221
visual_versions=["12"],

0 commit comments

Comments
 (0)