Lines Matching +full:self +full:- +full:working +full:- +full:mode
12 # the top-level directory.
43 def __str__(self): argument
44 return self.name.lower()
46 def __repr__(self): argument
47 return str(self)
65 return _bytes_checksum(text.encode('utf-8'))
68 return open(path, 'rt', encoding='utf-8').read()
75 """ Guess a working engine command or raise exception if not found"""
81 commands += [["docker"], ["sudo", "-n", "docker"]]
92 raise Exception("Cannot find working engine command. Tried:\n%s" %
121 ldd_re = re.compile(r"(?:\S+ => )?(\S*) \(:?0x[0-9a-f]+\)")
123 ldd_output = subprocess.check_output(["ldd", executable]).decode('utf-8')
145 This does rely on the host file-system being fairly multi-arch
199 # special case for Debian linux-user images
201 img_name = "debian-bootstrap"
223 def __init__(self): argument
224 self._command = _guess_engine_command()
226 if ("docker" in self._command and
230 self._buildkit = True
232 self._buildkit = False
234 self._instance = None
235 atexit.register(self._kill_instances)
236 signal.signal(signal.SIGTERM, self._kill_instances)
237 signal.signal(signal.SIGHUP, self._kill_instances)
239 def _do(self, cmd, quiet=True, **kwargs): argument
242 return subprocess.call(self._command + cmd, **kwargs)
244 def _do_check(self, cmd, quiet=True, **kwargs): argument
247 return subprocess.check_call(self._command + cmd, **kwargs)
249 def _do_kill_instances(self, only_known, only_active=True): argument
250 cmd = ["ps", "-q"]
252 cmd.append("-a")
254 filter = "--filter=label=com.qemu.instance.uuid"
256 if self._instance:
257 filter += "=%s" % (self._instance)
264 for i in self._output(cmd).split():
265 self._do(["rm", "-f", i])
267 def clean(self): argument
268 self._do_kill_instances(False, False)
271 def _kill_instances(self, *args, **kwargs): argument
272 return self._do_kill_instances(True)
274 def _output(self, cmd, **kwargs): argument
276 return subprocess.check_output(self._command + cmd,
278 encoding='utf-8',
282 return subprocess.check_output(self._command + cmd,
284 **kwargs).decode('utf-8')
287 def inspect_tag(self, tag): argument
289 return self._output(["inspect", tag])
293 def get_image_creation_time(self, info): argument
296 def get_image_dockerfile_checksum(self, tag): argument
297 resp = self.inspect_tag(tag)
299 return labels.get("com.qemu.dockerfile-checksum", "")
301 def build_image(self, tag, docker_dir, dockerfile, argument
308 return -1
312 tmp_df = tempfile.NamedTemporaryFile(mode="w+t",
313 encoding='utf-8',
321 tmp_df.write("RUN id %s 2>/dev/null || useradd -u %d -U %s" %
325 tmp_df.write("LABEL com.qemu.dockerfile-checksum=%s\n" % (checksum))
327 tmp_df.write("LABEL com.qemu.%s-checksum=%s\n" % (f, c))
331 build_args = ["build", "-t", tag, "-f", tmp_df.name]
332 if self._buildkit:
333 build_args += ["--build-arg", "BUILDKIT_INLINE_CACHE=1"]
337 self._do(pull_args, quiet=quiet)
339 build_args += ["--cache-from", cache]
343 self._do_check(build_args,
346 def update_image(self, tag, tarball, quiet=True): argument
349 self._do_check(["build", "-t", tag, "-"], quiet=quiet, stdin=tarball)
351 def image_matches_dockerfile(self, tag, dockerfile): argument
353 checksum = self.get_image_dockerfile_checksum(tag)
358 def run(self, cmd, keep, quiet, as_user=False): argument
361 self._instance = label
365 cmd = [ "-u", str(uid) ] + cmd
367 if self._command[0] == "podman":
368 cmd.insert(0, '--userns=keep-id')
370 ret = self._do_check(["run", "--rm", "--label",
374 self._instance = None
377 def command(self, cmd, argv, quiet): argument
378 return self._do([cmd] + argv, quiet=quiet)
385 def shared_args(self, parser): argument
386 parser.add_argument("--quiet", action="store_true",
389 def args(self, parser): argument
393 def run(self, args, argv): argument
405 def args(self, parser): argument
406 parser.add_argument("--keep", action="store_true",
408 parser.add_argument("--run-as-current-user", action="store_true",
411 def run(self, args, argv): argument
420 def args(self, parser): argument
421 parser.add_argument("--include-executable", "-e",
425 parser.add_argument("--skip-binfmt",
428 parser.add_argument("--extra-files", nargs='*',
432 parser.add_argument("--add-current-user", "-u", dest="user",
435 parser.add_argument("--registry", "-r",
437 parser.add_argument("-t", dest="tag",
439 parser.add_argument("-f", dest="dockerfile",
442 def run(self, args, argv): argument
447 if "--no-cache" not in argv and \
490 argv += ["--build-arg=" + k.lower() + "=" + v
506 def args(self, parser): argument
512 def run(self, args, argv): argument
524 def args(self, parser): argument
527 parser.add_argument("--executable",
529 parser.add_argument("--add-current-user", "-u", dest="user",
533 def run(self, args, argv): argument
537 tmp_tar = TarFile(fileobj=tmp, mode='w')
575 df.write("RUN id %s 2>/dev/null || useradd -u %d -U %s" %
578 df_bytes = BytesIO(bytes(df.getvalue(), "UTF-8"))
601 def run(self, args, argv): argument
610 def run(self, args, argv): argument
618 def run(self, args, argv): argument
637 def args(self, parser): argument
638 parser.add_argument("--image", "-i", required=True,
640 parser.add_argument("--cc", default="cc",
642 parser.add_argument("--source-path", "-s", nargs="*", dest="paths",
646 def run(self, args, argv): argument
647 if argv and argv[0] == "--":
650 cmd = ["-w", cwd,
651 "-v", "%s:%s:rw" % (cwd, cwd)]
654 cmd += ["-v", "%s:%s:ro,z" % (p, p)]
667 parser.add_argument("--engine", type=EngineEnum.argparse, choices=list(EngineEnum),