Exemplo n.º 1
0
def make_process(app_dir):
    my_root = FileNamespace()
    caller_root = plash.env.get_root_dir()
    proc = Process()
    proc.cwd_path = "/"

    for var in ["HOME"]:
        if var in os.environ:
            proc.env[var] = os.environ[var]

    state = plash.pola_run_args.ProcessSetup(proc)
    state.caller_root = caller_root
    state.cwd = ns.resolve_dir(state.caller_root, os.getcwd())
    
    state.handle_args(
        ["-fw", "/dev/null",
         "-f", "/dev/urandom",
         "-f", "/dev/random",
         "-f", "/etc/localtime",
         "--x11",
         "--net"])

    lib_dir_path = os.environ.get("PLASH_LIBRARY_DIR", "/usr/lib/plash/lib")
    lib_dir = my_root.get_obj(lib_dir_path)
    for dir_entry in lib_dir.dir_list():
        leafname = dir_entry["name"]
        file_obj = lib_dir.dir_traverse(leafname)
        proc.get_namespace().attach_at_path(os.path.join("/lib", leafname),
                                            file_obj)

    root_dir = ns.make_cow_dir(my_root.get_obj(
                                 os.path.join(app_dir, "write_layer")),
                               my_root.get_obj(
                                 os.path.join(app_dir, "unpacked")))
    proc.get_namespace().attach_at_path("/", root_dir)

    return (proc, state)
Exemplo n.º 2
0
 def copy_cwd(self, args):
     self.cwd = ns.resolve_dir(self.caller_root, os.getcwd())
Exemplo n.º 3
0
 def __init__(self):
     self._root = plash.env.get_root_dir()
     self._cwd = ns.resolve_dir(self._root, os.getcwd())
Exemplo n.º 4
0
 def set_cwd(self, dir_path):
     self.cwd = ns.resolve_dir(self.caller_root, dir_path, cwd=self.cwd)