forked from Mirror/pmbootstrap
While at it, also remove unnecessary "#!/usr/bin/env python3" in files that only get imported, and adjust other empty/comment lines in the beginnings of the files for consistency. This makes files easier to read, and makes the pmbootstrap codebase more consistent with the build.postmarketos.org codebase.
39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
# Copyright 2020 Oliver Smith
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
import pmb.chroot.root
|
|
import pmb.helpers.run
|
|
|
|
|
|
def user(args, cmd, suffix="native", working_dir="/", output="log",
|
|
output_return=False, check=None, env={}, auto_init=True):
|
|
"""
|
|
Run a command inside a chroot as "user". We always use the BusyBox
|
|
implementation of 'su', because other implementations may override the PATH
|
|
environment variable (#1071).
|
|
|
|
:param env: dict of environment variables to be passed to the command, e.g.
|
|
{"JOBS": "5"}
|
|
:param auto_init: automatically initialize the chroot
|
|
|
|
See pmb.helpers.run_core.core() for a detailed description of all other
|
|
arguments and the return value.
|
|
"""
|
|
if "HOME" not in env:
|
|
env["HOME"] = "/home/pmos"
|
|
|
|
flat_cmd = pmb.helpers.run.flat_cmd(cmd, env=env)
|
|
cmd = ["busybox", "su", "pmos", "-c", flat_cmd]
|
|
return pmb.chroot.root(args, cmd, suffix, working_dir, output,
|
|
output_return, check, {}, auto_init)
|
|
|
|
|
|
def exists(args, username, suffix="native"):
|
|
"""
|
|
Checks if username exists in the system
|
|
|
|
:param username: User name
|
|
:returns: bool
|
|
"""
|
|
output = pmb.chroot.root(args, ["getent", "passwd", username],
|
|
suffix, output_return=True, check=False)
|
|
return len(output) > 0
|