def get_builder(shared_option_name=None, pure_c=False, dll_with_static_runtime=False, build_policy=None, cwd=None, **kwargs): recipe = build_shared.get_recipe_path(cwd) # Bincrafters default is to upload only when stable, but boost is an exception # Empty string allows boost packages upload for testing branch with tools.environment_append({"CONAN_UPLOAD_ONLY_WHEN_STABLE": ""}): shared_option_name = False if shared_option_name is None and not build_shared.is_shared( ) else shared_option_name builder = build_template_default.get_builder( shared_option_name=shared_option_name, pure_c=pure_c, dll_with_static_runtime=dll_with_static_runtime, build_policy=build_policy, cwd=cwd, **kwargs) builder.builds = map( lambda item: add_boost_shared(item, recipe=recipe), builder.items) return builder
def get_builder(args=None, pure_c=True): # Bincrafters default is to upload only when stable, but boost is an exception # Empty string allows boost packages upload for testing branch os.environ["CONAN_UPLOAD_ONLY_WHEN_STABLE"] = "" return build_template_default.get_builder(args, pure_c)
def test_format_remote(set_remote_address): builder = build_template_default.get_builder() remote = builder.remotes_manager._remotes[0] assert 1 == len(builder.remotes_manager._remotes) assert "remotefoo" == remote.name assert "https://api.bintray.com/conan/foo/bar" == remote.url assert False == remote.use_ssl
def test_default_remote_address(set_upload_address): builder = build_template_default.get_builder() assert 2 == len(builder.remotes_manager._remotes) remote = builder.remotes_manager._remotes[0] assert "remotefoo" == remote.name assert "https://api.bintray.com/conan/foo/bar" == remote.url remote = builder.remotes_manager._remotes[1] assert "upload_repo" == remote.name assert "https://api.bintray.com/conan/bincrafters/public-conan" == remote.url
def test_format_mixed_remotes(set_mixed_remote_address): builder = build_template_default.get_builder() assert 2 == len(builder.remotes_manager._remotes) remote = builder.remotes_manager._remotes[0] assert "remotefoo" == remote.name assert "https://api.bintray.com/conan/foo/bar" == remote.url assert False == remote.use_ssl remote = builder.remotes_manager._remotes[1] assert "remote1" == remote.name assert "https://api.bintray.com/conan/qux/baz" == remote.url assert True == remote.use_ssl
def test_build_template_default_minimal(set_minimal_build_environment): builder = build_template_default.get_builder() for settings, options, env_vars, build_requires, reference in builder.items: assert "foobar:shared" in options assert "x86_64" == settings['arch'] if platform.system() == "Linux": assert 2 == len(builder.items) elif platform.system() == "Windows": assert 3 == len(builder.items) elif platform.system() == "Darwin": assert 2 == len(builder.items)
def test_build_template_default_non_pure_c(): builder = build_template_default.get_builder(pure_c=False) for settings, options, env_vars, build_requires, reference in builder.items: assert "foobar:shared" in options assert "x86_64" == settings['arch'] if platform.system() == "Linux": assert 8 == len(builder.items) elif platform.system() == "Windows": assert 6 == len(builder.items) elif platform.system() == "Darwin": assert 4 == len(builder.items)
def get_builder(args=None, shared_option_name=None, pure_c=False, dll_with_static_runtime=False): # Bincrafters default is to upload only when stable, but boost is an exception # Empty string allows boost packages upload for testing branch os.environ["CONAN_UPLOAD_ONLY_WHEN_STABLE"] = "" return build_template_default.get_builder( args=args, shared_option_name="boost_*:shared", pure_c=pure_c, dll_with_static_runtime=dll_with_static_runtime)
def test_build_template_default(): builder = build_template_default.get_builder() for settings, options, env_vars, build_requires, reference in builder.items: assert "foobar:shared" in options if platform.system() == "Darwin": assert "x86_64" == settings['arch'] if platform.system() == "Linux": assert 4 == len(builder.items) elif platform.system() == "Windows": assert 6 == len(builder.items) elif platform.system() == "Darwin": assert 4 == len(builder.items) assert True == builder.upload_only_when_stable
def run_autodetect(): has_custom_build_py, custom_build_py_path = is_custom_build_py_existing() if has_custom_build_py: printer.print_message("Custom build.py detected. Executing ...") _flush_output() subprocess.run(["python", "{}".format(custom_build_py_path)], check=True) return recipe_is_installer = is_installer() printer.print_message("Is the package an installer for executable(s)? {}" .format(str(recipe_is_installer))) if not recipe_is_installer: recipe_is_unconditional_header_only = is_unconditional_header_only() printer.print_message("Is the package header only? {}" .format(str(recipe_is_unconditional_header_only))) if not recipe_is_unconditional_header_only: recipe_is_conditional_header_only = is_conditional_header_only() printer.print_message("Is the package conditionally header only ('header_only' option)? {}" .format(str(recipe_is_conditional_header_only))) recipe_is_pure_c = is_pure_c() printer.print_message("Is the package C-only? {}".format(str(recipe_is_pure_c))) _flush_output() if recipe_is_installer: arch = os.getenv("ARCH", "x86_64") builder = build_template_installer.get_builder() builder.add({"os": get_os(), "arch_build": arch, "arch": arch}, {}, {}, {}) builder.run() elif recipe_is_unconditional_header_only: builder = build_template_header_only.get_builder() builder.run() else: builder = build_template_default.get_builder(pure_c=recipe_is_pure_c) builder.run()
def build(): builder = build_template_default.get_builder() items = [] for item in builder.items: if not item.options["plugin.node:shared"]: continue # Visual Sutido 2017 only if not (platform.system() == "Windows" and item.settings["compiler"] == "Visual Studio" and item.settings["compiler.version"] == '15' ): continue # skip mingw cross-builds if not (platform.system() == "Windows" and item.settings["compiler"] == "gcc" and item.settings["arch"] == "x86"): items.append(item) builder.items = items builder.run()
def test_build_template_default_non_pure_c(): builder = build_template_default.get_builder(pure_c=False) for settings, options, env_vars, build_requires, reference in builder.items: assert "foobar:shared" in options assert 16 == len(builder.items)
#!/usr/bin/env python # -*- coding: utf-8 -*- from bincrafters import build_template_default import platform if __name__ == "__main__": builder = build_template_default.get_builder(pure_c=True) if platform.system() == "Windows": for settings, options, env_vars, build_requires, reference in reversed(builder.items): builder.add(settings, {"libevent:with_openssl": False}, env_vars, build_requires) builder.run()
def test_build_template_default(): builder = build_template_default.get_builder() for settings, options, env_vars, build_requires, reference in builder.items: assert "foobar:shared" in options assert 8 == len(builder.items)
#!/usr/bin/env python # -*- coding: utf-8 -*- from bincrafters import build_template_default import platform if __name__ == "__main__": builder = build_template_default.get_builder( shared_option_name=('' if platform.system() == 'Windows' else None)) builder.run()
#!/usr/bin/env python # -*- coding: utf-8 -*- import platform import os from bincrafters import build_template_default def get_shared_option_name(): return False if platform.system() == 'Windows' or \ os.getenv("CONAN_ARCHS") == "x86" else "caf:shared" if __name__ == "__main__": builder = build_template_default.get_builder( pure_c=False, shared_option_name=get_shared_option_name()) builder.run()
def test_format_upload(set_upload_address): builder = build_template_default.get_builder() assert "remotefoo" == builder.remotes_manager.upload_remote_name assert "remotefoo" == builder.remotes_manager._upload.name assert "https://api.bintray.com/conan/foo/bar" == builder.remotes_manager._upload.url assert 'False' == builder.remotes_manager._upload.use_ssl
#!/usr/bin/env python # -*- coding: utf-8 -*- from bincrafters import build_template_default from conans import tools if __name__ == "__main__": shared_option_name = None if tools.os_info.is_linux else False builder = build_template_default.get_builder(shared_option_name=shared_option_name) builder.run()
#!/usr/bin/env python # -*- coding: utf-8 -*- from bincrafters import build_template_default if __name__ == "__main__": builder = build_template_default.get_builder(build_policy="missing") builder.run()
#!/usr/bin/env python # -*- coding: utf-8 -*- from bincrafters import build_template_default, build_shared def add_build_requires(builds): return map(add_required_installers, builds) def add_required_installers(build): installers = ['nasm_installer/2.13.02@bincrafters/stable'] if build_shared.get_os() == "Windows": installers.append('msys2_installer/latest@bincrafters/stable') build.build_requires.update({"*": installers}) return build if __name__ == "__main__": builder = build_template_default.get_builder(pure_c=False) builder.items = add_build_requires(builder.items) builder.run()
#!/usr/bin/env python from bincrafters import build_template_default if __name__ == "__main__": builder = build_template_default.get_builder(pure_c=False, build_policy="missing") builder.run()
docker_entry_script = ".ci/entry.sh" if "CONAN_CONANFILE" in os.environ and os.environ[ "CONAN_CONANFILE"] == "conanfile_installer.py": arch = os.environ["ARCH"] builder = build_template_installer.get_builder( docker_entry_script=docker_entry_script) builder.add( { "os": build_shared.get_os(), "arch_build": arch, "arch": arch }, {}, {}, {}) builder.run() else: builder = build_template_default.get_builder( docker_entry_script=docker_entry_script) # Add build combinations needed for conan-sqlitecpp builds = list(builder.items) new_builds_1 = copy.deepcopy(builds) new_builds_2 = copy.deepcopy(builds) for build in new_builds_1: build.options['sqlite3:threadsafe'] = 2 build.options['sqlite3:enable_column_metadata'] = True for build in new_builds_2: build.options['sqlite3:threadsafe'] = 1 build.options['sqlite3:enable_column_metadata'] = True builder.items.extend(new_builds_1)
def main(): builder = build_template_default.get_builder() builder.run()
#!/usr/bin/env python # -*- coding: utf-8 -*- import platform from bincrafters import build_template_default if __name__ == "__main__": shared_option_name = False if platform.system( ) == "Darwin" else "readline:shared" builder = build_template_default.get_builder( pure_c=True, shared_option_name=shared_option_name) builder.run()
def test_build_policy_not_set(): builder = build_template_default.get_builder() assert None == builder.build_policy
#!/usr/bin/env python # -*- coding: utf-8 -*- from bincrafters import build_template_default if __name__ == "__main__": builder = build_template_default.get_builder(build_policy="outdated") builder.run()
def test_build_policy_set_in_args(): builder = build_template_default.get_builder(build_policy='missing') assert 'missing' == builder.build_policy
#!/usr/bin/env python # -*- coding: utf-8 -*- from bincrafters import build_template_default def _is_shared_msvc_build(build): return not (build.options['benchmark:shared'] == True and build.settings['compiler'] == 'Visual Studio') if __name__ == "__main__": builder = build_template_default.get_builder() builder.builds = filter(_is_shared_msvc_build, builder.items) builder.run()
def test_upload_only_when_stable_builder(set_upload_when_stable_false): builder = build_template_default.get_builder() assert False == builder.upload_only_when_stable
#!/usr/bin/env python from bincrafters import build_template_default, build_template_installer, build_shared import os if __name__ == "__main__": if "CONAN_CONANFILE" in os.environ and os.environ["CONAN_CONANFILE"] == "conanfile_installer.py": arch = os.environ["ARCH"] builder = build_template_installer.get_builder() builder.add({"os": build_shared.get_os(), "arch_build": arch, "arch": arch}, {}, {}, {}) builder.run() else: builder = build_template_default.get_builder(pure_c=True) builder.run()
def test_upload_only_when_stable_parameter(set_upload_when_stable_false): builder = build_template_default.get_builder(upload_only_when_stable=True) assert True == builder.upload_only_when_stable