packages: use user 'kupfer' in chroots for building

This commit is contained in:
InsanePrawn 2022-08-28 01:50:07 +02:00
parent 1cac36b73a
commit bb14c4d779

View file

@ -42,7 +42,6 @@ def get_makepkg_env(arch: Optional[Arch] = None):
'LANG': 'C', 'LANG': 'C',
'CARGO_BUILD_JOBS': str(threads), 'CARGO_BUILD_JOBS': str(threads),
'MAKEFLAGS': f"-j{threads}", 'MAKEFLAGS': f"-j{threads}",
'HOME': '/root',
} }
native = config.runtime.arch native = config.runtime.arch
assert native assert native
@ -349,10 +348,7 @@ def check_package_version_built(package: Pkgbuild, arch: Arch, try_download: boo
'--skippgpcheck', '--skippgpcheck',
'--packagelist', '--packagelist',
] ]
result: Any = native_chroot.run_cmd( result: Any = native_chroot.run_cmd(cmd, capture_output=True, switch_user='kupfer')
cmd,
capture_output=True,
)
if result.returncode != 0: if result.returncode != 0:
raise Exception(f'Failed to get package list for {package.path}:' + '\n' + result.stdout.decode() + '\n' + result.stderr.decode()) raise Exception(f'Failed to get package list for {package.path}:' + '\n' + result.stdout.decode() + '\n' + result.stderr.decode())
@ -423,19 +419,23 @@ def setup_build_chroot(
chroot.mount_pkgbuilds() chroot.mount_pkgbuilds()
if extra_packages: if extra_packages:
chroot.try_install_packages(extra_packages, allow_fail=False) chroot.try_install_packages(extra_packages, allow_fail=False)
if not os.path.exists(chroot.get_path('/home/kupfer')):
assert config.runtime.uid is not None
chroot.create_user('kupfer', password='12345678', uid=config.runtime.uid, non_unique=True)
if not os.path.exists(chroot.get_path('/etc/sudoers.d/kupfer_nopw')):
chroot.add_sudo_config('kupfer_nopw', 'kupfer', password_required=False)
return chroot return chroot
def setup_git_insecure_paths(chroot: BuildChroot): def setup_git_insecure_paths(chroot: BuildChroot, username: str = 'kupfer'):
chroot.run_cmd( chroot.run_cmd(
["git", "config", "--global", "--add", "safe.directory", "'*'"], ["git", "config", "--global", "--add", "safe.directory", "'*'"],
inner_env={ switch_user=username,
'HOME': '/root'
},
).check_returncode() # type: ignore[union-attr] ).check_returncode() # type: ignore[union-attr]
def setup_sources(package: Pkgbuild, chroot: BuildChroot, makepkg_conf_path='/etc/makepkg.conf'): def setup_sources(package: Pkgbuild, chroot: BuildChroot, makepkg_conf_path='/etc/makepkg.conf', switch_user: str = 'kupfer'):
makepkg_setup_args = [ makepkg_setup_args = [
'--config', '--config',
makepkg_conf_path, makepkg_conf_path,
@ -451,6 +451,7 @@ def setup_sources(package: Pkgbuild, chroot: BuildChroot, makepkg_conf_path='/et
MAKEPKG_CMD + makepkg_setup_args, MAKEPKG_CMD + makepkg_setup_args,
cwd=os.path.join(CHROOT_PATHS['pkgbuilds'], package.path), cwd=os.path.join(CHROOT_PATHS['pkgbuilds'], package.path),
inner_env=get_makepkg_env(chroot.arch), inner_env=get_makepkg_env(chroot.arch),
switch_user=switch_user,
) )
assert isinstance(result, subprocess.CompletedProcess) assert isinstance(result, subprocess.CompletedProcess)
if result.returncode != 0: if result.returncode != 0:
@ -530,7 +531,12 @@ def build_package(
build_cmd = f'makepkg --config {makepkg_conf_absolute} --skippgpcheck --needed --noconfirm --ignorearch {" ".join(makepkg_compile_opts)}' build_cmd = f'makepkg --config {makepkg_conf_absolute} --skippgpcheck --needed --noconfirm --ignorearch {" ".join(makepkg_compile_opts)}'
logging.debug(f'Building: Running {build_cmd}') logging.debug(f'Building: Running {build_cmd}')
result = build_root.run_cmd(build_cmd, inner_env=env, cwd=os.path.join(CHROOT_PATHS['pkgbuilds'], package.path)) result = build_root.run_cmd(
build_cmd,
inner_env=env,
cwd=os.path.join(CHROOT_PATHS['pkgbuilds'], package.path),
switch_user='kupfer',
)
assert isinstance(result, subprocess.CompletedProcess) assert isinstance(result, subprocess.CompletedProcess)
if result.returncode != 0: if result.returncode != 0:
raise Exception(f'Failed to compile package {package.path}') raise Exception(f'Failed to compile package {package.path}')