diff --git a/.gitignore b/.gitignore index c52d8111..47757c7c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ _build/ dist/ doc/ +build/ # Python egg metadata, regenerated from source files by setuptools. /*.egg-info diff --git a/jtop/jetson_config.py b/jtop/jetson_config.py index 594f6078..1a7e944e 100644 --- a/jtop/jetson_config.py +++ b/jtop/jetson_config.py @@ -37,8 +37,9 @@ # Detect user user = os.environ.get('USER', '') # Get user from sudo -if 'SUDO_USER' in os.environ: - user = os.environ['SUDO_USER'] +sudo_user = os.environ.get('SUDO_USER', '') +# If are both empty assign 'root' +user = sudo_user or 'root' # Locate folder and type of installation folder, _ = os.path.split(__file__) folder = os.path.dirname(folder) diff --git a/jtop/service.py b/jtop/service.py index 1ef8ada9..2057784e 100644 --- a/jtop/service.py +++ b/jtop/service.py @@ -155,8 +155,9 @@ def install_service(package_root, copy, name=JTOP_SERVICE_NAME): def status_permission_user(group=JTOP_USER): user = os.environ.get('USER', '') # Get user from sudo - if 'SUDO_USER' in os.environ: - user = os.environ['SUDO_USER'] + sudo_user = os.environ.get('SUDO_USER', '') + # If are both empty assign 'root' + user = sudo_user or 'root' # Check if user is in group cmd_group_user = Command(shlex.split('groups {user}'.format(user=user))) try: @@ -191,8 +192,9 @@ def status_permission(group=JTOP_USER): def unset_service_permission(group=JTOP_USER): user = os.environ.get('USER', '') # Get user from sudo - if 'SUDO_USER' in os.environ: - user = os.environ['SUDO_USER'] + sudo_user = os.environ.get('SUDO_USER', '') + # If are both empty assign 'root' + user = sudo_user or 'root' # Check if user is in group if status_permission_user(group): logger.info("Remove {user} from group {group}".format(group=group, user=user)) @@ -205,8 +207,9 @@ def unset_service_permission(group=JTOP_USER): def set_service_permission(group=JTOP_USER): user = os.environ.get('USER', '') # Get user from sudo - if 'SUDO_USER' in os.environ: - user = os.environ['SUDO_USER'] + sudo_user = os.environ.get('SUDO_USER', '') + # If are both empty assign 'root' + user = sudo_user or 'root' # Make jetson_stats group if not status_permission_group(group): logger.info("Add new group {group}".format(group=group)) diff --git a/setup.py b/setup.py index 20f8db6f..f358e1ac 100644 --- a/setup.py +++ b/setup.py @@ -82,11 +82,22 @@ def is_virtualenv(): def is_docker(): # https://gist.github.com/anantkamath/623ce7f5432680749e087cf8cfba9b69 + # https://stackoverflow.com/questions/68816329/how-to-get-docker-container-id-from-within-the-container-with-cgroup-v2 + # Check on cgroup with open('/proc/self/cgroup', 'r') as procfile: for line in procfile: + # if is the new cgroup v2 check on mountinfo + if line.startswith("0::/"): + break fields = line.strip().split('/') if 'docker' in fields or 'buildkit' in fields: return True + with open( '/proc/self/mountinfo' ) as file: + line = file.readline().strip() + while line: + if '/docker/containers/' in line: + return True + line = file.readline().strip() return False