From 439abc44022403a9359faec3b0f6ae58e5029539 Mon Sep 17 00:00:00 2001 From: advaithm Date: Sat, 22 May 2021 18:18:05 +0530 Subject: fixed bootloader flag not being set --- archinstall/lib/installer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'archinstall') diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 29b3bc1a..1be398e9 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -453,6 +453,7 @@ class Installer: self.pacstrap('efibootmgr') o = b''.join(SysCommand(f'/usr/bin/arch-chroot {self.target} grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB')) SysCommand('/usr/bin/arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg') + self.helper_flags['bootloder'] = True return True else: root_device = subprocess.check_output(f'basename "$(readlink -f /sys/class/block/{root_partition.path.replace("/dev/", "")}/..)"', shell=True).decode().strip() @@ -460,7 +461,7 @@ class Installer: root_device = f"{root_partition.path}" o = b''.join(SysCommand(f'/usr/bin/arch-chroot {self.target} grub-install --target=i386-pc /dev/{root_device}')) SysCommand('/usr/bin/arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg') - self.helper_flags['bootloader'] = bootloader + self.helper_flags['bootloader'] = True return True else: raise RequirementError(f"Unknown (or not yet implemented) bootloader requested: {bootloader}") -- cgit v1.2.3-70-g09d2 From f2e7b1440a0ad7c04bd7540b13eddd1f1f0069b7 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Sat, 22 May 2021 19:58:40 +0200 Subject: Since SysCommand() wraps SysCommandWorker(), but SysCommand() doesn't use contexts, we have to flush the output manually here to avoid newlines not being before the next output. --- archinstall/lib/general.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'archinstall') diff --git a/archinstall/lib/general.py b/archinstall/lib/general.py index 249c7890..3b62c891 100644 --- a/archinstall/lib/general.py +++ b/archinstall/lib/general.py @@ -333,6 +333,10 @@ class SysCommand: while self.session.ended is None: self.session.poll() + if self.peak_output: + sys.stdout.write('\n') + sys.stdout.flush() + except SysCallError: return False -- cgit v1.2.3-70-g09d2 From 1552cc82773b28b91a90f5023565538a2eb965bd Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Sat, 22 May 2021 20:50:02 +0200 Subject: Re-worked the select_profile() user interaction. It no longer takes options as a parameter, instead it sources the profiles available, prints a curated list but allows for any input that is a valid profile. --- archinstall/lib/user_interaction.py | 14 ++++++-------- examples/guided.py | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) (limited to 'archinstall') diff --git a/archinstall/lib/user_interaction.py b/archinstall/lib/user_interaction.py index 50c62aa9..503e9a03 100644 --- a/archinstall/lib/user_interaction.py +++ b/archinstall/lib/user_interaction.py @@ -563,28 +563,26 @@ def select_disk(dict_o_disks): raise DiskError('select_disk() requires a non-empty dictionary of disks to select from.') -def select_profile(options): +def select_profile(): """ Asks the user to select a profile from the `options` dictionary parameter. Usually this is combined with :ref:`archinstall.list_profiles`. - :param options: A `dict` where keys are the profile name, value should be a dict containing profile information. - :type options: dict - :return: The name/dictionary key of the selected profile :rtype: str """ - profiles = sorted(list(options)) + shown_profiles = sorted(list(archinstall.list_profiles(filter_top_level_profiles=True))) + actual_profiles_raw = shown_profiles + sorted([profile for profile in archinstall.list_profiles() if profile not in shown_profiles]) - if len(profiles) >= 1: - for index, profile in enumerate(profiles): + if len(shown_profiles) >= 1: + for index, profile in enumerate(shown_profiles): print(f"{index}: {profile}") print(' -- The above list is a set of pre-programmed profiles. --') print(' -- They might make it easier to install things like desktop environments. --') print(' -- (Leave blank and hit enter to skip this step and continue) --') - selected_profile = generic_select(profiles, 'Enter a pre-programmed profile name if you want to install one: ', options_output=False) + selected_profile = generic_select(actual_profiles_raw, 'Enter a pre-programmed profile name if you want to install one: ', options_output=False) if selected_profile: return Profile(None, selected_profile) else: diff --git a/examples/guided.py b/examples/guided.py index 122f0804..7d033eaf 100644 --- a/examples/guided.py +++ b/examples/guided.py @@ -193,7 +193,7 @@ def ask_user_questions(): # Ask for archinstall-specific profiles (such as desktop environments etc) if not archinstall.arguments.get('profile', None): - archinstall.arguments['profile'] = archinstall.select_profile(archinstall.list_profiles(filter_top_level_profiles=True)) + archinstall.arguments['profile'] = archinstall.select_profile() else: archinstall.arguments['profile'] = Profile(installer=None, path=archinstall.arguments['profile']) -- cgit v1.2.3-70-g09d2 From 662ffb05b2dcb0e5a3f134c05a2cea17ea6e8062 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Sat, 22 May 2021 20:51:59 +0200 Subject: Fixes docstrings. --- archinstall/lib/user_interaction.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'archinstall') diff --git a/archinstall/lib/user_interaction.py b/archinstall/lib/user_interaction.py index 503e9a03..59768334 100644 --- a/archinstall/lib/user_interaction.py +++ b/archinstall/lib/user_interaction.py @@ -565,8 +565,7 @@ def select_disk(dict_o_disks): def select_profile(): """ - Asks the user to select a profile from the `options` dictionary parameter. - Usually this is combined with :ref:`archinstall.list_profiles`. + Asks the user to select a profile from the available profiles. :return: The name/dictionary key of the selected profile :rtype: str -- cgit v1.2.3-70-g09d2 From 1bc218b2e1b4844750dc5573a5db1034c51841c5 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Sat, 22 May 2021 20:57:36 +0200 Subject: Forgot an important import. --- archinstall/lib/user_interaction.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'archinstall') diff --git a/archinstall/lib/user_interaction.py b/archinstall/lib/user_interaction.py index 59768334..0a4cd0f9 100644 --- a/archinstall/lib/user_interaction.py +++ b/archinstall/lib/user_interaction.py @@ -17,7 +17,7 @@ from .hardware import AVAILABLE_GFX_DRIVERS, has_uefi from .locale_helpers import list_keyboard_languages, verify_keyboard_layout, search_keyboard_layout from .networking import list_interfaces from .output import log -from .profiles import Profile +from .profiles import Profile, list_profiles # TODO: Some inconsistencies between the selection processes. @@ -570,8 +570,8 @@ def select_profile(): :return: The name/dictionary key of the selected profile :rtype: str """ - shown_profiles = sorted(list(archinstall.list_profiles(filter_top_level_profiles=True))) - actual_profiles_raw = shown_profiles + sorted([profile for profile in archinstall.list_profiles() if profile not in shown_profiles]) + shown_profiles = sorted(list(list_profiles(filter_top_level_profiles=True))) + actual_profiles_raw = shown_profiles + sorted([profile for profile in list_profiles() if profile not in shown_profiles]) if len(shown_profiles) >= 1: for index, profile in enumerate(shown_profiles): -- cgit v1.2.3-70-g09d2 From 48f1e624279e5a0cb1914663d3d3e88982cbf751 Mon Sep 17 00:00:00 2001 From: Yash Tripathi Date: Sun, 23 May 2021 11:03:16 +0530 Subject: bringing back the old method for parsing extra args as config values --- archinstall/__init__.py | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) (limited to 'archinstall') diff --git a/archinstall/__init__.py b/archinstall/__init__.py index ee4748f6..e5fbd95f 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -32,16 +32,7 @@ def initialize_arguments(): parser.add_argument("--silent", action="store_true", help="Warning!!! No prompts, ignored if config is not passed") parser.add_argument("--script", default="guided", nargs="?", help="Script to run for installation", type=str) - parser.add_argument("--vars", - metavar="KEY=VALUE", - nargs='?', - help="Set a number of key-value pairs " - "(do not put spaces before or after the = sign). " - "If a value contains spaces, you should define " - "it with double quotes: " - 'foo="this is a sentence". Note that ' - "values are always treated as strings.") - args = parser.parse_args() + args, unknowns = parser.parse_known_args() if args.config is not None: try: # First, let's check if this is a URL scheme instead of a filename @@ -57,14 +48,15 @@ def initialize_arguments(): print(e) # Installation can't be silent if config is not passed config["silent"] = args.silent - if args.vars is not None: - try: - for var in args.vars.split(' '): - key, val = var.split("=") - config[key] = val - except Exception as e: - print(e) + for arg in unknowns: + if '--' == arg[:2]: + if '=' in arg: + key, val = [x.strip() for x in arg[2:].split('=', 1)] + else: + key, val = arg[2:], True + config[key] = val config["script"] = args.script + print(config) return config -- cgit v1.2.3-70-g09d2 From 194d45ad2dd9ae0bc051204810cfc5c38a22d33d Mon Sep 17 00:00:00 2001 From: Yash Tripathi Date: Sun, 23 May 2021 11:52:52 +0530 Subject: removed debug code --- archinstall/__init__.py | 1 - 1 file changed, 1 deletion(-) (limited to 'archinstall') diff --git a/archinstall/__init__.py b/archinstall/__init__.py index e5fbd95f..efd3e964 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -56,7 +56,6 @@ def initialize_arguments(): key, val = arg[2:], True config[key] = val config["script"] = args.script - print(config) return config -- cgit v1.2.3-70-g09d2 From 9fa9520ac9a172a7d8fed934874019eb94169134 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Sun, 23 May 2021 10:32:40 +0200 Subject: Version bump for tagging. --- archinstall/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'archinstall') diff --git a/archinstall/__init__.py b/archinstall/__init__.py index ee4748f6..00de0334 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -23,7 +23,7 @@ from .lib.user_interaction import * parser = ArgumentParser() -__version__ = "2.2.0.dev1" +__version__ = "2.2.0.RC1" def initialize_arguments(): -- cgit v1.2.3-70-g09d2 From 43792cd7f39524f97df05e84132d99b132817f70 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Sun, 23 May 2021 11:37:51 +0200 Subject: Spelling error --- archinstall/lib/installer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'archinstall') diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 1be398e9..b459e990 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -453,7 +453,7 @@ class Installer: self.pacstrap('efibootmgr') o = b''.join(SysCommand(f'/usr/bin/arch-chroot {self.target} grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB')) SysCommand('/usr/bin/arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg') - self.helper_flags['bootloder'] = True + self.helper_flags['bootloader'] = True return True else: root_device = subprocess.check_output(f'basename "$(readlink -f /sys/class/block/{root_partition.path.replace("/dev/", "")}/..)"', shell=True).decode().strip() -- cgit v1.2.3-70-g09d2 From 7daaf1143fca2723bfb63ab4e3030485446da1c0 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Sun, 23 May 2021 14:18:49 +0200 Subject: Fixes #489 --- archinstall/lib/installer.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'archinstall') diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index b459e990..0044532f 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -1,6 +1,6 @@ from .disk import * from .hardware import * -from .locale_helpers import verify_x11_keyboard_layout +from .locale_helpers import verify_keyboard_layout, verify_x11_keyboard_layout from .mirrors import * from .storage import storage from .user_interaction import * @@ -547,6 +547,8 @@ class Installer: self.log(f"Invalid x11-keyboard language specified: {language}", fg="red", level=logging.ERROR) return False + from .systemd import Boot + with Boot(self) as session: session.SysCommand(["localectl", "set-x11-keymap", '""']) -- cgit v1.2.3-70-g09d2