import tools.config
import tools.helpers.run
-
def get_lxc_version(args):
if shutil.which("lxc-info") is not None:
command = ["lxc-info", "--version"]
make_entry("/dev/ashmem")
make_entry("/dev/fuse")
make_entry("/dev/ion")
+ make_entry("/dev/tty")
make_entry("/dev/char", options="bind,create=dir,optional 0 0")
# Graphic dev nodes
def status(args):
command = ["lxc-info", "-P", tools.config.defaults["lxc"], "-n", "waydroid", "-sH"]
- out = subprocess.run(command, stdout=subprocess.PIPE).stdout.decode('utf-8').strip()
- return out
+ try:
+ return tools.helpers.run.user(args, command, output_return=True).strip()
+ except:
+ logging.info("Couldn't get LXC status. Assuming STOPPED.")
+ return "STOPPED"
def wait_for_running(args):
lxc_status = status(args)
"ANDROID_I18N_ROOT": "/apex/com.android.i18n",
"ANDROID_TZDATA_ROOT": "/apex/com.android.tzdata",
"ANDROID_RUNTIME_ROOT": "/apex/com.android.runtime",
+ "BOOTCLASSPATH": "/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar:/apex/com.android.mediaprovider/javalib/framework-mediaprovider.jar:/apex/com.android.os.statsd/javalib/framework-statsd.jar:/apex/com.android.permission/javalib/framework-permission.jar:/apex/com.android.sdkext/javalib/framework-sdkextensions.jar:/apex/com.android.wifi/javalib/framework-wifi.jar:/apex/com.android.tethering/javalib/framework-tethering.jar"
}
def android_env_attach_options():
command = ["lxc-attach", "-P", tools.config.defaults["lxc"],
"-n", "waydroid", "--clear-env"]
command.extend(android_env_attach_options())
+ if args.uid!=None:
+ command.append("--uid="+str(args.uid))
+ if args.gid!=None:
+ command.append("--gid="+str(args.gid))
+ elif args.uid!=None:
+ command.append("--gid="+str(args.uid))
+ if args.nolsm or args.allcaps or args.nocgroup:
+ elevatedprivs = "--elevated-privileges="
+ addpipe = False
+ if args.nolsm:
+ if addpipe:
+ elevatedprivs+="|"
+ elevatedprivs+="LSM"
+ addpipe = True
+ if args.allcaps:
+ if addpipe:
+ elevatedprivs+="|"
+ elevatedprivs+="CAP"
+ addpipe = True
+ if args.nocgroup:
+ if addpipe:
+ elevatedprivs+="|"
+ elevatedprivs+="CGROUP"
+ addpipe = True
+ command.append(elevatedprivs)
+ if args.context!=None and not args.nolsm:
+ command.append("--context="+args.context)
command.append("--")
if args.COMMAND:
command.extend(args.COMMAND)
def logcat(args):
args.COMMAND = ["/system/bin/logcat"]
+ args.uid = None
+ args.gid = None
+ args.nolsm = None
+ args.allcaps = None
+ args.nocgroup = None
+ args.context = None
shell(args)