]> glassweightruler.freedombox.rocks Git - waydroid.git/blobdiff - tools/helpers/lxc.py
lxc: Skip host_perms on non treble devices
[waydroid.git] / tools / helpers / lxc.py
index e4d8f20099e2240a9151ffe0681d348760e586f0..220d4e6646b6df44ceaa6384ebe5542412616f7a 100644 (file)
@@ -107,6 +107,11 @@ def generate_nodes_lxc_config(args):
     make_entry("tmpfs", "var", "tmpfs", "nodev 0 0", False)
     make_entry("/var/run", options="rbind,create=dir,optional 0 0")
 
+    # tmp
+    make_entry("tmpfs", "tmp", "tmpfs", "nodev 0 0", False)
+    for n in glob.glob("/tmp/run-*"):
+        make_entry(n, options="rbind,create=dir,optional 0 0")
+
     return nodes
 
 
@@ -147,19 +152,11 @@ def make_base_props(args):
             "ro.board.platform"]
         for p in hardware_props:
             prop = tools.helpers.props.host_get(args, p)
-            hal_prop = ""
             if prop != "":
-                for lib in ["lib", "lib64"]:
-                    hal_file = "/vendor/" + lib + "/hw/" + hardware + "." + prop + ".so"
-                    command = ["readlink", "-f", hal_file]
-                    hal_file_path = tools.helpers.run.user(args, command, output_return=True).strip()
-                    if os.path.isfile(hal_file_path):
-                        hal_prop = re.sub(".*" + hardware + ".", "", hal_file_path)
-                        hal_prop = re.sub(".so", "", hal_prop)
-                        if hal_prop != "":
-                            return hal_prop
-            if hal_prop != "":
-                return hal_prop
+                for lib in ["/odm/lib", "/odm/lib64", "/vendor/lib", "/vendor/lib64", "/system/lib", "/system/lib64"]:
+                    hal_file = lib + "/hw/" + hardware + "." + prop + ".so"
+                    if os.path.isfile(hal_file):
+                        return prop
         return ""
 
     props = []
@@ -219,6 +216,13 @@ def make_base_props(args):
 
 
 def setup_host_perms(args):
+    if not os.path.exists(tools.config.defaults["host_perms"]):
+        os.mkdir(tools.config.defaults["host_perms"])
+
+    treble = tools.helpers.props.host_get(args, "ro.treble.enabled")
+    if treble != "true":
+        return
+
     sku = tools.helpers.props.host_get(args, "ro.boot.product.hardware.sku")
     copy_list = []
     copy_list.extend(
@@ -236,15 +240,14 @@ def setup_host_perms(args):
             copy_list.append(
                 "/odm/etc/permissions/sku_{}/android.hardware.consumerir.xml".format(sku))
 
-    if not os.path.exists(tools.config.defaults["host_perms"]):
-        os.mkdir(tools.config.defaults["host_perms"])
-
     for filename in copy_list:
         shutil.copy(filename, tools.config.defaults["host_perms"])
 
 def status(args):
     command = ["lxc-info", "-P", tools.config.defaults["lxc"], "-n", "waydroid", "-sH"]
-    return subprocess.run(command, stdout=subprocess.PIPE).stdout.decode('utf-8').strip()
+    out = subprocess.run(command, stdout=subprocess.PIPE).stdout.decode('utf-8').strip()
+    os.chmod(args.log, 0o666)
+    return out
 
 def start(args):
     command = ["lxc-start", "-P", tools.config.defaults["lxc"],
@@ -275,7 +278,7 @@ def shell(args):
         command.append(args.COMMAND)
     else:
         command.append("/system/bin/sh")
-    subprocess.run(command, env={"PATH": os.environ['PATH'] + "/system/bin:/vendor/bin"})
+    subprocess.run(command, env={"PATH": os.environ['PATH'] + ":/system/bin:/vendor/bin"})
 
 def logcat(args):
     if status(args) != "RUNNING":