chroot/: make devicechroot pacstrap work without docker wrapper
This commit is contained in:
parent
707c61f026
commit
25ea4afe9b
2 changed files with 31 additions and 5 deletions
|
@ -277,12 +277,27 @@ class Chroot(AbstractChroot):
|
||||||
root_write_file(makepkg_conf_path, makepkg_cross_conf)
|
root_write_file(makepkg_conf_path, makepkg_cross_conf)
|
||||||
return makepkg_conf_path_relative
|
return makepkg_conf_path_relative
|
||||||
|
|
||||||
def write_pacman_conf(self, check_space: Optional[bool] = None):
|
def write_pacman_conf(self, check_space: Optional[bool] = None, in_chroot: bool = True, absolute_path: str = None):
|
||||||
|
user = None
|
||||||
|
group = None
|
||||||
if check_space is None:
|
if check_space is None:
|
||||||
check_space = config.file['pacman']['check_space']
|
check_space = config.file['pacman']['check_space']
|
||||||
os.makedirs(self.get_path('/etc'), exist_ok=True)
|
if not absolute_path:
|
||||||
conf_text = get_base_distro(self.arch).get_pacman_conf(self.extra_repos, check_space=check_space)
|
path = self.get_path('/etc')
|
||||||
root_write_file(self.get_path('etc/pacman.conf'), conf_text)
|
root_makedir(path)
|
||||||
|
absolute_path = os.path.join(path, 'pacman.conf')
|
||||||
|
user = 'root'
|
||||||
|
group = 'root'
|
||||||
|
repos = deepcopy(self.extra_repos)
|
||||||
|
if not in_chroot:
|
||||||
|
for repo in repos.values():
|
||||||
|
repo.url_template = repo.url_template.replace(
|
||||||
|
f'file://{CHROOT_PATHS["packages"]}',
|
||||||
|
f'file://{config.get_path("packages")}',
|
||||||
|
1,
|
||||||
|
)
|
||||||
|
conf_text = get_base_distro(self.arch).get_pacman_conf(repos, check_space=check_space)
|
||||||
|
write_file(absolute_path, conf_text, user=user, group=group)
|
||||||
|
|
||||||
def create_user(
|
def create_user(
|
||||||
self,
|
self,
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
import atexit
|
import atexit
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from typing import Optional
|
||||||
|
from tempfile import mktemp
|
||||||
|
|
||||||
|
from config import config
|
||||||
from constants import Arch, BASE_PACKAGES
|
from constants import Arch, BASE_PACKAGES
|
||||||
from distro.distro import get_kupfer_local, get_kupfer_https
|
from distro.distro import get_kupfer_local, get_kupfer_https
|
||||||
from exec.file import makedir, root_makedir
|
from exec.file import makedir, root_makedir
|
||||||
from utils import check_findmnt
|
from utils import check_findmnt
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
from .base import BaseChroot
|
from .base import BaseChroot
|
||||||
from .build import BuildChroot
|
from .build import BuildChroot
|
||||||
|
@ -19,6 +22,14 @@ class DeviceChroot(BuildChroot):
|
||||||
def create_rootfs(self, reset, pacman_conf_target, active_previously):
|
def create_rootfs(self, reset, pacman_conf_target, active_previously):
|
||||||
clss = BuildChroot if self.copy_base else BaseChroot
|
clss = BuildChroot if self.copy_base else BaseChroot
|
||||||
|
|
||||||
|
makedir(config.get_path('chroots'))
|
||||||
|
root_makedir(self.get_path())
|
||||||
|
if not self.copy_base:
|
||||||
|
name = mktemp()
|
||||||
|
pacman_conf_target = name
|
||||||
|
self.write_pacman_conf(in_chroot=False, absolute_path=pacman_conf_target)
|
||||||
|
atexit.register(os.unlink, pacman_conf_target)
|
||||||
|
|
||||||
clss.create_rootfs(self, reset, pacman_conf_target, active_previously)
|
clss.create_rootfs(self, reset, pacman_conf_target, active_previously)
|
||||||
|
|
||||||
def mount_rootfs(self, source_path: str, fs_type: str = None, options: list[str] = [], allow_overlay: bool = False):
|
def mount_rootfs(self, source_path: str, fs_type: str = None, options: list[str] = [], allow_overlay: bool = False):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue