def main(cli_args):
    builder_args = python_parser.parse_args(cli_args)
    logger.setup_logging(builder_args)
    with ftl_util.Timing("full build"):
        with ftl_util.Timing("builder initialization"):
            python_ftl = python_builder.Python(
                context.Workspace(builder_args.directory),
                builder_args,
                _PYTHON_CACHE_VERSION,
            )
        with ftl_util.Timing("build process for FTL image"):
            python_ftl.Build()
Ejemplo n.º 2
0
 def setUp(self, mock_from):
     mock_from.return_value.__enter__.return_value = None
     self.ctx = context.Memory()
     self.ctx.AddFile("app.py", _APP)
     args = mock.Mock()
     args.name = 'gcr.io/test/test:latest'
     args.base = 'gcr.io/google-appengine/python:latest'
     args.python_version = 'python2.7'
     args.tar_base_image_path = None
     self.builder = builder.Python(self.ctx, args, "")
     self.interpreter_builder = layer_builder.InterpreterLayerBuilder(
         self.builder._venv_dir, self.builder._args.python_version)
     self.builder._pip_install = mock.Mock()
Ejemplo n.º 3
0
def main(cli_args):
    try:
        builder_args = python_parser.parse_args(cli_args)
        logger.setup_logging(builder_args)
        logger.preamble("python", builder_args)
        with ftl_util.Timing("full build"):
            with ftl_util.Timing("builder initialization"):
                python_ftl = python_builder.Python(
                    context.Workspace(builder_args.directory), builder_args)
            with ftl_util.Timing("build process for FTL image"):
                python_ftl.Build()
    except ftl_error.UserError as e:
        ftl_error.UserErrorHandler(e, builder_args.builder_output_path)
    except ftl_error.InternalError as e:
        ftl_error.InternalErrorHandler(e, builder_args.builder_output_path)
Ejemplo n.º 4
0
    def setUp(self, mock_from):
        mock_from.return_value.__enter__.return_value = None
        self.ctx = context.Memory()
        self.ctx.AddFile("app.py", _APP)
        args = mock.Mock()
        args.name = 'gcr.io/test/test:latest'
        args.base = 'gcr.io/google-appengine/python:latest'
        args.python_cmd = 'python2.7'
        args.pip_cmd = 'pip'
        args.venv_cmd = 'virtualenv'
        args.tar_base_image_path = None
        self.builder = builder.Python(self.ctx, args)

        # constants.VENV_DIR.replace('/', '') is used as the default path
        # will give permissions errors in some build environments (eg: kokoro)
        self.interpreter_builder = layer_builder.InterpreterLayerBuilder(
            ftl_util.gen_tmp_dir(constants.VENV_DIR.replace('/', '')),
            self.builder._python_cmd, self.builder._venv_cmd)
        self.interpreter_builder._setup_venv = mock.Mock()
        self.builder._pip_download_wheels = mock.Mock()