示例#1
0
    def add_pre_build_commands(cls,
                               executor,
                               variant,
                               build_type,
                               install,
                               build_path,
                               install_path=None):
        """Execute pre_build_commands if present.
        """
        from rez.utils.data_utils import RO_AttrDictWrapper

        # bind build-related values into a 'build' namespace
        build_ns = {
            "build_type": build_type.name,
            "install": install,
            "build_path": build_path,
            "install_path": install_path
        }

        # execute pre_build_commands()
        pre_build_commands = getattr(variant, "pre_build_commands")

        if pre_build_commands:
            with executor.reset_globals():
                executor.bind("this", variant)
                executor.bind("build", RO_AttrDictWrapper(build_ns))

                executor.execute_code(pre_build_commands)
示例#2
0
            def _pre_test_commands(executor):
                # run package.py:pre_test_commands() if present
                pre_test_commands = getattr(variant, "pre_test_commands")
                if not pre_test_commands:
                    return

                test_ns = {"name": test_name}

                with executor.reset_globals():
                    executor.bind("this", variant)
                    executor.bind("test", RO_AttrDictWrapper(test_ns))
                    executor.execute_code(pre_test_commands)
示例#3
0
    def add_standard_build_actions(cls,
                                   executor,
                                   context,
                                   variant,
                                   build_type,
                                   install,
                                   build_path,
                                   install_path=None):
        """Perform build actions common to every build system.

        This includes:
        - Setting a standard list on env-vars;
        - Executing pre_build_commands(), if the package has one.
        """
        from rez.utils.data_utils import RO_AttrDictWrapper

        # set env vars
        env_vars = cls.get_standard_vars(context=context,
                                         variant=variant,
                                         build_type=build_type,
                                         install=install,
                                         build_path=build_path,
                                         install_path=install_path)

        for var, value in env_vars.items():
            executor.env[var] = value

        # bind build-related values into a 'build' namespace
        build_ns = {
            "build_type": build_type.name,
            "install": install,
            "build_path": build_path,
            "install_path": install_path
        }

        # execute pre_build_commands()
        pre_build_commands = getattr(variant, "pre_build_commands")

        if pre_build_commands:
            with executor.reset_globals():
                executor.bind("this", variant)
                executor.bind("build", RO_AttrDictWrapper(build_ns))

                executor.execute_code(pre_build_commands)