From e37eebe257c63dbb1be88bf28e60a6c1abeeb522 Mon Sep 17 00:00:00 2001 From: lixinyu Date: Thu, 25 Jan 2024 10:34:13 +0800 Subject: [PATCH] bug: fix the bug which can not connect network in container * the run container parameters should include "--network host", thus when in container the network can be interconnected. Signed-off-by: lixinyu --- src/oebuild/app/plugins/bitbake/in_container.py | 4 ++-- src/oebuild/app/plugins/deploy/com_target.py | 2 +- src/oebuild/app/plugins/run_qemu/run_qemu.py | 2 +- src/oebuild/const.py | 2 ++ src/oebuild/parse_compile.py | 4 +++- src/oebuild/parse_template.py | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/oebuild/app/plugins/bitbake/in_container.py b/src/oebuild/app/plugins/bitbake/in_container.py index e71b567..f750487 100644 --- a/src/oebuild/app/plugins/bitbake/in_container.py +++ b/src/oebuild/app/plugins/bitbake/in_container.py @@ -66,7 +66,7 @@ class InContainer(BaseBuild): ''' this function is to adapt the old compile.yaml ''' - parameters = ['-itd'] + parameters = oebuild_const.DEFAULT_CONTAINER_PARAMS volumns = [] volumns.append("/dev/net/tun:/dev/net/tun") volumns.append(self.configure.source_dir() + ':' + oebuild_const.CONTAINER_SRC) @@ -100,7 +100,7 @@ class InContainer(BaseBuild): # judge which container container:Container = self.client.create_container( image = docker_param.image, - parameters=" ".join(docker_param.parameters), + parameters=docker_param.parameters, volumes=docker_param.volumns, command=docker_param.command) diff --git a/src/oebuild/app/plugins/deploy/com_target.py b/src/oebuild/app/plugins/deploy/com_target.py index 5559ad3..9babf70 100644 --- a/src/oebuild/app/plugins/deploy/com_target.py +++ b/src/oebuild/app/plugins/deploy/com_target.py @@ -172,7 +172,7 @@ the container {self.container_id} failed to be destroyed, please run + ':' + os.path.join(oebuild_const.CONTAINER_BUILD, cwd_name)) - parameters = "-itd" + parameters = oebuild_const.DEFAULT_CONTAINER_PARAMS container:Container = self.client.create_container( image=docker_image, parameters=parameters, diff --git a/src/oebuild/app/plugins/run_qemu/run_qemu.py b/src/oebuild/app/plugins/run_qemu/run_qemu.py index 0732a29..a73e2b1 100644 --- a/src/oebuild/app/plugins/run_qemu/run_qemu.py +++ b/src/oebuild/app/plugins/run_qemu/run_qemu.py @@ -160,7 +160,7 @@ now, you can continue run `oebuild runqemu` in compile directory volumns.append(self.work_dir + ':' + oebuild_const.CONTAINER_BUILD) volumns.append(self.configure.source_dir() + ':' + oebuild_const.CONTAINER_SRC) - parameters = "-itd --privileged" + parameters = oebuild_const.DEFAULT_CONTAINER_PARAMS + " --privileged" container:Container = self.client.create_container( image=docker_image, parameters=parameters, diff --git a/src/oebuild/const.py b/src/oebuild/const.py index 690e0b7..6262456 100644 --- a/src/oebuild/const.py +++ b/src/oebuild/const.py @@ -51,3 +51,5 @@ COMPILE_YAML = "compile.yaml.sample" PLATFORM = 'platform' BUILD_IN_DOCKER = "docker" BUILD_IN_HOST = "host" + +DEFAULT_CONTAINER_PARAMS = "-itd --network host" diff --git a/src/oebuild/parse_compile.py b/src/oebuild/parse_compile.py index cde5580..3f26112 100644 --- a/src/oebuild/parse_compile.py +++ b/src/oebuild/parse_compile.py @@ -30,7 +30,7 @@ class DockerParam: # point out the docker image image: str # point out the parameter for create container - parameters: list[str] + parameters: str # point out the volumns for create container volumns: list[str] # point out the command for create container @@ -95,6 +95,8 @@ class ParseCompile: if "docker_param" in data and data['docker_param'] is not None: try: dparam = data['docker_param'] + if isinstance(dparam, list): + dparam = " ".join(dparam) docker_param = DockerParam( image=dparam['image'], parameters=dparam['parameters'], diff --git a/src/oebuild/parse_template.py b/src/oebuild/parse_template.py index cad3140..a41947b 100644 --- a/src/oebuild/parse_template.py +++ b/src/oebuild/parse_template.py @@ -265,7 +265,7 @@ your arch is {self.platform}, the feature is not supported, please check your ap if build_in == oebuild_const.BUILD_IN_HOST: return compile_conf - parameters = ['-itd'] + parameters = oebuild_const.DEFAULT_CONTAINER_PARAMS volumns = [] volumns.append("/dev/net/tun:/dev/net/tun") volumns.append(src_dir + ':' + oebuild_const.CONTAINER_SRC) -- Gitee