misc fixes for distros/images not matching up right

* fix arch/arch-linux mismatch
* fix expecting fedora-rawhide (now fedora-*)
* fix inconsistency in ubuntu naming
* add aliases for arch and ubuntu to avoid breakage
This commit is contained in:
askiiart 2025-04-08 15:31:39 -05:00
parent f7c5507d92
commit 4732a5735d
Signed by untrusted user who does not match committer: askiiart
GPG key ID: 6A32977DAF31746A
2 changed files with 44 additions and 22 deletions

55
blend
View file

@ -92,7 +92,7 @@ distro_map = {
'fedora-39': 'registry.fedoraproject.org/fedora-toolbox:39', 'fedora-39': 'registry.fedoraproject.org/fedora-toolbox:39',
'centos': 'quay.io/toolbx-images/centos-toolbox:latest', 'centos': 'quay.io/toolbx-images/centos-toolbox:latest',
'ubuntu-22.04': 'quay.io/toolbx/ubuntu-toolbox:22.04', 'ubuntu-22.04': 'quay.io/toolbx/ubuntu-toolbox:22.04',
'ubuntu-24.04-lts': 'quay.io/toolbx/ubuntu-toolbox:24.04', 'ubuntu-24.04': 'quay.io/toolbx/ubuntu-toolbox:24.04',
} }
default_distro = 'arch-linux' default_distro = 'arch-linux'
@ -168,8 +168,8 @@ def core_create_container():
info(f'creating container {name}, using {distro}') info(f'creating container {name}, using {distro}')
if check_container(name): if check_container(name):
error(f'container {name} already exists') error(f'container {name} already exists')
exit(1) exit(1)
podman_command = [] podman_command = []
@ -248,12 +248,15 @@ def core_run_container(cmd):
def core_install_pkg(pkg): def core_install_pkg(pkg):
if args.distro == 'fedora-rawhide': if args.distro == 'arch':
args.distro = 'arch-linux'
if args.distro.startswith('fedora-'):
if args.noconfirm == True: if args.noconfirm == True:
core_run_container(f'sudo dnf -y install {pkg}') core_run_container(f'sudo dnf -y install {pkg}')
else: else:
core_run_container(f'sudo dnf install {pkg}') core_run_container(f'sudo dnf install {pkg}')
elif args.distro == 'arch': elif args.distro == 'arch-linux':
if core_get_retcode('[ -f /usr/bin/yay ]') != 0: if core_get_retcode('[ -f /usr/bin/yay ]') != 0:
core_run_container('sudo pacman -Sy') core_run_container('sudo pacman -Sy')
core_run_container( core_run_container(
@ -274,12 +277,15 @@ def core_install_pkg(pkg):
def core_remove_pkg(pkg): def core_remove_pkg(pkg):
if args.distro == 'fedora-rawhide': if args.distro == 'arch':
args.distro = 'arch-linux'
if args.distro.startswith('fedora-'):
if args.noconfirm == True: if args.noconfirm == True:
core_run_container(f'sudo dnf -y remove {pkg}') core_run_container(f'sudo dnf -y remove {pkg}')
else: else:
core_run_container(f'sudo dnf remove {pkg}') core_run_container(f'sudo dnf remove {pkg}')
elif args.distro == 'arch': elif args.distro == 'arch-linux':
if args.noconfirm == True: if args.noconfirm == True:
core_run_container(f'sudo pacman --noconfirm -Rcns {pkg}') core_run_container(f'sudo pacman --noconfirm -Rcns {pkg}')
else: else:
@ -293,9 +299,12 @@ def core_remove_pkg(pkg):
def core_search_pkg(pkg): def core_search_pkg(pkg):
if args.distro == 'fedora-rawhide': if args.distro == 'arch':
args.distro = 'arch-linux'
if args.distro.startswith('fedora-'):
core_run_container(f'dnf search {pkg}') core_run_container(f'dnf search {pkg}')
elif args.distro == 'arch': elif args.distro == 'arch-linux':
core_run_container(f'yay -Sy') core_run_container(f'yay -Sy')
core_run_container(f'yay {pkg}') core_run_container(f'yay {pkg}')
elif args.distro.startswith('ubuntu-'): elif args.distro.startswith('ubuntu-'):
@ -304,9 +313,12 @@ def core_search_pkg(pkg):
def core_show_pkg(pkg): def core_show_pkg(pkg):
if args.distro == 'fedora-rawhide': if args.distro == 'arch':
args.distro = 'arch-linux'
if args.distro.startswith('fedora-'):
core_run_container(f'dnf info {pkg}') core_run_container(f'dnf info {pkg}')
elif args.distro == 'arch': elif args.distro == 'arch-linux':
core_run_container(f'yay -Sy') core_run_container(f'yay -Sy')
core_run_container(f'yay -Si {pkg}') core_run_container(f'yay -Si {pkg}')
elif args.distro.startswith('ubuntu-'): elif args.distro.startswith('ubuntu-'):
@ -358,21 +370,27 @@ def show_blend():
def sync_blends(): def sync_blends():
if args.distro == 'fedora-rawhide': if args.distro == 'arch':
args.distro = 'arch-linux'
if args.distro.startswith('fedora-'):
core_run_container(f'dnf makecache') core_run_container(f'dnf makecache')
elif args.distro == 'arch': elif args.distro == 'arch-linux':
core_run_container(f'yay -Syy') core_run_container(f'yay -Syy')
elif args.distro.startswith('ubuntu-'): elif args.distro.startswith('ubuntu-'):
core_run_container(f'sudo apt-get update') core_run_container(f'sudo apt-get update')
def update_blends(): def update_blends():
if args.distro == 'fedora-rawhide': if args.distro == 'arch':
args.distro = 'arch-linux'
if args.distro.startswith('fedora-'):
if args.noconfirm == True: if args.noconfirm == True:
core_run_container(f'sudo dnf -y upgrade') core_run_container(f'sudo dnf -y upgrade')
else: else:
core_run_container(f'sudo dnf upgrade') core_run_container(f'sudo dnf upgrade')
elif args.distro == 'arch': elif args.distro == 'arch-linux':
if args.noconfirm == True: if args.noconfirm == True:
core_run_container(f'yay --noconfirm') core_run_container(f'yay --noconfirm')
else: else:
@ -428,6 +446,7 @@ def enter_container():
def create_container(): def create_container():
for container in args.pkg: for container in args.pkg:
container = 'ubuntu-24.04' if container == 'ubuntu-24.04-lts' else container
args.container_name = container args.container_name = container
if container in distro_map.keys() and distro_input == None: if container in distro_map.keys() and distro_input == None:
args.distro = container args.distro = container
@ -443,10 +462,12 @@ def remove_container():
stdout=subprocess.DEVNULL) stdout=subprocess.DEVNULL)
for bin in os.listdir(os.path.expanduser('~/.local/bin/blend_bin')): for bin in os.listdir(os.path.expanduser('~/.local/bin/blend_bin')):
if bin.endswith(f'.{container}'): if bin.endswith(f'.{container}'):
os.remove(os.path.join(os.path.expanduser('~/.local/bin/blend_bin'), bin)) os.remove(os.path.join(os.path.expanduser(
'~/.local/bin/blend_bin'), bin))
for app in os.listdir(os.path.expanduser('~/.local/share/applications')): for app in os.listdir(os.path.expanduser('~/.local/share/applications')):
if app.startswith(f'blend;{container};'): if app.startswith(f'blend;{container};'):
os.remove(os.path.join(os.path.expanduser('~/.local/share/applications'), app)) os.remove(os.path.join(os.path.expanduser(
'~/.local/share/applications'), app))
def start_containers(): def start_containers():

11
user
View file

@ -156,18 +156,19 @@ def associate_binary(association):
@cli.command("create-container") @cli.command("create-container")
@click.argument('container_name') @click.argument('container_name')
@click.argument('distro', default='arch') @click.argument('distro', required=False)
def create_container(container_name, distro): def create_container(container_name, distro):
''' '''
Create a container Create a container
''' '''
if distro not in ('arch', 'almalinux-9', 'crystal-linux', 'debian', 'fedora-38', 'kali-linux', 'neurodebian-bookworm', 'rocky-linux', 'ubuntu-22.04', 'ubuntu-23.04'):
error(
f'distro {colors.bold}{distro}{colors.reset} not supported')
if subprocess.run(['podman', 'container', 'exists', container_name], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL).returncode == 0: if subprocess.run(['podman', 'container', 'exists', container_name], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL).returncode == 0:
error(f'container {colors.bold}{container_name}{colors.reset} already exists') error(f'container {colors.bold}{container_name}{colors.reset} already exists')
exit(1) exit(1)
subprocess.run(['blend', 'create-container', '-cn', container_name, '-d', distro]) args = ['blend', 'create-container', '-cn', container_name]
# blend handles no distro being specified already
if distro:
args.extend(['-d', distro])
exit(subprocess.run(args).returncode)
@cli.command("delete-container") @cli.command("delete-container")