context: Provide global instance

This will avoid the increasingly ugly pushing around of a context
instance as parameter to various methods/functions. Everyone can now
simply call get_context() after build or shell called
create_global_context().

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
Jan Kiszka 2018-08-24 19:17:58 +02:00 committed by Daniel Wagner
parent 3fccd1ad3e
commit 594fa97692
3 changed files with 23 additions and 4 deletions

View File

@ -24,7 +24,7 @@
"""
import os
from .context import Context
from .context import create_global_context
from .libkas import find_program, run_cmd, kasplugin
from .libcmds import (Macro, Command, SetupDir, CleanupSSHAgent,
SetupSSHAgent, SetupEnviron, SetupRepos,
@ -71,7 +71,7 @@ class Build:
if args.cmd != 'build':
return False
ctx = Context(args.config, args.target, args.task)
ctx = create_global_context(args.config, args.target, args.task)
macro = Macro()

View File

@ -48,6 +48,25 @@ except ImportError:
# pylint: disable=deprecated-method
return platform.dist()[0]
__context__ = None
def create_global_context(config_filename, bitbake_target, bitbake_task):
"""
Create global context as singleton.
"""
# pylint: disable=global-statement
global __context__
__context__ = Context(config_filename, bitbake_target, bitbake_task)
return __context__
def get_context():
"""
Return singleton global context.
"""
return __context__
# pylint: disable=too-many-instance-attributes
class Context:

View File

@ -27,7 +27,7 @@
import subprocess
import os
from .libkas import kasplugin
from .context import Context
from .context import create_global_context
from .libcmds import (Macro, Command, SetupDir, SetupEnviron,
WriteBBConfig, SetupHome, ReposApplyPatches,
CleanupSSHAgent, SetupSSHAgent, SetupRepos)
@ -75,7 +75,7 @@ class Shell:
if args.cmd != 'shell':
return False
ctx = Context(args.config, args.target, None)
ctx = create_global_context(args.config, args.target, None)
macro = Macro()