add stable version with updates
This commit is contained in:
parent
ac44379453
commit
fd5ed5e92f
1 changed files with 28 additions and 8 deletions
36
akshara
36
akshara
|
@ -139,31 +139,37 @@ def update_system():
|
|||
|
||||
info('downloading Arch tarball...')
|
||||
|
||||
# TODO: currently it errors if it doesn't have arch-repo anyways, so this doesn't need any extra checking, maybe add a check for that later though
|
||||
# The mirror to use for downloading the bootstrap image
|
||||
# For example, for the Arch mirror at mirrors.acm.wpi.edu, you'd use https://mirrors.acm.wpi.edu/archlinux
|
||||
# Not sure why this wouldn't just use `arch-repo` but whatever
|
||||
bootstrap_mirror = blend_release.get("arch-repo")
|
||||
|
||||
if not os.path.isfile('/.update.tar.zst'):
|
||||
if exec('wget', '-q', '--show-progress', 'https://geo.mirror.pkgbuild.com/iso/latest/archlinux-bootstrap-x86_64.tar.zst', '-O', '/.update.tar.zst') != 0:
|
||||
if exec('wget', '-q', '--show-progress', f'{bootstrap_mirror}/iso/latest/archlinux-bootstrap-x86_64.tar.zst', '-O', '/.update.tar.zst') != 0:
|
||||
warn('failed download')
|
||||
print()
|
||||
info('trying download again...')
|
||||
print()
|
||||
exec('rm', '-f', '/.update.tar.zst')
|
||||
if exec('wget', '-q', '--show-progress', 'https://geo.mirror.pkgbuild.com/iso/latest/archlinux-bootstrap-x86_64.tar.zst', '-O', '/.update.tar.zst') != 0:
|
||||
if exec('wget', '-q', '--show-progress', f'{bootstrap_mirror}/iso/latest/archlinux-bootstrap-x86_64.tar.zst', '-O', '/.update.tar.zst') != 0:
|
||||
error('failed download')
|
||||
print()
|
||||
error('update failed')
|
||||
sys.exit(50)
|
||||
|
||||
if exec('bash', '-c', 'sha256sum -c --ignore-missing <(wget -qO- https://geo.mirror.pkgbuild.com/iso/latest/sha256sums.txt | sed "s/archlinux-bootstrap-x86_64\\.tar\\.zst/.update.tar.zst/g") 2>/dev/null') != 0:
|
||||
if exec('bash', '-c', f'sha256sum -c --ignore-missing <(wget -qO- {bootstrap_mirror}/iso/latest/sha256sums.txt | sed "s/archlinux-bootstrap-x86_64\\.tar\\.zst/.update.tar.zst/g") 2>/dev/null') != 0:
|
||||
error('failed checksum verification')
|
||||
print()
|
||||
info('trying download again...')
|
||||
exec('rm', '-f', '/.update.tar.zst')
|
||||
if exec('wget', '-q', '--show-progress', 'https://geo.mirror.pkgbuild.com/iso/latest/archlinux-bootstrap-x86_64.tar.zst', '-O', '/.update.tar.zst') != 0:
|
||||
if exec('wget', '-q', '--show-progress', f'{bootstrap_mirror}/iso/latest/archlinux-bootstrap-x86_64.tar.zst', '-O', '/.update.tar.zst') != 0:
|
||||
error('failed download')
|
||||
print()
|
||||
error('update failed')
|
||||
sys.exit(50)
|
||||
return
|
||||
if exec('bash', '-c', 'sha256sum -c --ignore-missing <(wget -qO- https://geo.mirror.pkgbuild.com/iso/latest/sha256sums.txt | sed "s/archlinux-bootstrap-x86_64\\.tar\\.zst/.update.tar.zst/g") 2>/dev/null') != 0:
|
||||
if exec('bash', '-c', f'sha256sum -c --ignore-missing <(wget -qO- {bootstrap_mirror}/iso/latest/sha256sums.txt | sed "s/archlinux-bootstrap-x86_64\\.tar\\.zst/.update.tar.zst/g") 2>/dev/null') != 0:
|
||||
error('failed checksum verification')
|
||||
print()
|
||||
error('update failed')
|
||||
|
@ -196,9 +202,7 @@ def update_system():
|
|||
'blend-files'
|
||||
]
|
||||
|
||||
keep = [
|
||||
'/usr/share'
|
||||
]
|
||||
persistent_files = []
|
||||
|
||||
if (type(blend_release.get('impl')) == str and
|
||||
type(blend_release.get('track')) != 'custom'):
|
||||
|
@ -224,6 +228,9 @@ def update_system():
|
|||
if type(blend_release.get('user-services')) == list:
|
||||
user_services += blend_release.get('user-services')
|
||||
|
||||
if type(blend_release.get('persistent-files')) == list:
|
||||
persistent_files += blend_release.get('persistent-files')
|
||||
|
||||
exec_chroot('rm', '-f', '/.new_rootfs/etc/resolv.conf')
|
||||
|
||||
with open('/.new_rootfs/etc/resolv.conf', 'w') as pacman_mirrorlist_conf:
|
||||
|
@ -327,6 +334,12 @@ Server = {package_repo["repo-url"]}
|
|||
if type(user_service) is str:
|
||||
exec_chroot('systemctl', 'enable', '--global', user_service)
|
||||
|
||||
for persistent_file in persistent_files:
|
||||
if type(persistent_file) is str:
|
||||
if os.path.exists(persistent_file):
|
||||
exec('mkdir', '-p', '/.new_rootfs/'+ os.path.dirname(persistent_file))
|
||||
exec('cp', persistent_file, '/.new_rootfs/'+ persistent_file)
|
||||
|
||||
if type(blend_release.get('commands')) == list:
|
||||
for command in blend_release.get('commands'):
|
||||
if type(command) == str:
|
||||
|
@ -492,3 +505,10 @@ try:
|
|||
command()
|
||||
except KeyboardInterrupt:
|
||||
error('aborting')
|
||||
# remove update and akshara stuff if the program is exited
|
||||
exec('rm', '-rf', '/.new_rootfs/')
|
||||
exec('rm', '-rf', '/.update_rootfs')
|
||||
# it's basically impossible to ^C before akshara has exited but after it's created this file
|
||||
# and i don't *think* that "update" would be destructive at all (unless it failed to run and would't boot), but i don't quite understand it soooo just to be on the safe side
|
||||
exec('rm', '-f', '/.update')
|
||||
# TODO: add similar handling for errors, and an option to not delete stuff on error/early exit
|
||||
|
|
Loading…
Reference in a new issue