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
예제 #2
0
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)
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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
예제 #6
0
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)
예제 #7
0
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)
예제 #9
0
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
예제 #10
0
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()
예제 #11
0
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)
예제 #13
0
#!/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)
예제 #15
0
#!/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()
예제 #16
0
#!/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()
예제 #17
0
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
예제 #18
0
#!/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()
예제 #19
0
#!/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()
예제 #20
0
파일: build.py 프로젝트: conanos/openh264
#!/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()
예제 #21
0
#!/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()
예제 #22
0
    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)
예제 #23
0
def main():
    builder = build_template_default.get_builder()
    builder.run()
예제 #24
0
#!/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()
예제 #25
0
def test_build_policy_not_set():
    builder = build_template_default.get_builder()
    assert None == builder.build_policy
예제 #26
0
파일: build.py 프로젝트: cajus/conan-qt
#!/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()
예제 #27
0
def test_build_policy_set_in_args():
    builder = build_template_default.get_builder(build_policy='missing')
    assert 'missing' == builder.build_policy
예제 #28
0
#!/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()
예제 #29
0
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
예제 #30
0
#!/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()
예제 #31
0
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