mirror of
https://gitlab.com/kupfer/kupferbootstrap.git
synced 2025-06-27 10:45:37 -04:00
wrapper: use paths from config, clean up volume generation, mount wrapper-customized config into container
This commit is contained in:
parent
40fe23ae28
commit
e198097cf1
1 changed files with 26 additions and 21 deletions
47
wrapper.py
47
wrapper.py
|
@ -2,14 +2,26 @@ import atexit
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import appdirs
|
|
||||||
import uuid
|
import uuid
|
||||||
import click
|
import click
|
||||||
import logging
|
import logging
|
||||||
from config import config
|
from config import config, dump_file as dump_config_file
|
||||||
|
|
||||||
|
DOCKER_PATHS = {
|
||||||
|
'chroots': '/chroot',
|
||||||
|
'jumpdrive': '/var/cache/jumpdrive',
|
||||||
|
'pacman': '/var/cache/pacman/pkg',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def wrap_docker():
|
def wrap_docker():
|
||||||
|
|
||||||
|
def _docker_volumes(volume_mappings: dict[str, str]) -> list[str]:
|
||||||
|
result = []
|
||||||
|
for source, destination in volume_mappings.items():
|
||||||
|
result += ['-v', f'{source}:{destination}:z']
|
||||||
|
return result
|
||||||
|
|
||||||
script_path = os.path.dirname(os.path.abspath(__file__))
|
script_path = os.path.dirname(os.path.abspath(__file__))
|
||||||
with open(os.path.join(script_path, 'version.txt')) as version_file:
|
with open(os.path.join(script_path, 'version.txt')) as version_file:
|
||||||
version = version_file.read().replace('\n', '')
|
version = version_file.read().replace('\n', '')
|
||||||
|
@ -46,6 +58,7 @@ def wrap_docker():
|
||||||
tag,
|
tag,
|
||||||
])
|
])
|
||||||
container_name = f'kupferbootstrap-{str(uuid.uuid4())}'
|
container_name = f'kupferbootstrap-{str(uuid.uuid4())}'
|
||||||
|
wrapped_config = f'/tmp/kupfer/{container_name}_wrapped.toml'
|
||||||
|
|
||||||
def at_exit():
|
def at_exit():
|
||||||
subprocess.run(
|
subprocess.run(
|
||||||
|
@ -57,15 +70,19 @@ def wrap_docker():
|
||||||
stdout=subprocess.DEVNULL,
|
stdout=subprocess.DEVNULL,
|
||||||
stderr=subprocess.DEVNULL,
|
stderr=subprocess.DEVNULL,
|
||||||
)
|
)
|
||||||
|
os.remove(wrapped_config)
|
||||||
|
|
||||||
atexit.register(at_exit)
|
atexit.register(at_exit)
|
||||||
|
|
||||||
prebuilts_mount = []
|
dump_config_file(file_path=wrapped_config, config=(config.file | {'paths': DOCKER_PATHS}))
|
||||||
if os.getenv('KUPFERBOOTSTRAP_PREBUILTS') != '':
|
volumes = {
|
||||||
prebuilts_mount = [
|
'/dev': '/dev',
|
||||||
'-v',
|
os.getcwd(): '/src',
|
||||||
f'{os.getenv("KUPFERBOOTSTRAP_PREBUILTS")}:/prebuilts:z',
|
wrapped_config: '/root/.config/kupfer/kupferbootstrap.toml',
|
||||||
]
|
}
|
||||||
|
volumes |= dict({(config.file['paths'][vol_name], vol_dest) for vol_name, vol_dest in DOCKER_PATHS.items()})
|
||||||
|
if os.getenv('KUPFERBOOTSTRAP_PREBUILTS'):
|
||||||
|
volumes |= {os.getenv("KUPFERBOOTSTRAP_PREBUILTS"): '/prebuilts'}
|
||||||
cmd = [
|
cmd = [
|
||||||
'docker',
|
'docker',
|
||||||
'run',
|
'run',
|
||||||
|
@ -75,19 +92,7 @@ def wrap_docker():
|
||||||
'--interactive',
|
'--interactive',
|
||||||
'--tty',
|
'--tty',
|
||||||
'--privileged',
|
'--privileged',
|
||||||
'-v',
|
] + _docker_volumes(volumes) + [tag, 'kupferbootstrap'] + sys.argv[1:]
|
||||||
f'{os.getcwd()}:/src:z',
|
|
||||||
] + prebuilts_mount + [
|
|
||||||
'-v',
|
|
||||||
f'{os.path.join(appdirs.user_cache_dir("kupfer"),"chroot")}:/chroot:z',
|
|
||||||
'-v',
|
|
||||||
f'{os.path.join(appdirs.user_cache_dir("kupfer"),"pacman")}:/var/cache/pacman/pkg:z',
|
|
||||||
'-v',
|
|
||||||
f'{os.path.join(appdirs.user_cache_dir("kupfer"),"jumpdrive")}:/var/cache/jumpdrive:z',
|
|
||||||
'-v',
|
|
||||||
'/dev:/dev',
|
|
||||||
#'-v', '/mnt/kupfer:/mnt/kupfer:z',
|
|
||||||
] + [tag, 'kupferbootstrap'] + sys.argv[1:]
|
|
||||||
logging.debug('Wrapping in docker:' + repr(cmd))
|
logging.debug('Wrapping in docker:' + repr(cmd))
|
||||||
result = subprocess.run(cmd)
|
result = subprocess.run(cmd)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue