diff --git a/src/oebuild/app/main.py b/src/oebuild/app/main.py index 7cf350f29d8c2d48c15c159e941d548f28179516..12e0a51391aad046eddda5cad64fa94e7cc378d7 100644 --- a/src/oebuild/app/main.py +++ b/src/oebuild/app/main.py @@ -25,6 +25,7 @@ from oebuild.version import __version__ from oebuild.spec import get_spec, _ExtCommand from oebuild.command import OebuildCommand from oebuild.oebuild_parser import OebuildArgumentParser, OebuildHelpAction +from oebuild.parse_template import get_docker_volumns APP = "app" @@ -277,6 +278,13 @@ or self.compile_param.docker_param.volumns.append( f"{os.path.abspath(self.build_dir)}:{volumn_dir}" ) + self.compile_param.docker_param.volumns.extend(get_docker_volumns({ + "cache_src_dir": self.compile_param.cache_src_dir, + "toolchain_dir": self.compile_param.toolchain_dir, + "llvm_toolchain_dir": self.compile_param.llvm_toolchain_dir, + "sstate_mirrors": self.compile_param.sstate_mirrors, + "sstate_dir": self.compile_param.sstate_dir + })) compile_param_dict = ParseCompileParam().parse_to_dict(compile_param=self.compile_param) compile_yaml_path = os.path.join(self.build_dir, "compile.yaml") oebuild_util.write_yaml(yaml_path=compile_yaml_path, data=compile_param_dict) diff --git a/src/oebuild/app/plugins/generate/generate.py b/src/oebuild/app/plugins/generate/generate.py index d10e7daa19f5a652d672a5f254ac92a4e1b583d9..3b0caa24db5429b6ef8504660d8ecf4323655132 100644 --- a/src/oebuild/app/plugins/generate/generate.py +++ b/src/oebuild/app/plugins/generate/generate.py @@ -140,6 +140,9 @@ class Generate(OebuildCommand): self._print_toolchain(build_dir=build_dir) sys.exit(0) + if args.nativesdk_dir != '': + self.params['nativesdk_dir'] = args.nativesdk_dir + if args.toolchain_dir != '': self.params['toolchain_dir'] = args.toolchain_dir @@ -205,20 +208,20 @@ class Generate(OebuildCommand): out_dir = pathlib.Path(os.path.join(build_dir, 'compile.yaml')) param = parser_template.get_default_generate_compile_conf_param() - param['nativesdk_dir'] = self.params['nativesdk_dir'] - param['toolchain_dir'] = self.params['toolchain_dir'] - param['llvm_toolchain_dir'] = self.params['llvm_toolchain_dir'] + param['nativesdk_dir'] = self.params.get('nativesdk_dir', None) + param['toolchain_dir'] = self.params.get('toolchain_dir', None) + param['llvm_toolchain_dir'] = self.params.get('llvm_toolchain_dir', None) param['build_in'] = args.build_in - param['sstate_mirrors'] = self.params['sstate_mirrors'] - param['sstate_dir'] = self.params['sstate_dir'] - param['tmp_dir'] = self.params['tmp_dir'] + param['sstate_mirrors'] = self.params.get('sstate_mirrors', None) + param['sstate_dir'] = self.params.get('sstate_dir', None) + param['tmp_dir'] = self.params.get('tmp_dir', None) param['datetime'] = args.datetime param['no_fetch'] = args.no_fetch param['no_layer'] = args.no_layer param['docker_image'] = docker_image param['src_dir'] = self.configure.source_dir() param['compile_dir'] = build_dir - param['cache_src_dir'] = self.params['cache_src_dir'] + param['cache_src_dir'] = self.params.get('cache_src_dir', None) oebuild_util.write_yaml( out_dir, parser_template.generate_compile_conf(param)) diff --git a/src/oebuild/parse_param.py b/src/oebuild/parse_param.py index 43cbcacb7cc267bdf721a7b7b1fbf691aa88fda1..de4ece76378273e5de1937d090f3a4948eec2853 100644 --- a/src/oebuild/parse_param.py +++ b/src/oebuild/parse_param.py @@ -83,6 +83,7 @@ class ParseCompileParam: build_in: str machine: str toolchain_type: str + cache_src_dir: str no_layer: Optional[bool] repos: Optional[list] layers: Optional[list] @@ -150,6 +151,8 @@ class ParseCompileParam: compile_obj['build_in'] = compile_param.build_in compile_obj['machine'] = compile_param.machine compile_obj['toolchain_type'] = compile_param.toolchain_type + if compile_param.cache_src_dir is not None: + compile_obj['cache_src_dir'] = compile_param.cache_src_dir if compile_param.no_layer is not None: compile_obj['no_layer'] = compile_param.no_layer if compile_param.toolchain_dir is not None: diff --git a/src/oebuild/parse_template.py b/src/oebuild/parse_template.py index 84d477bac9d4c5db9580e96ebadc119ecb495f23..8afc6f43aa381bc855c39e27286474111b243ec1 100644 --- a/src/oebuild/parse_template.py +++ b/src/oebuild/parse_template.py @@ -300,6 +300,20 @@ def get_docker_param_dict(docker_image, dir_list): sstate_dir ''' parameters = oebuild_const.DEFAULT_CONTAINER_PARAMS + + docker_param = {} + docker_param['image'] = docker_image + docker_param['parameters'] = parameters + docker_param['volumns'] = get_docker_volumns(dir_list) + docker_param['command'] = "bash" + + return docker_param + + +def get_docker_volumns(dir_list): + ''' + translate the dir_dict to volumns list + ''' volumns = [] volumns.append("/dev/net/tun:/dev/net/tun") if 'src_dir' in dir_list and dir_list['src_dir'] is not None: @@ -317,14 +331,7 @@ def get_docker_param_dict(docker_image, dir_list): volumns.append(dir_list['sstate_dir'] + ":" + oebuild_const.SSTATE_DIR) if 'cache_src_dir' in dir_list and dir_list['cache_src_dir'] is not None: volumns.append(dir_list['cache_src_dir'] + ":" + oebuild_const.CACHE_SRC_DIR_MAP) - - docker_param = {} - docker_param['image'] = docker_image - docker_param['parameters'] = parameters - docker_param['volumns'] = volumns - docker_param['command'] = "bash" - - return docker_param + return volumns def parse_repos_layers_local_obj(common_yaml_path):