From ea029ed3f9b1bd63c878d42649c29b3ba8ba249b Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 27 Feb 2023 09:39:48 +0100 Subject: Patch for 1557 (#1645) * Attempting a retry-attempt on the broken part of lsblk * Improved logging * Adding a retry to Partition._call_lsblk() * Added error checks if lsblk returns nothing, also handles empty Partition().info instance. * Added missing check of disk encryption is None or not. * Added tweak to catching output from lsblk.stderr * Added missing check of disk encryption is None or not. * Fixed a logic test for empty lsblk info * Fixed instances of None being interated * Added some errro handling for weird block devices * Fixed flake8 * Added /etc/vconsole.conf generation in Installer.mkinitcpio() as it's a dependency for it to generate properly without errors. Otherwise we'll get ==> ERRROR: file not found: '/etc/vconsole.conf' * Prep for tagging RC1 of 2.5.3 * Corrected helpers.py get_blockdevice_info() to deal with empty lsblk results --- archinstall/__init__.py | 2 +- archinstall/lib/disk/filesystem.py | 2 +- archinstall/lib/disk/helpers.py | 88 ++++++++++++++++---------- archinstall/lib/disk/partition.py | 125 ++++++++++++++++++++++--------------- archinstall/lib/installer.py | 52 ++++++++------- 5 files changed, 154 insertions(+), 115 deletions(-) diff --git a/archinstall/__init__.py b/archinstall/__init__.py index e496d213..84797751 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -47,7 +47,7 @@ from .lib.configuration import * from .lib.udev import udevadm_info parser = ArgumentParser() -__version__ = "2.5.2" +__version__ = "2.5.3rc1" storage['__version__'] = __version__ # add the custome _ as a builtin, it can now be used anywhere in the diff --git a/archinstall/lib/disk/filesystem.py b/archinstall/lib/disk/filesystem.py index bdfa502a..1e722ce5 100644 --- a/archinstall/lib/disk/filesystem.py +++ b/archinstall/lib/disk/filesystem.py @@ -113,7 +113,7 @@ class Filesystem: format_options = partition.get('options',[]) + partition.get('filesystem',{}).get('format_options',[]) disk_encryption: DiskEncryption = storage['arguments'].get('disk_encryption') - if partition in disk_encryption.partitions: + if disk_encryption and partition in disk_encryption.partitions: if not partition['device_instance']: raise DiskError(f"Internal error caused us to loose the partition. Please report this issue upstream!") diff --git a/archinstall/lib/disk/helpers.py b/archinstall/lib/disk/helpers.py index a5164b76..aea794f5 100644 --- a/archinstall/lib/disk/helpers.py +++ b/archinstall/lib/disk/helpers.py @@ -212,6 +212,47 @@ def all_disks() -> List[BlockDevice]: log(f"[Deprecated] archinstall.all_disks() is deprecated. Use archinstall.all_blockdevices() with the appropriate filters instead.", level=logging.WARNING, fg="yellow") return all_blockdevices(partitions=False, mappers=False) +def get_blockdevice_info(device_path, exclude_iso_dev :bool = True) -> Dict[str, Any]: + for retry_attempt in range(storage['DISK_RETRY_ATTEMPTS']): + partprobe(device_path) + time.sleep(max(0.1, storage['DISK_TIMEOUTS'] * retry_attempt)) + + try: + if exclude_iso_dev: + # exclude all devices associated with the iso boot locations + iso_devs = ['/run/archiso/airootfs', '/run/archiso/bootmnt'] + + try: + lsblk_info = get_lsblk_info(device_path) + except DiskError: + continue + + if any([dev in lsblk_info.mountpoints for dev in iso_devs]): + continue + + information = blkid(f'blkid -p -o export {device_path}') + return enrich_blockdevice_information(information) + except SysCallError as ex: + if ex.exit_code in (512, 2): + # Assume that it's a loop device, and try to get info on it + try: + resolved_device_name = device_path.readlink().name + except OSError: + resolved_device_name = device_path.name + + try: + information = get_loop_info(device_path) + if not information: + raise SysCallError(f"Could not get loop information for {resolved_device_name}", exit_code=1) + return enrich_blockdevice_information(information) + + except SysCallError: + information = get_blockdevice_uevent(resolved_device_name) + return enrich_blockdevice_information(information) + else: + # We could not reliably get any information, perhaps the disk is clean of information? + if retry_attempt == storage['DISK_RETRY_ATTEMPTS'] - 1: + raise ex def all_blockdevices( mappers: bool = False, @@ -230,40 +271,18 @@ def all_blockdevices( # we'll iterate the /sys/class definitions and find the information # from there. for block_device in glob.glob("/sys/class/block/*"): - device_path = pathlib.Path(f"/dev/{pathlib.Path(block_device).readlink().name}") + try: + device_path = pathlib.Path(f"/dev/{pathlib.Path(block_device).readlink().name}") + except FileNotFoundError: + log(f"Unknown device found by '/sys/class/block/*', ignoring: {device_path}", level=logging.WARNING, fg="yellow") if device_path.exists() is False: log(f"Unknown device found by '/sys/class/block/*', ignoring: {device_path}", level=logging.WARNING, fg="yellow") continue - try: - if exclude_iso_dev: - # exclude all devices associated with the iso boot locations - iso_devs = ['/run/archiso/airootfs', '/run/archiso/bootmnt'] - lsblk_info = get_lsblk_info(device_path) - if any([dev in lsblk_info.mountpoints for dev in iso_devs]): - continue - - information = blkid(f'blkid -p -o export {device_path}') - except SysCallError as ex: - if ex.exit_code in (512, 2): - # Assume that it's a loop device, and try to get info on it - try: - information = get_loop_info(device_path) - if not information: - print("Exit code for blkid -p -o export was:", ex.exit_code) - raise SysCallError("Could not get loop information", exit_code=1) - - except SysCallError: - print("Not a loop device, trying uevent rules.") - information = get_blockdevice_uevent(pathlib.Path(block_device).readlink().name) - else: - # We could not reliably get any information, perhaps the disk is clean of information? - print("Raising ex because:", ex.exit_code) - raise ex - # return instances - - information = enrich_blockdevice_information(information) + information = get_blockdevice_info(device_path) + if not information: + continue for path, path_info in information.items(): if path_info.get('DMCRYPT_NAME'): @@ -409,7 +428,6 @@ def get_partitions_in_use(mountpoint :str) -> Dict[str, Any]: return {} output = json.loads(output) - # print(output) mounts = {} @@ -421,11 +439,13 @@ def get_partitions_in_use(mountpoint :str) -> Dict[str, Any]: continue if isinstance(blockdev, Partition): - for blockdev_mountpoint in blockdev.mountpoints: - block_devices_mountpoints[blockdev_mountpoint] = blockdev + if blockdev.mountpoints: + for blockdev_mountpoint in blockdev.mountpoints: + block_devices_mountpoints[blockdev_mountpoint] = blockdev else: - for blockdev_mountpoint in blockdev.mount_information: - block_devices_mountpoints[blockdev_mountpoint['target']] = blockdev + if blockdev.mount_information: + for blockdev_mountpoint in blockdev.mount_information: + block_devices_mountpoints[blockdev_mountpoint['target']] = blockdev log(f'Filtering available mounts {block_devices_mountpoints} to those under {mountpoint}', level=logging.DEBUG) diff --git a/archinstall/lib/disk/partition.py b/archinstall/lib/disk/partition.py index 9febf102..12b1a9a6 100644 --- a/archinstall/lib/disk/partition.py +++ b/archinstall/lib/disk/partition.py @@ -98,17 +98,18 @@ class Partition: if mountpoint: self.mount(mountpoint) - self._partition_info = self._fetch_information() - - if not autodetect_filesystem and filesystem: - self._partition_info.filesystem_type = filesystem + try: + self._partition_info = self._fetch_information() + + if not autodetect_filesystem and filesystem: + self._partition_info.filesystem_type = filesystem - if self._partition_info.filesystem_type == 'crypto_LUKS': - self._encrypted = True + if self._partition_info.filesystem_type == 'crypto_LUKS': + self._encrypted = True + except DiskError: + self._partition_info = None - # I hate doint this but I'm currently unsure where this - # is acutally used to be able to fix the typing issues properly - @typing.no_type_check + @typing.no_type_check # I hate doint this but I'm currently unsure where this is used. def __lt__(self, left_comparitor :BlockDevice) -> bool: if type(left_comparitor) == Partition: left_comparitor = left_comparitor.path @@ -120,14 +121,17 @@ class Partition: def __repr__(self, *args :str, **kwargs :str) -> str: mount_repr = '' - if mountpoint := self._partition_info.get_first_mountpoint(): - mount_repr = f", mounted={mountpoint}" - elif self._target_mountpoint: - mount_repr = f", rel_mountpoint={self._target_mountpoint}" + if self._partition_info: + if mountpoint := self._partition_info.get_first_mountpoint(): + mount_repr = f", mounted={mountpoint}" + elif self._target_mountpoint: + mount_repr = f", rel_mountpoint={self._target_mountpoint}" classname = self.__class__.__name__ - if self._encrypted: + if not self._partition_info: + return f'{classname}(path={self._path})' + elif self._encrypted: return f'{classname}(path={self._path}, size={self.size}, PARTUUID={self.part_uuid}, parent={self.real_device}, fs={self._partition_info.filesystem_type}{mount_repr})' else: return f'{classname}(path={self._path}, size={self.size}, PARTUUID={self.part_uuid}, fs={self._partition_info.filesystem_type}{mount_repr})' @@ -146,7 +150,7 @@ class Partition: 'encrypted': self._encrypted, 'start': self.start, 'size': self.end, - 'filesystem': self._partition_info.filesystem_type + 'filesystem': self._partition_info.filesystem_type if self._partition_info else 'Unknown' } return partition_info @@ -164,34 +168,38 @@ class Partition: 'start': self.start, 'size': self.end, 'filesystem': { - 'format': self._partition_info.filesystem_type + 'format': self._partition_info.filesystem_type if self._partition_info else 'None' } } def _call_lsblk(self) -> Dict[str, Any]: - self.partprobe() - # This sleep might be overkill, but lsblk is known to - # work against a chaotic cache that can change during call - # causing no information to be returned (blkid is better) - # time.sleep(1) + for retry_attempt in range(storage['DISK_RETRY_ATTEMPTS']): + self.partprobe() + time.sleep(max(0.1, storage['DISK_TIMEOUTS'] * retry_attempt)) # TODO: Remove, we should be relying on blkid instead of lsblk + # This sleep might be overkill, but lsblk is known to + # work against a chaotic cache that can change during call + # causing no information to be returned (blkid is better) + # time.sleep(1) - # TODO: Maybe incorporate a re-try system here based on time.sleep(max(0.1, storage.get('DISK_TIMEOUTS', 1))) + # TODO: Maybe incorporate a re-try system here based on time.sleep(max(0.1, storage.get('DISK_TIMEOUTS', 1))) - try: - output = SysCommand(f"lsblk --json -b -o+LOG-SEC,SIZE,PTTYPE,PARTUUID,UUID,FSTYPE {self.device_path}").decode('UTF-8') - except SysCallError as error: - # It appears as if lsblk can return exit codes like 8192 to indicate something. - # But it does return output so we'll try to catch it. - output = error.worker.decode('UTF-8') - - if output: try: - lsblk_info = json.loads(output) - return lsblk_info - except json.decoder.JSONDecodeError: - log(f"Could not decode JSON: {output}", fg="red", level=logging.ERROR) - - raise DiskError(f'Failed to read disk "{self.device_path}" with lsblk') + output = SysCommand(f"lsblk --json -b -o+LOG-SEC,SIZE,PTTYPE,PARTUUID,UUID,FSTYPE {self.device_path}").decode('UTF-8') + except SysCallError as error: + # It appears as if lsblk can return exit codes like 8192 to indicate something. + # But it does return output in stderr so we'll try to catch it minus the message/info. + output = error.worker.decode('UTF-8') + if '{' in output: + output = output[output.find('{'):] + + if output: + try: + lsblk_info = json.loads(output) + return lsblk_info + except json.decoder.JSONDecodeError: + log(f"Could not decode JSON: {output}", fg="red", level=logging.ERROR) + + raise DiskError(f'Failed to get partition information "{self.device_path}" with lsblk') def _call_sfdisk(self) -> Dict[str, Any]: output = SysCommand(f"sfdisk --json {self.block_device.path}").decode('UTF-8') @@ -212,9 +220,12 @@ class Partition: lsblk_info = self._call_lsblk() sfdisk_info = self._call_sfdisk() - if not (device := lsblk_info.get('blockdevices', [None])[0]): + if not (device := lsblk_info.get('blockdevices', [])): raise DiskError(f'Failed to retrieve information for "{self.device_path}" with lsblk') + # Grab the first (and only) block device in the list as we're targeting a specific partition + device = device[0] + mountpoints = [Path(mountpoint) for mountpoint in device['mountpoints'] if mountpoint] bootable = sfdisk_info.get('bootable', False) or sfdisk_info.get('type', '') == 'C12A7328-F81F-11D2-BA4B-00A0C93EC93B' @@ -243,7 +254,8 @@ class Partition: @property def filesystem(self) -> str: - return self._partition_info.filesystem_type + if self._partition_info: + return self._partition_info.filesystem_type @property def mountpoint(self) -> Optional[Path]: @@ -253,43 +265,51 @@ class Partition: @property def mountpoints(self) -> List[Path]: - return self._partition_info.mountpoints + if self._partition_info: + return self._partition_info.mountpoints @property def sector_size(self) -> int: - return self._partition_info.sector_size + if self._partition_info: + return self._partition_info.sector_size @property def start(self) -> Optional[int]: - return self._partition_info.start + if self._partition_info: + return self._partition_info.start @property def end(self) -> Optional[int]: - return self._partition_info.end + if self._partition_info: + return self._partition_info.end @property def end_sectors(self) -> Optional[int]: - start = self._partition_info.start - end = self._partition_info.end - if start and end: - return start + end - return None + if self._partition_info: + start = self._partition_info.start + end = self._partition_info.end + if start and end: + return start + end @property def size(self) -> Optional[float]: - return self._partition_info.size + if self._partition_info: + return self._partition_info.size @property def boot(self) -> bool: - return self._partition_info.bootable + if self._partition_info: + return self._partition_info.bootable @property def partition_type(self) -> Optional[str]: - return self._partition_info.pttype + if self._partition_info: + return self._partition_info.pttype @property def part_uuid(self) -> str: - return self._partition_info.partuuid + if self._partition_info: + return self._partition_info.partuuid @property def uuid(self) -> Optional[str]: @@ -355,7 +375,8 @@ class Partition: log(f"Could not get PARTUUID of partition using 'blkid -s PARTUUID -o value {self.device_path}': {error}") - return self._partition_info.uuid + if self._partition_info: + return self._partition_info.uuid @property def encrypted(self) -> Union[bool, None]: diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 1926f593..43542bc3 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -198,7 +198,7 @@ class Installer: def _create_keyfile(self,luks_handle , partition :dict, password :str): """ roiutine to create keyfiles, so it can be moved elsewhere """ - if self._disk_encryption.generate_encryption_file(partition): + if self._disk_encryption and self._disk_encryption.generate_encryption_file(partition): if not (cryptkey_dir := pathlib.Path(f"{self.target}/etc/cryptsetup-keys.d")).exists(): cryptkey_dir.mkdir(parents=True) # Once we store the key as ../xyzloop.key systemd-cryptsetup can automatically load this key @@ -246,20 +246,21 @@ class Installer: mount_queue = {} # we manage the encrypted partititons - for partition in self._disk_encryption.partitions: - # open the luks device and all associate stuff - loopdev = f"{storage.get('ENC_IDENTIFIER', 'ai')}{pathlib.Path(partition['device_instance'].path).name}" - - # note that we DON'T auto_unmount (i.e. close the encrypted device so it can be used - with (luks_handle := luks2(partition['device_instance'], loopdev, self._disk_encryption.encryption_password, auto_unmount=False)) as unlocked_device: - if self._disk_encryption.generate_encryption_file(partition) and not self._has_root(partition): - list_luks_handles.append([luks_handle, partition, self._disk_encryption.encryption_password]) - # this way all the requesrs will be to the dm_crypt device and not to the physical partition - partition['device_instance'] = unlocked_device - - if self._has_root(partition) and self._disk_encryption.generate_encryption_file(partition) is False: - if self._disk_encryption.hsm_device: - Fido2.fido2_enroll(self._disk_encryption.hsm_device, partition['device_instance'], self._disk_encryption.encryption_password) + if self._disk_encryption: + for partition in self._disk_encryption.partitions: + # open the luks device and all associate stuff + loopdev = f"{storage.get('ENC_IDENTIFIER', 'ai')}{pathlib.Path(partition['device_instance'].path).name}" + + # note that we DON'T auto_unmount (i.e. close the encrypted device so it can be used + with (luks_handle := luks2(partition['device_instance'], loopdev, self._disk_encryption.encryption_password, auto_unmount=False)) as unlocked_device: + if self._disk_encryption.generate_encryption_file(partition) and not self._has_root(partition): + list_luks_handles.append([luks_handle, partition, self._disk_encryption.encryption_password]) + # this way all the requesrs will be to the dm_crypt device and not to the physical partition + partition['device_instance'] = unlocked_device + + if self._has_root(partition) and self._disk_encryption.generate_encryption_file(partition) is False: + if self._disk_encryption.hsm_device: + Fido2.fido2_enroll(self._disk_encryption.hsm_device, partition['device_instance'], self._disk_encryption.encryption_password) btrfs_subvolumes = [entry for entry in list_part if entry.get('btrfs', {}).get('subvolumes', [])] @@ -292,7 +293,7 @@ class Installer: else: mount_queue[mountpoint] = lambda instance=partition['device_instance'], target=f"{self.target}{mountpoint}": instance.mount(target) - log(f"Using mount order: {list(sorted(mount_queue.items(), key=lambda item: item[0]))}", level=logging.INFO, fg="white") + log(f"Using mount order: {list(sorted(mount_queue.items(), key=lambda item: item[0]))}", level=logging.DEBUG, fg="white") # We mount everything by sorting on the mountpoint itself. for mountpoint, frozen_func in sorted(mount_queue.items(), key=lambda item: item[0]): @@ -641,12 +642,17 @@ class Installer: if plugin.on_mkinitcpio(self): return True + # mkinitcpio will error out if there's no vconsole. + if (vconsole := pathlib.Path(f"{self.target}/etc/vconsole.conf")).exists() is False: + with vconsole.open('w') as fh: + fh.write(f"KEYMAP={storage['arguments']['keyboard-layout']}\n") + with open(f'{self.target}/etc/mkinitcpio.conf', 'w') as mkinit: mkinit.write(f"MODULES=({' '.join(self.MODULES)})\n") mkinit.write(f"BINARIES=({' '.join(self.BINARIES)})\n") mkinit.write(f"FILES=({' '.join(self.FILES)})\n") - if not self._disk_encryption.hsm_device: + if self._disk_encryption and not self._disk_encryption.hsm_device: # For now, if we don't use HSM we revert to the old # way of setting up encryption hooks for mkinitcpio. # This is purely for stability reasons, we're going away from this. @@ -690,7 +696,7 @@ class Installer: self.HOOKS.remove('fsck') if self.detect_encryption(partition): - if self._disk_encryption.hsm_device: + if self._disk_encryption and self._disk_encryption.hsm_device: # Required bby mkinitcpio to add support for fido2-device options self.pacstrap('libfido2') @@ -754,14 +760,6 @@ class Installer: # TODO: Use python functions for this SysCommand(f'/usr/bin/arch-chroot {self.target} chmod 700 /root') - if self._disk_encryption.hsm_device: - # TODO: - # A bit of a hack, but we need to get vconsole.conf in there - # before running `mkinitcpio` because it expects it in HSM mode. - if (vconsole := pathlib.Path(f"{self.target}/etc/vconsole.conf")).exists() is False: - with vconsole.open('w') as fh: - fh.write(f"KEYMAP={storage['arguments']['keyboard-layout']}\n") - self.mkinitcpio('-P') self.helper_flags['base'] = True @@ -882,7 +880,7 @@ class Installer: kernel_options = f"options" - if self._disk_encryption.hsm_device: + if self._disk_encryption and self._disk_encryption.hsm_device: # Note: lsblk UUID must be used, not PARTUUID for sd-encrypt to work kernel_options += f" rd.luks.name={real_device.uuid}=luksdev" # Note: tpm2-device and fido2-device don't play along very well: -- cgit v1.2.3-70-g09d2 From 50d20f0b809758d067bc23f6c8bf2a36f61cc738 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 27 Feb 2023 09:43:26 +0100 Subject: Added more services that we need to wait for. (#1647) * Added more services that we need to wait for. * Fixed small issue with previous commit not checking if disk_encryption is None or not. --- examples/guided.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/examples/guided.py b/examples/guided.py index e242138e..e0753834 100644 --- a/examples/guided.py +++ b/examples/guided.py @@ -146,14 +146,6 @@ def perform_installation(mountpoint): if partition.size < 0.19: # ~200 MiB in GiB raise archinstall.DiskError(f"The selected /boot partition in use is not large enough to properly install a boot loader. Please resize it to at least 200MiB and re-run the installation.") - # if len(mirrors): - # Certain services might be running that affects the system during installation. - # Currently, only one such service is "reflector.service" which updates /etc/pacman.d/mirrorlist - # We need to wait for it before we continue since we opted in to use a custom mirror/region. - installation.log('Waiting for automatic mirror selection (reflector) to complete.', level=logging.INFO) - while archinstall.service_state('reflector') not in ('dead', 'failed'): - time.sleep(1) - # If we've activated NTP, make sure it's active in the ISO too and # make sure at least one time-sync finishes before we continue with the installation if archinstall.arguments.get('ntp', False): @@ -175,6 +167,22 @@ def perform_installation(mountpoint): installation.log(f"Waiting for timedatectl timesync-status to report a timesync against a server", level=logging.INFO) logged = True time.sleep(1) + + # if len(mirrors): + # Certain services might be running that affects the system during installation. + # Currently, only one such service is "reflector.service" which updates /etc/pacman.d/mirrorlist + # We need to wait for it before we continue since we opted in to use a custom mirror/region. + installation.log('Waiting for automatic mirror selection (reflector) to complete.', level=logging.INFO) + while archinstall.service_state('reflector') not in ('dead', 'failed'): + time.sleep(1) + + installation.log('Waiting pacman-init.service to complete.', level=logging.INFO) + while archinstall.service_state('pacman-init') not in ('dead', 'failed'): + time.sleep(1) + + installation.log('Waiting Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete.', level=logging.INFO) + while archinstall.service_state('archlinux-keyring-wkd-sync') not in ('dead', 'failed'): + time.sleep(1) # Set mirrors used by pacstrap (outside of installation) if archinstall.arguments.get('mirror-region', None): -- cgit v1.2.3-70-g09d2 From 3f5170f4227a05b17b01645386e3208137b259dd Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 27 Feb 2023 11:56:44 +0100 Subject: Added 'exited' as a viable status code for services --- examples/guided.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/guided.py b/examples/guided.py index e0753834..0bf30c46 100644 --- a/examples/guided.py +++ b/examples/guided.py @@ -173,15 +173,15 @@ def perform_installation(mountpoint): # Currently, only one such service is "reflector.service" which updates /etc/pacman.d/mirrorlist # We need to wait for it before we continue since we opted in to use a custom mirror/region. installation.log('Waiting for automatic mirror selection (reflector) to complete.', level=logging.INFO) - while archinstall.service_state('reflector') not in ('dead', 'failed'): + while archinstall.service_state('reflector') not in ('dead', 'failed', 'exited'): time.sleep(1) installation.log('Waiting pacman-init.service to complete.', level=logging.INFO) - while archinstall.service_state('pacman-init') not in ('dead', 'failed'): + while archinstall.service_state('pacman-init') not in ('dead', 'failed', 'exited'): time.sleep(1) installation.log('Waiting Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete.', level=logging.INFO) - while archinstall.service_state('archlinux-keyring-wkd-sync') not in ('dead', 'failed'): + while archinstall.service_state('archlinux-keyring-wkd-sync') not in ('dead', 'failed', 'exited'): time.sleep(1) # Set mirrors used by pacstrap (outside of installation) -- cgit v1.2.3-70-g09d2 From fa1bec9679b2b8a85f450e7dd8aa24dc7c22d848 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 27 Feb 2023 19:38:02 +0100 Subject: Bumped version to v2.5.3 --- archinstall/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archinstall/__init__.py b/archinstall/__init__.py index 84797751..6a4c768e 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -47,7 +47,7 @@ from .lib.configuration import * from .lib.udev import udevadm_info parser = ArgumentParser() -__version__ = "2.5.3rc1" +__version__ = "2.5.3" storage['__version__'] = __version__ # add the custome _ as a builtin, it can now be used anywhere in the -- cgit v1.2.3-70-g09d2 From f26b5308597273dfa182b89d265bcc59e057bd0e Mon Sep 17 00:00:00 2001 From: jaybent <55739788+jaybent@users.noreply.github.com> Date: Mon, 27 Feb 2023 23:13:00 +0100 Subject: Rename "peak_output" to "peek_output" (#1648) * Rename "peak_output" to "peek_output" * Added backwards compatability * Added deprecated warning to peak_output --------- Co-authored-by: Anton Hvornum --- archinstall/lib/general.py | 32 ++++++++++++++++++++++---------- archinstall/lib/hsm/fido.py | 2 +- archinstall/lib/installer.py | 8 ++++---- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/archinstall/lib/general.py b/archinstall/lib/general.py index 8c7aed91..bf32a9a8 100644 --- a/archinstall/lib/general.py +++ b/archinstall/lib/general.py @@ -185,12 +185,16 @@ class SysCommandWorker: def __init__(self, cmd :Union[str, List[str]], callbacks :Optional[Dict[str, Any]] = None, + peek_output :Optional[bool] = False, peak_output :Optional[bool] = False, environment_vars :Optional[Dict[str, Any]] = None, logfile :Optional[None] = None, working_directory :Optional[str] = './', remove_vt100_escape_codes_from_lines :bool = True): + if peak_output: + log("SysCommandWorker()'s peak_output is deprecated, use peek_output instead.", level=logging.WARNING, fg='red') + if not callbacks: callbacks = {} if not environment_vars: @@ -208,7 +212,9 @@ class SysCommandWorker: self.cmd = cmd self.callbacks = callbacks - self.peak_output = peak_output + self.peek_output = peek_output + if not self.peek_output and peak_output: + self.peek_output = peak_output # define the standard locale for command outputs. For now the C ascii one. Can be overridden self.environment_vars = {**storage.get('CMD_LOCALE',{}),**environment_vars} self.logfile = logfile @@ -262,7 +268,7 @@ class SysCommandWorker: except: pass - if self.peak_output: + if self.peek_output: # To make sure any peaked output didn't leave us hanging # on the same line we were on. sys.stdout.write("\n") @@ -307,7 +313,7 @@ class SysCommandWorker: self._trace_log_pos = min(max(0, pos), len(self._trace_log)) def peak(self, output: Union[str, bytes]) -> bool: - if self.peak_output: + if self.peek_output: if type(output) == bytes: try: output = output.decode('UTF-8') @@ -320,8 +326,8 @@ class SysCommandWorker: if peak_logfile.exists() is False: change_perm = True - with peak_logfile.open("a") as peak_output_log: - peak_output_log.write(output) + with peak_logfile.open("a") as peek_output_log: + peek_output_log.write(output) if change_perm: os.chmod(str(peak_logfile), stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP) @@ -412,11 +418,15 @@ class SysCommand: cmd :Union[str, List[str]], callbacks :Optional[Dict[str, Callable[[Any], Any]]] = None, start_callback :Optional[Callable[[Any], Any]] = None, + peek_output :Optional[bool] = False, peak_output :Optional[bool] = False, environment_vars :Optional[Dict[str, Any]] = None, working_directory :Optional[str] = './', remove_vt100_escape_codes_from_lines :bool = True): + if peak_output: + log("SysCommandWorker()'s peak_output is deprecated, use peek_output instead.", level=logging.WARNING, fg='red') + _callbacks = {} if callbacks: for hook, func in callbacks.items(): @@ -426,7 +436,9 @@ class SysCommand: self.cmd = cmd self._callbacks = _callbacks - self.peak_output = peak_output + self.peek_output = peek_output + if not self.peek_output and peak_output: + self.peek_output = peak_output self.environment_vars = environment_vars self.working_directory = working_directory self.remove_vt100_escape_codes_from_lines = remove_vt100_escape_codes_from_lines @@ -469,7 +481,7 @@ class SysCommand: return { 'cmd': self.cmd, 'callbacks': self._callbacks, - 'peak': self.peak_output, + 'peak': self.peek_output, 'environment_vars': self.environment_vars, 'session': True if self.session else False } @@ -478,7 +490,7 @@ class SysCommand: """ Initiates a :ref:`SysCommandWorker` session in this class ``.session``. It then proceeds to poll the process until it ends, after which it also - clears any printed output if ``.peak_output=True``. + clears any printed output if ``.peek_output=True``. """ if self.session: return self.session @@ -486,7 +498,7 @@ class SysCommand: with SysCommandWorker( self.cmd, callbacks=self._callbacks, - peak_output=self.peak_output, + peek_output=self.peek_output, environment_vars=self.environment_vars, remove_vt100_escape_codes_from_lines=self.remove_vt100_escape_codes_from_lines, working_directory=self.working_directory) as session: @@ -497,7 +509,7 @@ class SysCommand: while self.session.ended is None: self.session.poll() - if self.peak_output: + if self.peek_output: sys.stdout.write('\n') sys.stdout.flush() diff --git a/archinstall/lib/hsm/fido.py b/archinstall/lib/hsm/fido.py index 4cd956a3..758a2548 100644 --- a/archinstall/lib/hsm/fido.py +++ b/archinstall/lib/hsm/fido.py @@ -76,7 +76,7 @@ class Fido2: @classmethod def fido2_enroll(cls, hsm_device: Fido2Device, partition :Partition, password :str): - worker = SysCommandWorker(f"systemd-cryptenroll --fido2-device={hsm_device.path} {partition.real_device}", peak_output=True) + worker = SysCommandWorker(f"systemd-cryptenroll --fido2-device={hsm_device.path} {partition.real_device}", peek_output=True) pw_inputted = False pin_inputted = False diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 43542bc3..08f6d705 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -397,7 +397,7 @@ class Installer: raise RequirementError(f'Could not sync mirrors: {error}', level=logging.ERROR, fg="red") try: - return SysCommand(f'/usr/bin/pacstrap -C /etc/pacman.conf {self.target} {" ".join(packages)} --noconfirm', peak_output=True).exit_code == 0 + return SysCommand(f'/usr/bin/pacstrap -C /etc/pacman.conf {self.target} {" ".join(packages)} --noconfirm', peek_output=True).exit_code == 0 except SysCallError as error: self.log(f'Could not strap in packages: {error}', level=logging.ERROR, fg="red") @@ -921,15 +921,15 @@ class Installer: if has_uefi(): self.pacstrap('efibootmgr') # TODO: Do we need? Yes, but remove from minimal_installation() instead? try: - SysCommand(f'/usr/bin/arch-chroot {self.target} grub-install --debug --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB --removable', peak_output=True) + SysCommand(f'/usr/bin/arch-chroot {self.target} grub-install --debug --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB --removable', peek_output=True) except SysCallError: try: - SysCommand(f'/usr/bin/arch-chroot {self.target} grub-install --debug --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB --removable', peak_output=True) + SysCommand(f'/usr/bin/arch-chroot {self.target} grub-install --debug --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB --removable', peek_output=True) except SysCallError as error: raise DiskError(f"Could not install GRUB to {self.target}/boot: {error}") else: try: - SysCommand(f'/usr/bin/arch-chroot {self.target} grub-install --debug --target=i386-pc --recheck {boot_partition.parent}', peak_output=True) + SysCommand(f'/usr/bin/arch-chroot {self.target} grub-install --debug --target=i386-pc --recheck {boot_partition.parent}', peek_output=True) except SysCallError as error: raise DiskError(f"Could not install GRUB to {boot_partition.path}: {error}") -- cgit v1.2.3-70-g09d2 From 2a17ba983330cf8c511b9b1fa0329acaa2631c7c Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 27 Feb 2023 23:51:22 +0100 Subject: Replacing flit (#1655) * Replacing flit * Removed python-flit as a dependency * Removed note about flit * Removed flit references in pyproject.toml --- .github/workflows/python-build.yml | 4 ++-- .github/workflows/python-publish.yml | 2 +- PKGBUILD | 3 +-- pyproject.toml | 11 ++++------- setup.cfg | 16 ++++++++++------ 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/python-build.yml b/.github/workflows/python-build.yml index 4cd32a93..647ad70e 100644 --- a/.github/workflows/python-build.yml +++ b/.github/workflows/python-build.yml @@ -19,8 +19,8 @@ jobs: pip install build twine - name: Build archinstall run: | - python -m build + python -m build . --wheel - uses: actions/upload-artifact@v3 with: name: archinstall - path: dist/* + path: dist/* \ No newline at end of file diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index dd25a105..8a5bd679 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -24,7 +24,7 @@ jobs: pip install build twine - name: Build archinstall run: | - python -m build + python -m build . --wheel - name: Publish archinstall to PyPi env: TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} diff --git a/PKGBUILD b/PKGBUILD index d8e89ae2..70b18d00 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -12,7 +12,7 @@ arch=(any) url="https://github.com/archlinux/archinstall" license=(GPL3) depends=(python) -makedepends=(python-build python-installer python-flit python-setuptools python-sphinx python-wheel) +makedepends=(python-build python-installer python-setuptools python-sphinx python-wheel) provides=(python-archinstall) conflicts=(python-archinstall) replaces=(python-archinstall) @@ -29,7 +29,6 @@ validpgpkeys=('256F73CEEFC6705C6BBAB20E5FBBB32941E3740A') # Anton Hvornum (Torxe prepare() { cd $pkgname-$pkgver # use real directories for examples and profiles, as symlinks do not work - # with flit or setuptools PEP517 backends rm -fv $pkgname/{examples,profiles} mv -v examples profiles $pkgname/ } diff --git a/pyproject.toml b/pyproject.toml index 207dace5..61f24e37 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [build-system] -requires = ["flit_core >=3.5.1,<4", "setuptools>=45", "wheel"] -build-backend = "flit_core.buildapi" +requires = ["setuptools>=67"] +build-backend = "setuptools.build_meta" [project] name = "archinstall" @@ -18,6 +18,7 @@ classifiers = [ "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: POSIX :: Linux", ] @@ -33,14 +34,10 @@ archinstall = "archinstall:run_as_a_module" [project.optional-dependencies] doc = ["sphinx"] -[tool.flit.sdist] -include = ["docs/", "profiles", "examples", "archinstall/profiles", "archinstall/examples"] -exclude = ["docs/*.html", "docs/_static", "docs/*.png", "docs/*.psd"] - [tool.mypy] python_version = "3.10" exclude = "tests" [tool.bandit] -targets = ["ourkvm"] +targets = ["archinstall"] exclude = ["/tests"] diff --git a/setup.cfg b/setup.cfg index 8c9c087e..fd73ff92 100644 --- a/setup.cfg +++ b/setup.cfg @@ -6,6 +6,7 @@ author = Anton Hvornum author_email = anton@hvornum.se long_description = file: README.md long_description_content_type = text/markdown +keywords = linux, arch, archinstall, installer license = GPL license_files = LICENSE @@ -13,15 +14,18 @@ project_urls = Source = https://github.com/archlinux/archinstall Documentation = https://archinstall.readthedocs.io/ classifiers = - Programming Language :: Python :: 3 - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 - License :: OSI Approved :: GNU General Public License v3 (GPLv3) - Operating System :: POSIX :: Linux + "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", + "Operating System :: POSIX :: Linux", [options] packages = find: -python_requires = >= 3.8 +python_requires = >= 3.10 +zip_safe = True +include_package_data = True [options.packages.find] include = -- cgit v1.2.3-70-g09d2 From f212a01a56e51712134cf277031b1f45483bcefa Mon Sep 17 00:00:00 2001 From: ettoc00 <41289053+ettoc00@users.noreply.github.com> Date: Tue, 28 Feb 2023 00:08:49 +0100 Subject: Removed i3-gaps configuration choice (#1635) Fix to issue #1621 --- profiles/i3.py | 46 ++++++++++++---------------------------------- 1 file changed, 12 insertions(+), 34 deletions(-) diff --git a/profiles/i3.py b/profiles/i3.py index 37029a02..d3e6e6b0 100644 --- a/profiles/i3.py +++ b/profiles/i3.py @@ -1,14 +1,13 @@ -# Common package for i3, lets user select which i3 configuration they want. +# Common package for i3. import archinstall -from archinstall import Menu -from archinstall.lib.menu.menu import MenuSelectionType is_top_level_profile = False # New way of defining packages for a profile, which is iterable and can be used out side # of the profile to get a list of "what packages will be installed". __packages__ = [ + 'i3-wm' 'i3lock', 'i3status', 'i3blocks', @@ -27,28 +26,13 @@ def _prep_function(*args, **kwargs): for more input before any other installer steps start. """ - supported_configurations = ['i3-wm', 'i3-gaps'] - - choice = Menu('Select your desired configuration', supported_configurations).run() - - if choice.type_ != MenuSelectionType.Selection: - return False - - if choice.value: - # Temporarily store the selected desktop profile - # in a session-safe location, since this module will get reloaded - # the next time it gets executed. - archinstall.storage['_i3_configuration'] = choice.value - - # i3 requires a functioning Xorg installation. - profile = archinstall.Profile(None, 'xorg') - with profile.load_instructions(namespace='xorg.py') as imported: - if hasattr(imported, '_prep_function'): - return imported._prep_function() - else: - print('Deprecated (??): xorg profile has no _prep_function() anymore') - - return False + # i3 requires a functioning Xorg installation. + profile = archinstall.Profile(None, 'xorg') + with profile.load_instructions(namespace='xorg.py') as imported: + if hasattr(imported, '_prep_function'): + return imported._prep_function() + else: + print('Deprecated (??): xorg profile has no _prep_function() anymore') if __name__ == 'i3': @@ -65,17 +49,11 @@ if __name__ == 'i3': this is therefore just a helper to get started """ - # Install common packages for all i3 configurations - archinstall.storage['installation_session'].add_additional_packages(__packages__[:4]) - # Install dependency profiles archinstall.storage['installation_session'].install_profile('xorg') - # gaps is installed by default so we are overriding it here with lightdm - archinstall.storage['installation_session'].add_additional_packages(__packages__[4:]) + # Install the i3 packages + archinstall.storage['installation_session'].add_additional_packages(__packages__) - # Auto start lightdm for all users + # Enable autostart of lightdm for all users archinstall.storage['installation_session'].enable_service('lightdm') - - # install the i3 group now - archinstall.storage['installation_session'].add_additional_packages(archinstall.storage['_i3_configuration']) -- cgit v1.2.3-70-g09d2 From e0c20f92362e995139eb1a634376d68ee9a29506 Mon Sep 17 00:00:00 2001 From: Victor B <39555268+victorbnl@users.noreply.github.com> Date: Tue, 28 Feb 2023 06:46:07 +0100 Subject: Modify "Española" to "Español" (#1607) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- archinstall/locales/languages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archinstall/locales/languages.json b/archinstall/locales/languages.json index 2c876041..92efac49 100644 --- a/archinstall/locales/languages.json +++ b/archinstall/locales/languages.json @@ -146,7 +146,7 @@ {"abbr": "sd", "lang": "Sindhi"}, {"abbr": "so", "lang": "Somali"}, {"abbr": "st", "lang": "Southern Sotho"}, - {"abbr": "es", "lang": "Spanish", "translated_lang": "Española"}, + {"abbr": "es", "lang": "Spanish", "translated_lang": "Español"}, {"abbr": "sq", "lang": "Albanian"}, {"abbr": "sc", "lang": "Sardinian"}, {"abbr": "sr", "lang": "Serbian"}, -- cgit v1.2.3-70-g09d2 From 870e8fc46ec4d60c79492b54808b49f509f1be60 Mon Sep 17 00:00:00 2001 From: NorwayFun <72336380+NorwayFun@users.noreply.github.com> Date: Tue, 28 Feb 2023 06:48:25 +0100 Subject: Add Georgian translation (#1625) --- archinstall/locales/ka/LC_MESSAGES/base.mo | Bin 0 -> 45559 bytes archinstall/locales/ka/LC_MESSAGES/base.po | 872 +++++++++++++++++++++++++++++ 2 files changed, 872 insertions(+) create mode 100644 archinstall/locales/ka/LC_MESSAGES/base.mo create mode 100644 archinstall/locales/ka/LC_MESSAGES/base.po diff --git a/archinstall/locales/ka/LC_MESSAGES/base.mo b/archinstall/locales/ka/LC_MESSAGES/base.mo new file mode 100644 index 00000000..63a239ce Binary files /dev/null and b/archinstall/locales/ka/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/ka/LC_MESSAGES/base.po b/archinstall/locales/ka/LC_MESSAGES/base.po new file mode 100644 index 00000000..6357d1a7 --- /dev/null +++ b/archinstall/locales/ka/LC_MESSAGES/base.po @@ -0,0 +1,872 @@ +msgid "" +msgstr "" +"Project-Id-Version: archinstall\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Temuri Doghonadze \n" +"Language-Team: Georgian <(nothing)>\n" +"Language: ka\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.2.2\n" + +msgid "[!] A log file has been created here: {} {}" +msgstr "[!] ჟურნალის ფაილი შეიქმნა აქ: {} {}" + +msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" +msgstr " ეს პრობლემა და ფაილი გადმოგვიგზავნეთ ბმულზე https://github.com/archlinux/archinstall/issues" + +msgid "Do you really want to abort?" +msgstr "გნებავთ, გააუქმოთ?" + +msgid "And one more time for verification: " +msgstr "და კიდევ ერთხელ, გადასამოწმებლად: " + +msgid "Would you like to use swap on zram?" +msgstr "გნებავთ სვოპის ZRAM-ზე გამოყენება?" + +msgid "Desired hostname for the installation: " +msgstr "ჰოსტის სასურველი სახელი, დაყენებისთვის: " + +msgid "Username for required superuser with sudo privileges: " +msgstr "Sudo პრივილეგიების მქონე ზემომხმარებლის მომხმარებლის სახელი: " + +msgid "Any additional users to install (leave blank for no users): " +msgstr "დამატებითი მომხმარებლები დასაყენებლად (მომხმარებლების გარეშე გასაგრძელებლად ცარიელი დატოვეთ): " + +msgid "Should this user be a superuser (sudoer)?" +msgstr "უნდა იყოს ეს მომხმარებელი ზემომხმარებელი (sudoer)?" + +msgid "Select a timezone" +msgstr "აირჩიეთ დროის სარტყელი" + +msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" +msgstr "გნებავთ ჩამტვირთავად system-boot-ის მაგიერ GRUB-ი გამოიყენოთ?" + +msgid "Choose a bootloader" +msgstr "აირჩიეთ ჩამტვირთავი" + +msgid "Choose an audio server" +msgstr "აირჩიეთ აუდიოსერვერი" + +msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." +msgstr "მოხდება მხოლოდ ისეთი პაკეტების დაყენება, როგორებიცაა base, base-devel, linux, linux-firmware, efibootmgr და არასავალდებულო პროფილის პაკეტი." + +msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." +msgstr "თუ გნებავთ ბრაუზერის, როგორებიცაა firefox ან chromium, ქონა, შემდეგი რამ უნდა მიუთითოთ." + +msgid "Write additional packages to install (space separated, leave blank to skip): " +msgstr "დამატებითი პაკეტები დასაყენებლად (გამოტოვებით გამოყოფილი, გამოსატოვებლად ცარიელი დატოვეთ): " + +msgid "Copy ISO network configuration to installation" +msgstr "ISO-ის ქსელის კონფიგურაციის კოპირება დაყენების დროს" + +msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" +msgstr "NetworkManager-ის გამოყენება (აუცილებელია ინტერნეტის GNOME/KDE-დან მოსარგებად)" + +msgid "Select one network interface to configure" +msgstr "მოსარგებად ერთ-ერთი ქსელის ინტერფეისი აირჩიეთ" + +msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" +msgstr "აირჩიეთ მოსარგები რეჟიმი \"{}\"-სთვის ან გამოტოვეთ ნაგულისხმები რეჟიმის \"{}\" გამოსაყენებლად" + +msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " +msgstr "შეიყვანეთ IP მისამართი და ქვექსელი {}-სთვის (მაგ: 192.168.0.5/24): " + +msgid "Enter your gateway (router) IP address or leave blank for none: " +msgstr "აირჩიეთ ნაგულისხმები რაუტერის IP მისამართი, ან ცარიელი დატოვეთ: " + +msgid "Enter your DNS servers (space separated, blank for none): " +msgstr "შეიყვანეთ თქვენი DNS სერვერების მისამართები (გამოყოფილი ცარიელი ადგილით. ცარიელი, თუ არ გნებავთ, გამოიყენოთ): " + +msgid "Select which filesystem your main partition should use" +msgstr "რომელ ფაილურ სისტემას გამოიყენებს თქვენი მთავარი დანაყოფი" + +msgid "Current partition layout" +msgstr "მიმდინარე დანაყოფების განლაგება" + +msgid "" +"Select what to do with\n" +"{}" +msgstr "" +"აირჩიეთ, რა მოუვა\n" +"{}" + +msgid "Enter a desired filesystem type for the partition" +msgstr "შეიყვანეთ დანაყოფის სასურველი ფაილური სისტემის ტიპი" + +msgid "Enter the start sector (percentage or block number, default: {}): " +msgstr "შეიყვანეთ საწყისი სექტორი (პროცენტებში ან ბლოკის ნომერი. ნაგულისხმები: {}): " + +msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +msgstr "შეიყვანეთ დანაყოფის ბოლო სექტორი (პროცენტულად ან ბლოკის ნომერი. მაგ: {}): " + +msgid "{} contains queued partitions, this will remove those, are you sure?" +msgstr "{} რიგში ჩაყენებულ დანაყოფებს შეიცავს. ეს წაშლის მათ. დარწმუნებული ბრძანდებით?" + +msgid "" +"{}\n" +"\n" +"Select by index which partitions to delete" +msgstr "" +"{}\n" +"\n" +"წასაშლელი დანაყოფების ინდექსით არჩევა" + +msgid "" +"{}\n" +"\n" +"Select by index which partition to mount where" +msgstr "" +"{}\n" +"\n" +"ინდექსით არჩევა, რომელი დანაყოფი სად იქნება მიმაგრებული" + +msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." +msgstr " * დანაყოფის მიმაგრების წერტილები შედარებითია დაყენების შიგნით. ჩატვირთვა, მაგალითად, /boot შეიძლება, იყოს." + +msgid "Select where to mount partition (leave blank to remove mountpoint): " +msgstr "აირჩიეთ, სად გნებავთ მიამაგროთ დანაყოფი (მიმაგრების წერტილის წასაშლელად დატოვეთ ის ცარიელი): " + +msgid "" +"{}\n" +"\n" +"Select which partition to mask for formatting" +msgstr "" +"{}\n" +"\n" +"აირჩიეთ, რომელი დანაყოფი იქნება მონიშნული ფორმატირებისთვის" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as encrypted" +msgstr "" +"{}\n" +"\n" +"აირჩიეთ, რომელი დანაყოფი მოინიშნება, როგორც დაშიფრული" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as bootable" +msgstr "" +"{}\n" +"\n" +"აირჩიეთ, რომელი დანაყოფი მოინიშნება, როგორც ჩატვირთვადი" + +msgid "" +"{}\n" +"\n" +"Select which partition to set a filesystem on" +msgstr "" +"{}\n" +"\n" +"აირჩიეთ, ფაილური სისტემა რომელ დანაყოფზე დავაყენო" + +msgid "Enter a desired filesystem type for the partition: " +msgstr "შეიყვანეთ დანაყოფის სასურველი ფაილური სისტემის ტიპი: " + +msgid "Archinstall language" +msgstr "Archinstall-ის ენა" + +msgid "Wipe all selected drives and use a best-effort default partition layout" +msgstr "მონიშნულ დისკებზე ყველაფრის წაშლა და დანაყოფების განლაგების საუკეთესო განლაგების გამოყენება" + +msgid "Select what to do with each individual drive (followed by partition usage)" +msgstr "აირჩიეთ, რა ვუყო ინდივიდუალურ დისკს (დანაყოფების გამოყენების შემდეგ)" + +msgid "Select what you wish to do with the selected block devices" +msgstr "აირჩიეთ, მონიშნულ ბლოკურ მოწყობილობებს რა გნებავთ, უქნათ" + +msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" +msgstr "ეს წინასწარ მითითებული პროფილების სიაა. მათი დახმარებით ისეთი რამების, როგორიცაა სამუშაო მაგიდის გარემოები, დაყენება უფრო ადვილია" + +msgid "Select keyboard layout" +msgstr "აირჩიეთ კლავიატურის განლაგება" + +msgid "Select one of the regions to download packages from" +msgstr "აირჩიეთ რეგიონი პაკეტების გადმოსაწერად" + +msgid "Select one or more hard drives to use and configure" +msgstr "აირჩიეთ ერთი ან მეტი მყარი დისკი და მოირგეთ" + +msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." +msgstr "თქვენს AMD-ის აპარატურასთან საუკეთესო თავსებადობისთვის შეგიძლიათ როგორც სრულად ღია კოდის მქონე, ისე AMD/ATI-ის ვარიანტები გამოიყენოთ." + +msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" +msgstr "Intel-ის აპარატურასთან საუკეთესო თავსებადობისთვის შეგიძლიათ მათი სრულად ღია კოდის მქონე ვარიანტი გამოიყენოთ.\n" + +msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" +msgstr "Nvidia-ის თქვენს აპარატურასთან საუკეთესო თავსებადობისთვის შეიძლება Nvidia-ის დახურული კოდის მქონე დრაივერის დაყენება გნებავდეთ.\n" + +msgid "" +"\n" +"\n" +"Select a graphics driver or leave blank to install all open-source drivers" +msgstr "" +"\n" +"\n" +"აირჩიეთ გრაფიკის დრაივერი ან, ღია კოდის მქონე დრაივერის დასაყენებლად, ცარიელი დატოვეთ" + +msgid "All open-source (default)" +msgstr "ყველა ღია კოდით (ნაგულისხმები)" + +msgid "Choose which kernels to use or leave blank for default \"{}\"" +msgstr "აირჩიეთ, რომელი ბირთვი გნებავთ, გამოიყენოთ. ან ნაგულისხმებისთვის (\"{}\") ცარიელი დატოვეთ" + +msgid "Choose which locale language to use" +msgstr "აირჩიეთ, რომელი ლოკალის ენა გნებავთ, გამოიყენოთ" + +msgid "Choose which locale encoding to use" +msgstr "აირჩიეთ, რომელი ლოკალის კოდირება გნებავთ, გამოიყენოთ" + +msgid "Select one of the values shown below: " +msgstr "აირჩიეთ ერთ-ერთი ქვემოთ მოყვანილი მნიშვნელობებიდან: " + +msgid "Select one or more of the options below: " +msgstr "აირჩეთ ერთი ან მეტი პარამეტრი ქვემოდან: " + +msgid "Adding partition...." +msgstr "დანაყოფის დამატება..." + +msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." +msgstr "გასაგრძელებლად აუცილებელია სწორი fs-type შეიყვანოთ. ხელმისაწვდომი სიის სანახავად იხილეთ 'man parted'." + +msgid "Error: Listing profiles on URL \"{}\" resulted in:" +msgstr "შეცდომა: URL-ზე \"{}\" პროფილების ჩამოთვლის შედეგია:" + +msgid "Error: Could not decode \"{}\" result as JSON:" +msgstr "შეცდომა: \"{}\" შედეგის JSON-ის სახით გაშიფვრა შეუძლებელია:" + +msgid "Keyboard layout" +msgstr "კლავიატურის განლაგება" + +msgid "Mirror region" +msgstr "სარკის რეგიონი" + +msgid "Locale language" +msgstr "ლოკალის ენა" + +msgid "Locale encoding" +msgstr "ლოკალის კოდირება" + +msgid "Drive(s)" +msgstr "დისკები" + +msgid "Disk layout" +msgstr "დისკის განლაგება" + +msgid "Encryption password" +msgstr "დაშიფვრის პაროლი" + +msgid "Swap" +msgstr "სვოპი" + +msgid "Bootloader" +msgstr "ჩამტვირთავი" + +msgid "Root password" +msgstr "Root-ის პაროლი" + +msgid "Superuser account" +msgstr "ზემომხმარებლის ანგარიში" + +msgid "User account" +msgstr "მომხმარებლის ანგარიში" + +msgid "Profile" +msgstr "პროფილი" + +msgid "Audio" +msgstr "აუდიო" + +msgid "Kernels" +msgstr "ბირთვები" + +msgid "Additional packages" +msgstr "დამატებითი პაკეტები" + +msgid "Network configuration" +msgstr "ქსელის მორგება" + +msgid "Automatic time sync (NTP)" +msgstr "დროის ავტომატური სინქრონიზაცია (NTP)" + +msgid "Install ({} config(s) missing)" +msgstr "დაყენება (აკლია {} კონფიგურაცია)" + +msgid "" +"You decided to skip harddrive selection\n" +"and will use whatever drive-setup is mounted at {} (experimental)\n" +"WARNING: Archinstall won't check the suitability of this setup\n" +"Do you wish to continue?" +msgstr "" +"გადაწყვიტეთ, გამოტოვოთ მყარი დისკის არჩევანი\n" +"და გამოიყენოთ ის, რაც {}-ზეა მიმაგრებული (ექსპერიმენტალური)\n" +"გაფრთხილება: Archinstall-ს ამ მორგების სტაბილურობის გადამოწმება არ შეუძლია.\n" +"გნებავთ, გააგრძელოთ?" + +msgid "Re-using partition instance: {}" +msgstr "დანაყოფის ასლის თავიდან გამოყენება: {}" + +msgid "Create a new partition" +msgstr "ახალი დანაყოფის შექმნა" + +msgid "Delete a partition" +msgstr "დანაყოფის წაშლა" + +msgid "Clear/Delete all partitions" +msgstr "დანაყოფების გასუფთავება/წაშლა" + +msgid "Assign mount-point for a partition" +msgstr "დანაყოფის მიმაგრების წერტილის მინიჭება" + +msgid "Mark/Unmark a partition to be formatted (wipes data)" +msgstr "დანაყოფის დასაფორმატებლობის ჭდის მოხსნა/დადება (მონაცემები წაიშლება)" + +msgid "Mark/Unmark a partition as encrypted" +msgstr "დანაყოფის დაშიფრულობის ჭდის დადება/მოხსნა" + +msgid "Mark/Unmark a partition as bootable (automatic for /boot)" +msgstr "დანაყოფის ჩატვირთვადობის ჭდის მოხსნა/დადება (ავტომატურია /boot-სთვის)" + +msgid "Set desired filesystem for a partition" +msgstr "აირჩიეთ დანაყოფის სასურველი ფაილური სისტემა" + +msgid "Abort" +msgstr "გაუქმება" + +msgid "Hostname" +msgstr "ჰოსტის სახელი" + +msgid "Not configured, unavailable unless setup manually" +msgstr "მორგებული არაა. მიუწვდომელია, სანამ ხელით არ მოირგებთ" + +msgid "Timezone" +msgstr "დროის სარტყელი" + +msgid "Set/Modify the below options" +msgstr "დააყენეთ/შეცვალეთ ქვედა პარამეტრები" + +msgid "Install" +msgstr "დაყენება" + +msgid "" +"Use ESC to skip\n" +"\n" +msgstr "" +"გამოსატოვებლად გამოიყენეთ ღილაკი Esc\n" +"\n" + +msgid "Suggest partition layout" +msgstr "დანაყოფების განლაგების მინიშნება" + +msgid "Enter a password: " +msgstr "შეიყვანეთ პაროლი: " + +msgid "Enter a encryption password for {}" +msgstr "შეიყვანეთ {}-ის დაშიფვრის პაროლი" + +msgid "Enter disk encryption password (leave blank for no encryption): " +msgstr "შეიყვანეთ დისკის დაშიფვრის პაროლი (დაშიფვრის გასათიშად დატოვეთ ცარიელი): " + +msgid "Create a required super-user with sudo privileges: " +msgstr "Sudo-ის პრივილეგიების სმქონე აუცილებელი ზემომხმარებლის: " + +msgid "Enter root password (leave blank to disable root): " +msgstr "შეიყვანეთ root-ის პაროლი (თუ გნებავთ, გათიშოთ root, ცარიელი დატოვეთ): " + +msgid "Password for user \"{}\": " +msgstr "პაროლი მომხმარებლისთვის \"{}\": " + +msgid "Verifying that additional packages exist (this might take a few seconds)" +msgstr "დამატებითი პაკეტების არსებობის შემოწმება (ამას რამდენიმე წამი შეიძლება დასჭირდეს)" + +msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" +msgstr "გნებავთ დროის ავტომატური სინქრონიზაციის (NTP) ნაგულისხმები დროის სერვერებით გამოყენება?\n" + +msgid "" +"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" +"For more information, please check the Arch wiki" +msgstr "" +"NTP-ის ასამუშავებლად აპარატურული დრო და სხვა დაყენების-შემდგომი ნაბიჯები დაგჭირდებათ.\n" +"მეტი ინფორმაციისთვის იხილეთ Arch-ის დოკუმენტაცია" + +msgid "Enter a username to create an additional user (leave blank to skip): " +msgstr "დამატებითი მომხმარებლის შესაქმნელად შეიყვანეთ მისი სახელი (გამოსატოვებლად ცარიელი დატოვეთ): " + +msgid "Use ESC to skip\n" +msgstr "გამოსატოვებლად გამოიყენეთ ღილაკი Esc\n" + +msgid "" +"\n" +" Choose an object from the list, and select one of the available actions for it to execute" +msgstr "" +"\n" +" შესასრულებლად აირჩიეთ ობიექტი სიიდან და აირჩიეთ მისთვის ხელმისაწვდომი ქმედება" + +msgid "Cancel" +msgstr "შეწყვეტა" + +msgid "Confirm and exit" +msgstr "დადასტურება და გასვლა" + +msgid "Add" +msgstr "დამატება" + +msgid "Copy" +msgstr "კოპირება" + +msgid "Edit" +msgstr "ჩასწორება" + +msgid "Delete" +msgstr "წაშლა" + +msgid "Select an action for '{}'" +msgstr "აირჩიეთ ქმედება '{}'-სთვის" + +msgid "Copy to new key:" +msgstr "ახალ გასაღებში კოპირება:" + +msgid "Unknown nic type: {}. Possible values are {}" +msgstr "NIC-ის უცნობი ტიპი: {}. შესაძლო მნიშვნელობებია {}" + +msgid "" +"\n" +"This is your chosen configuration:" +msgstr "" +"\n" +"ეს თქვენი არჩეული კონფიგურაციაა:" + +msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." +msgstr "Pacman- უკვე გაშვებულია. მოკვლამდე 10 წუთი დაველოდები." + +msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." +msgstr "წინასწარ packman-ის ბლოკი არასდროს არსებობდა. Archinstall-ის დაყენებამდე აუცილებელია pacman-ს სესიების მოსუფთავება აუცილებელია." + +msgid "Choose which optional additional repositories to enable" +msgstr "აირჩიეთ, რომელი არასავალდებულო დამატებითი რეპოზიტორია გნებავთ, ჩართოთ" + +msgid "Add a user" +msgstr "მომხმარებლის დამატება" + +msgid "Change password" +msgstr "პაროლის შეცვლა" + +msgid "Promote/Demote user" +msgstr "მომხმარებლის დაწინაურება/ჩამოქვეითება" + +msgid "Delete User" +msgstr "მომხმარებლის წაშლა" + +msgid "" +"\n" +"Define a new user\n" +msgstr "" +"\n" +"აღწერეთ ახალი მომხმარებელი\n" + +msgid "User Name : " +msgstr "მომხმარებლის სახელი : " + +msgid "Should {} be a superuser (sudoer)?" +msgstr "იყოს {} ზემომხმარებელი (sudoer)?" + +msgid "Define users with sudo privilege: " +msgstr "აღწერეთ sudo პრივილეგიის მქონე მომხმარებლები: " + +msgid "No network configuration" +msgstr "ქსელის მორგების გარეშე" + +msgid "Set desired subvolumes on a btrfs partition" +msgstr "დააყენეთ Btrfs დანაყოფის სასურველი ქვეტომები" + +msgid "" +"{}\n" +"\n" +"Select which partition to set subvolumes on" +msgstr "" +"{}\n" +"\n" +"აირჩიეთ, რომელ დანაყოფზე აპირებთ ქვეტომების დაყენებას" + +msgid "Manage btrfs subvolumes for current partition" +msgstr "Btrfs-ის ქვეტომების მართვა მიმდინარე დანაყოფისთვის" + +msgid "No configuration" +msgstr "მორგების გარეშე" + +msgid "Save user configuration" +msgstr "მომხმარებლის კონფიგურაციის შენახვა" + +msgid "Save user credentials" +msgstr "მომხმარებლის ავტორიზაციის დეტალების შენახვა" + +msgid "Save disk layout" +msgstr "დისკის განლაგების შენახვა" + +msgid "Save all" +msgstr "ყველაფრის შენახვა" + +msgid "Choose which configuration to save" +msgstr "აირჩიეთ, რომელი კონფიგურაცია შევინახო" + +msgid "Enter a directory for the configuration(s) to be saved: " +msgstr "შეიყვანეთ საქაღალდე, სადაც კონფიგურაცი(ებ)-ი იქნება შენახული: " + +msgid "Not a valid directory: {}" +msgstr "არასწორი საქაღალდე: {}" + +msgid "The password you are using seems to be weak," +msgstr "პაროლი, რომელიც შეიყვანეთ, სუსტია," + +msgid "are you sure you want to use it?" +msgstr "დარწმუნებული ბრძანდებით, რომ გნებავთ, გამოიყენოთ ის?" + +msgid "Optional repositories" +msgstr "არასავალდებულო რეპოზიტორიები" + +msgid "Save configuration" +msgstr "კონფიგურაციი შენახვა" + +msgid "Missing configurations:\n" +msgstr "ნაკლული კონფიგურაციები:\n" + +msgid "Either root-password or at least 1 superuser must be specified" +msgstr "შეიყვანეთ root-ის პაროლი ან მიუთითეთ 1 ზემომხმარებელი მაინც" + +msgid "Manage superuser accounts: " +msgstr "ზემომხმარებლის ანგარიშების მართვა: " + +msgid "Manage ordinary user accounts: " +msgstr "ჩვეულებრივი მომხმარებლის ანგარიშების მართვა: " + +msgid " Subvolume :{:16}" +msgstr " ქვეტომი :{:16}" + +msgid " mounted at {:16}" +msgstr " მიმაგრების წერტილი {:16}" + +msgid " with option {}" +msgstr " პარამეტრით {}" + +msgid "" +"\n" +" Fill the desired values for a new subvolume \n" +msgstr "" +"\n" +"შეავსეთ სასურველი მნიშვნელობები ახალი ქვეტომისთვის \n" + +msgid "Subvolume name " +msgstr "ქვეტომის სახელი " + +msgid "Subvolume mountpoint" +msgstr "ქვეტომის მიმაგრების წერტილი" + +msgid "Subvolume options" +msgstr "ქვეტომის მორგება" + +msgid "Save" +msgstr "შენახვა" + +msgid "Subvolume name :" +msgstr "ქვეტომის სახელი :" + +msgid "Select a mount point :" +msgstr "აირჩიეთ მიმაგრების წერტილი :" + +msgid "Select the desired subvolume options " +msgstr "აირჩიეთ სასურველი ქვეტომის პარამეტრები " + +msgid "Define users with sudo privilege, by username: " +msgstr "აღწერეთ sudo-ის პრივილეგიების მქონე მომხმარებლები, მათი სახელით: " + +msgid "[!] A log file has been created here: {}" +msgstr "[!] ჟურნალის ფაილის მდებარეობა: {}" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "გნებავთ BTRFS-ის ქვეტომები ნაგულისხმები სტრუქტურით გამოიყენოთ?" + +msgid "Would you like to use BTRFS compression?" +msgstr "გნებავთ BTRFS-ის შეკუმშვის გამოყენება?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "გნებავთ /home-სთვის ცალკე დანაყოფი შექმნათ?" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "მონიშნულ დისკებზე ავტომატურად დასაყენებლად საკმარისი მინიმალური ადგილი აღმოჩენილი არაა\n" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "მინიმალური სივრცე დანაყოფისთვის /home: {}გბ\n" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "მინიმალური სივრცე ArchLinux-ის დანაყოფისთვის: {}გბ" + +msgid "Continue" +msgstr "გაგრძელება" + +msgid "yes" +msgstr "დიახ" + +msgid "no" +msgstr "არა" + +msgid "set: {}" +msgstr "დაყენება: {}" + +msgid "Manual configuration setting must be a list" +msgstr "მორგებული კონფიგურაციის პარამეტრი სია უნდა იყოს" + +msgid "No iface specified for manual configuration" +msgstr "მორგებული კონფიგურაციისთვის ინტერფეისი მითითებული არაა" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "NIC-ის DHCP-ის გარეშე მოსარგებად IP მისამართის მითითება აუცილებელია" + +msgid "Add interface" +msgstr "ინტერფეისის დამატება" + +msgid "Edit interface" +msgstr "ინტერფეისის ჩასწორება" + +msgid "Delete interface" +msgstr "ინტერფეისის წაშლა" + +msgid "Select interface to add" +msgstr "აირჩიეთ დასამატებელი ინტერფეისი" + +msgid "Manual configuration" +msgstr "ხელით მორგება" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "დანაყოფზე შეკუმშულობის ჭდის მოხსნა/დადება (მხოლოდ btrfs)" + +msgid "The password you are using seems to be weak, are you sure you want to use it?" +msgstr "როგორც ჩანს პაროლი, რომელსაც იყენებთ, სუსტია. დარწმუნებული ბრძანდებით, რომ გნებავთ, გამოიყენოთ ის?" + +msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" +msgstr "მოგაწვდით სამუშაო გარემოებისა და ფანჯრების მმართველების არჩევანს. მაგ: gnome, kde, sway" + +msgid "Select your desired desktop environment" +msgstr "აირჩიეთ სასურველი სამუშაო მაგიდის გარემო" + +msgid "A very basic installation that allows you to customize Arch Linux as you see fit." +msgstr "მინიმალური დაყენება, რომელიც საშუალებას გაძლევთ, Arch Linux სურვილისამებრ მოირგოთ." + +msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" +msgstr "სერვერის ისეთი პაკეტების დაყენება და ჩართვა, როგორიცაა httpd, nginx, mariadb" + +msgid "Choose which servers to install, if none then a minimal installation will be done" +msgstr "აირჩიეთ, რომელი სერვერების დაყენება გნებავთ. თუ არაფერს შეიყვანთ, მინიმალური დაყენება მოხდება" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "აყენებს მინიმალურ სისტემას, ასევე xorg-ს და გრაფიკის დრაივერებს." + +msgid "Press Enter to continue." +msgstr "გასაგრძელებლად დააჭირეთ Enter-ს." + +msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" +msgstr "გნებავთ chroot ახალ დაყენებულ სისტემაში და დაყენების შემდეგი კონფიგურაციის გაშვება?" + +msgid "Are you sure you want to reset this setting?" +msgstr "დარწმუნებული ბრძანდებით, რომ გნებავთ, დააბრუნოთ ეს პარამეტრი?" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "მოსარგებად და გამოსაყენებლად აირჩიეთ ერთი ან მეტი მყარი დისკი\n" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "არსებული პარამეტრის ნებისმიერი ცვლილება დისკის განლაგებას საწყის მნიშვნელობებზე დააბრუნებს!" + +msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" +msgstr "ეს მყარი დისკის არჩევანს და მიმდინარე დისკის განლაგებას საწყის მნიშვნელობებზე დააბრუნებს. დარწმუნებული ბრძანდებით?" + +msgid "Save and exit" +msgstr "შენახვა და გასვლა" + +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" +"{}\n" +"რიგში ჩაყენებულ დანაყოფებს შეიცავს. ეს წაშლის მათ. დარწმუნებული ბრძანდებით?" + +msgid "No audio server" +msgstr "აუდიოსერვერის გრეშე" + +msgid "(default)" +msgstr "(ნაგულისხმები)" + +msgid "Use ESC to skip" +msgstr "გამოსატოვებლად გამოიყენეთ ღილაკი Esc" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" +"მიმდინარე მონიშვნის დასაბრუნებლად დააწექით CTRL+C\n" +"\n" + +msgid "Copy to: " +msgstr "კოპირება: " + +msgid "Edit: " +msgstr "ჩასწორება: " + +msgid "Key: " +msgstr "გასაღები: " + +msgid "Edit {}: " +msgstr "ჩასწორება {}: " + +msgid "Add: " +msgstr "დამატება: " + +msgid "Value: " +msgstr "მნიშვნელობა: " + +msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" +msgstr "შეგიძლიათ დისკის არჩევანი და დაყოფა გამოტოვოთ და გამოიყენოთ სასურველი დისკი, რომელიც /mnt-ზეა მიმაგრებული (ექსპერიმენტალური)" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "აირჩიეთ ერტი ან მეტი დისკი ან გამოტოვება და ნაგულისხმები /mnt-ის გამოყენება" + +msgid "Select which partitions to mark for formatting:" +msgstr "აირჩიეთ, რომელი დანაყოფები მოვნიშნო დასაფორმატებლად:" + +msgid "Use HSM to unlock encrypted drive" +msgstr "დაშიფრული დისკის გასახსნელად HSM-ის გამოყენება" + +msgid "Device" +msgstr "მოწყობილობა" + +msgid "Size" +msgstr "ზომა" + +msgid "Free space" +msgstr "თავისუფალი ადგილი" + +msgid "Bus-type" +msgstr "მატარებლის-ტიპი" + +msgid "Either root-password or at least 1 user with sudo privileges must be specified" +msgstr "Root-ის პაროლის ან მინიმუმ 1 sudo-ის პრივილეგიების მქონე მომხმარებლის მითითება აუცილებელია" + +msgid "Enter username (leave blank to skip): " +msgstr "შეიყვანეთ მომხმარებლი სახელი (გამოსატოვებლად ცარიელი დატოვეთ): " + +msgid "The username you entered is invalid. Try again" +msgstr "შეყვანილი მომხმარებლის სახელი არასწორია. კიდევ სცადეთ" + +msgid "Should \"{}\" be a superuser (sudo)?" +msgstr "იყოს \"{}\" ზემომხმარებელი(sudo)?" + +msgid "Select which partitions to encrypt" +msgstr "არჩიეთ დასაშიფრი დანაყოფები" + +msgid "very weak" +msgstr "ძალიან სუსტი" + +msgid "weak" +msgstr "სუსტი" + +msgid "moderate" +msgstr "საშუალო" + +msgid "strong" +msgstr "ძლიერი" + +msgid "Add subvolume" +msgstr "ქვეტომის დამატება" + +msgid "Edit subvolume" +msgstr "ქვეტომის ჩასწორება" + +msgid "Delete subvolume" +msgstr "ქვეტომის წაშლა" + +msgid "Configured {} interfaces" +msgstr "მორგებულია {} ინტერფეისი" + +msgid "This option enables the number of parallel downloads that can occur during installation" +msgstr "ეს პარამეტრი დაყენებისას მითითებული რაოდენობის პარალელურ გადმოწერას დაუშვებს" + +#, python-brace-format +msgid "" +"Enter the number of parallel downloads to be enabled.\n" +" (Enter a value between 1 to {max_downloads})\n" +"Note:" +msgstr "" +"შეიყვანეთ დასაშვები პარალელური გადმოწერების რაოდენობა.\n" +" (შეიყვანეთ მნიშვნელობა 1-დან {max_downloads}-მდე)\n" +"დაიმახსოვრეთ:" + +msgid " - Maximum value : {max_downloads} ( Allows {max_downloads} parallel downloads, allows {max_downloads+1} downloads at a time )" +msgstr " - მინიმალური მნიშვნელობა : {max_downloads} ( დაუშვებს {max_downloads} პარალელურ გადმოწერას, დაუშვებს {max_downloads+1} ერთდროულ გადმოწერას )" + +msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" +msgstr " - მინიმალური მნიშვნელობა : 1 ( დაუშვებს 1 პარალელურ გადმოწერას, დაუშვებს 2 ერთდროულ გადმოწერას )" + +msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" +msgstr " - გამორთვა/ნაგულისხმები : 0 ( პარალელური გადმოწერების გათიშვა. დროის ერთ მომენტში მხოლოდ ერთი გადმოწერა მოხდება )" + +#, python-brace-format +msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" +msgstr "შეყვანილი რიცხვი არასწორია! თავიდან სცადეთ [1-დან {max_downloads}-მდე, ან 0, გასათიშად]" + +msgid "Parallel Downloads" +msgstr "პარალელური გადმოწერები" + +msgid "ESC to skip" +msgstr "გამოსატოვებლად ღილაკი Esc" + +msgid "CTRL+C to reset" +msgstr "დასაბრუნებლად CTRL+C" + +msgid "TAB to select" +msgstr "ასარჩევად TAB" + +msgid "[Default value: 0] > " +msgstr "[ნაგულისხმები მნიშვნელობა: 0] > " + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "თარგმანის გამოსაყენებლად ფონტი, რომელსაც ენის მხარდაჭერა გააჩნია, ხელით უნდა დააყენოთ." + +msgid "The font should be stored as {}" +msgstr "ფონტი {}-ში უნდა იყოს შენახული" + +msgid "Encryption type" +msgstr "დაშიფვრის ტიპი" + +msgid "Partitions" +msgstr "დანაყოფები" + +msgid "No HSM devices available" +msgstr "HSM მოწყობილობები მიუწვდომელია" + +msgid "Partitions to be encrypted" +msgstr "დასაშიფრი დანაყოფები" + +msgid "Select disk encryption option" +msgstr "აირჩიეთ დისკის დაშიფვრის პარამეტრი" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "აირჩიეთ HSM-სთვის გამოსაყენებელი FIDO2 მოწყობილობა" + +msgid "All settings will be reset, are you sure?" +msgstr "ყველა პარამეტრი დაბრუნდება. დარწმუნებული ბრძანდებით?" + +msgid "Back" +msgstr "უკან" + +msgid "Disk encryption" +msgstr "დისკის დაშიფვრა" + +msgid "Password" +msgstr "პაროლი" + +msgid "Partition encryption" +msgstr "დანაყოფის დაშიფვრა" -- cgit v1.2.3-70-g09d2 From b81ee19dad6dd66e0b9b24e55b5b197463420256 Mon Sep 17 00:00:00 2001 From: Roxfr <52124613+roxfr@users.noreply.github.com> Date: Tue, 28 Feb 2023 06:48:54 +0100 Subject: French translation update (#1608) * Add files via upload * Add files via upload --- archinstall/locales/fr/LC_MESSAGES/base.mo | Bin 25482 -> 27935 bytes archinstall/locales/fr/LC_MESSAGES/base.po | 65 +++++++++++++++-------------- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/archinstall/locales/fr/LC_MESSAGES/base.mo b/archinstall/locales/fr/LC_MESSAGES/base.mo index b8f19aa7..4570984a 100644 Binary files a/archinstall/locales/fr/LC_MESSAGES/base.mo and b/archinstall/locales/fr/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/fr/LC_MESSAGES/base.po b/archinstall/locales/fr/LC_MESSAGES/base.po index f5946503..ada12b8e 100644 --- a/archinstall/locales/fr/LC_MESSAGES/base.po +++ b/archinstall/locales/fr/LC_MESSAGES/base.po @@ -3,13 +3,13 @@ msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" -"Last-Translator: roxfr \n" +"Last-Translator: \n" "Language-Team: \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.2.2\n" msgid "[!] A log file has been created here: {} {}" msgstr "[!] Un fichier journal a été créé ici : {} {}" @@ -68,9 +68,6 @@ msgstr "Utiliser NetworkManager (nécessaire pour configurer graphiquement Inter msgid "Select one network interface to configure" msgstr "Sélectionner une interface réseau à configurer" -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Sélectionner le mode à configurer pour \"{}\" ou ignorer pour utiliser le mode par défaut \"{}\"" - msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " msgstr "Entrer l'IP et le sous-réseau pour {} (exemple : 192.168.0.5/24) : " @@ -213,9 +210,6 @@ msgstr "" msgid "All open-source (default)" msgstr "Tout open-source (par défaut)" -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Choisir les noyaux à utiliser ou laissez vide par défaut \"{}\"" - msgid "Choose which locale language to use" msgstr "Choisir la langue locale à utiliser" @@ -659,7 +653,6 @@ msgstr "Une installation très basique qui vous permet de personnaliser Arch Lin msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" msgstr "Fournit une sélection de divers paquets de serveur à installer et à activer, par ex. httpd, nginx, mariadb" -#, fuzzy msgid "Choose which servers to install, if none then a minimal installation will be done" msgstr "Choisir les serveurs à installer, s'il n'y en a pas, une installation minimale sera effectuée" @@ -756,7 +749,7 @@ msgid "Either root-password or at least 1 user with sudo privileges must be spec msgstr "Le mot de passe root ou au moins 1 utilisateur avec des privilèges sudo doit être spécifié" msgid "Enter username (leave blank to skip): " -msgstr "Entrer le nom d'utilisateur (laisser vide pour passer) :" +msgstr "Entrer le nom d'utilisateur (laisser vide pour passer) : " msgid "The username you entered is invalid. Try again" msgstr "Le nom d'utilisateur que vous avez saisi n'est pas valide. Réessayer" @@ -764,38 +757,35 @@ msgstr "Le nom d'utilisateur que vous avez saisi n'est pas valide. Réessayer" msgid "Should \"{}\" be a superuser (sudo)?" msgstr "\"{}\" devrait-il être un superutilisateur (sudo) ?" -#, fuzzy msgid "Select which partitions to encrypt" -msgstr "Sélectionner la partition à marquer comme chiffrée" +msgstr "Sélectionner les partitions à chiffrer" msgid "very weak" -msgstr "" +msgstr "très faible" msgid "weak" -msgstr "" +msgstr "faible" msgid "moderate" -msgstr "" +msgstr "modéré" msgid "strong" -msgstr "" +msgstr "fort" -#, fuzzy msgid "Add subvolume" -msgstr " Sous-volume : {:16}" +msgstr "Ajouter un sous-volume" msgid "Edit subvolume" -msgstr "" +msgstr "Modifier le sous-volume" -#, fuzzy msgid "Delete subvolume" -msgstr "Supprimer l'utilisateur" +msgstr "Supprimer le sous-volume" msgid "Configured {} interfaces" -msgstr "" +msgstr "Interfaces {} configurées" msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "" +msgstr "Cette option active le nombre de téléchargements parallèles qui peuvent se produire pendant l'installation" #, python-brace-format msgid "" @@ -803,32 +793,43 @@ msgid "" " (Enter a value between 1 to {max_downloads})\n" "Note:" msgstr "" +"Saisir le nombre de téléchargements parallèles à activer.\n" +" (Entrer une valeur comprise entre 1 et {max_downloads})\n" +"Note :" msgid " - Maximum value : {max_downloads} ( Allows {max_downloads} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr "" +msgstr " - Valeur maximale : {max_downloads} (Autorise {max_downloads} téléchargements parallèles, autorise {max_downloads+1} téléchargements à la fois)" msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr "" +msgstr " - Valeur minimale : 1 (Autorise 1 téléchargement parallèle, autorise 2 téléchargements à la fois)" msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr "" +msgstr " - Désactiver/Défaut : 0 (Désactive le téléchargement parallèle, n'autorise qu'un seul téléchargement à la fois)" #, python-brace-format msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "" +msgstr "Entrée invalide ! Réessayer avec une entrée valide [1 pour {max_downloads}, ou 0 pour désactiver]" msgid "Parallel Downloads" -msgstr "" +msgstr "Téléchargements parallèles" -#, fuzzy msgid "ESC to skip" -msgstr "Utiliser ESC pour ignorer" +msgstr "ESC pour ignorer" msgid "CTRL+C to reset" -msgstr "" +msgstr "CTRL+C pour réinitialiser" msgid "TAB to select" -msgstr "" +msgstr "TAB pour sélectionner" + +msgid "[Default value: 0] > " +msgstr "[Valeur par défaut : 0] > " + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "Pour pouvoir utiliser cette traduction, veuillez installer manuellement une police prenant en charge la langue." + +msgid "The font should be stored as {}" +msgstr "La police doit être stockée sous {}" #~ msgid "Select disk layout" #~ msgstr "Sélectionner la disposition du disque" -- cgit v1.2.3-70-g09d2 From 60d76d907a13df2368af24105232a7de18c10e36 Mon Sep 17 00:00:00 2001 From: Campbell Jones Date: Tue, 28 Feb 2023 00:49:45 -0500 Subject: Revise packages in Budgie profile (#1585) * Revise packages in Budgie profile * Use budgie pkg group, remove nm-applet --- profiles/budgie.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/profiles/budgie.py b/profiles/budgie.py index 3e4a85df..33484680 100644 --- a/profiles/budgie.py +++ b/profiles/budgie.py @@ -4,12 +4,14 @@ import archinstall is_top_level_profile = False -# "It is recommended also to install the gnome group, which contains applications required for the standard GNOME experience." - Arch Wiki __packages__ = [ - "budgie-desktop", - "gnome", + "arc-gtk-theme", + "budgie", "lightdm", "lightdm-gtk-greeter", + "mate-terminal", + "nemo", + "papirus-icon-theme", ] -- cgit v1.2.3-70-g09d2 From b41d7017277c4ffde3b423cf34e3a61301a5ca35 Mon Sep 17 00:00:00 2001 From: Alexander Speshilov Date: Tue, 28 Feb 2023 16:20:53 +0300 Subject: fix example in docs/examples/python.rst (#1606) --- docs/examples/python.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/examples/python.rst b/docs/examples/python.rst index c3904863..dfc0abb3 100644 --- a/docs/examples/python.rst +++ b/docs/examples/python.rst @@ -35,10 +35,10 @@ To do this, we'll begin by importing `archinstall` in our `./archinstall/example import archinstall - all_drives = archinstall.list_drives() - print(all_drives) + all_drives = archinstall.all_blockdevices(partitions=False) + print(list(all_drives.keys())) -This should print out a list of drives and some meta-information about them. +This should print out a list of drives. As an example, this will do just fine. Now, go ahead and install the library either as a user-module or system-wide. -- cgit v1.2.3-70-g09d2 From 2559e0dc10a34735e6f694e7edc33c7e4eec0778 Mon Sep 17 00:00:00 2001 From: Himadri Bhattacharjee <107522312+lavafroth@users.noreply.github.com> Date: Tue, 28 Feb 2023 14:46:38 +0000 Subject: Uses dict setdefault instead of manually checking if key-value pair exists. (#1657) --- archinstall/__init__.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/archinstall/__init__.py b/archinstall/__init__.py index 6a4c768e..bb1b9405 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -221,11 +221,8 @@ def load_config(): selected_region = arguments.get('mirror-region', None) arguments['mirror-region'] = {selected_region: list_mirrors()[selected_region]} - if arguments.get('sys-language', None) is not None: - arguments['sys-language'] = arguments.get('sys-language', 'en_US') - - if arguments.get('sys-encoding', None) is not None: - arguments['sys-encoding'] = arguments.get('sys-encoding', 'utf-8') + arguments.setdefault('sys-language', 'en_US') + arguments.setdefault('sys-encoding', 'utf-8') if arguments.get('gfx_driver', None) is not None: storage['gfx_driver_packages'] = AVAILABLE_GFX_DRIVERS.get(arguments.get('gfx_driver', None), None) -- cgit v1.2.3-70-g09d2 From 70213ee1144105c1046405b745c70d52be0df82d Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Tue, 28 Feb 2023 15:52:30 +0100 Subject: Fixed indentation issue after #1657 --- archinstall/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archinstall/__init__.py b/archinstall/__init__.py index bb1b9405..b22b4663 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -221,8 +221,8 @@ def load_config(): selected_region = arguments.get('mirror-region', None) arguments['mirror-region'] = {selected_region: list_mirrors()[selected_region]} - arguments.setdefault('sys-language', 'en_US') - arguments.setdefault('sys-encoding', 'utf-8') + arguments.setdefault('sys-language', 'en_US') + arguments.setdefault('sys-encoding', 'utf-8') if arguments.get('gfx_driver', None) is not None: storage['gfx_driver_packages'] = AVAILABLE_GFX_DRIVERS.get(arguments.get('gfx_driver', None), None) -- cgit v1.2.3-70-g09d2 From 08769f3107120d16b36baa0ac9bd0ced3ea91915 Mon Sep 17 00:00:00 2001 From: Himadri Bhattacharjee <107522312+lavafroth@users.noreply.github.com> Date: Tue, 28 Feb 2023 18:49:59 +0000 Subject: Fixes mypy errors. (#1658) --- archinstall/lib/menu/abstract_menu.py | 20 ++++++++++---------- archinstall/lib/menu/global_menu.py | 10 +++++----- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/archinstall/lib/menu/abstract_menu.py b/archinstall/lib/menu/abstract_menu.py index 5a7ca03a..d659d709 100644 --- a/archinstall/lib/menu/abstract_menu.py +++ b/archinstall/lib/menu/abstract_menu.py @@ -17,14 +17,14 @@ class Selector: def __init__( self, description :str, - func :Callable = None, - display_func :Callable = None, + func :Optional[Callable] = None, + display_func :Optional[Callable] = None, default :Any = None, enabled :bool = False, dependencies :List = [], dependencies_not :List = [], - exec_func :Callable = None, - preview_func :Callable = None, + exec_func :Optional[Callable] = None, + preview_func :Optional[Callable] = None, mandatory :bool = False, no_store :bool = False ): @@ -165,7 +165,7 @@ class Selector: class AbstractMenu: - def __init__(self, data_store: Dict[str, Any] = None, auto_cursor=False, preview_size :float = 0.2): + def __init__(self, data_store: Optional[Dict[str, Any]] = None, auto_cursor=False, preview_size :float = 0.2): """ Create a new selection menu. @@ -226,7 +226,7 @@ class AbstractMenu: """ will be called before each action in the menu """ return - def post_callback(self, selection_name: str = None, value: Any = None): + def post_callback(self, selection_name: Optional[str] = None, value: Any = None): """ will be called after each action in the menu """ return True @@ -356,7 +356,7 @@ class AbstractMenu: config_name, selector = self._find_selection(selection_name) return self.exec_option(config_name, selector) - def exec_option(self, config_name :str, p_selector :Selector = None) -> bool: + def exec_option(self, config_name :str, p_selector :Optional[Selector] = None) -> bool: """ processes the execution of a given menu entry - pre process callback - selection function @@ -372,13 +372,13 @@ class AbstractMenu: self.pre_callback(config_name) result = None - if selector.func: + if selector.func is not None: presel_val = self.option(config_name).get_selection() result = selector.func(presel_val) self._menu_options[config_name].set_current_selection(result) if selector.do_store(): self._data_store[config_name] = result - exec_ret_val = selector.exec_func(config_name,result) if selector.exec_func else False + exec_ret_val = selector.exec_func(config_name,result) if selector.exec_func is not None else False self.post_callback(config_name,result) if exec_ret_val and self._check_mandatory_status(): @@ -478,7 +478,7 @@ class AbstractMenu: class AbstractSubMenu(AbstractMenu): - def __init__(self, data_store: Dict[str, Any] = None): + def __init__(self, data_store: Optional[Dict[str, Any]] = None): super().__init__(data_store=data_store) self._menu_options['__separator__'] = Selector('') diff --git a/archinstall/lib/menu/global_menu.py b/archinstall/lib/menu/global_menu.py index 0d348227..f0062b4c 100644 --- a/archinstall/lib/menu/global_menu.py +++ b/archinstall/lib/menu/global_menu.py @@ -197,11 +197,11 @@ class GlobalMenu(AbstractMenu): self._menu_options['abort'] = Selector(_('Abort'), exec_func=lambda n,v:exit(1)) - def _update_install_text(self, name :str = None, result :Any = None): + def _update_install_text(self, name :Optional[str] = None, result :Any = None): text = self._install_text() self._menu_options['install'].update_description(text) - def post_callback(self,name :str = None ,result :Any = None): + def post_callback(self,name :Optional[str] = None ,result :Any = None): self._update_install_text(name, result) def _install_text(self): @@ -377,9 +377,9 @@ class GlobalMenu(AbstractMenu): return harddrives - def _select_profile(self, preset): + def _select_profile(self, preset) -> Optional[Profile]: + ret: Optional[Profile] = None profile = select_profile(preset) - ret = None if profile is None: if any([ @@ -403,7 +403,7 @@ class GlobalMenu(AbstractMenu): namespace = f'{profile.namespace}.py' with profile.load_instructions(namespace=namespace) as imported: if imported._prep_function(servers=servers, desktop=desktop, desktop_env=desktop_env, gfx_driver=gfx_driver): - ret: Profile = profile + ret = profile match ret.name: case 'minimal': -- cgit v1.2.3-70-g09d2 From f9975e22b03bd2baede0a36d3116be6b35b9f880 Mon Sep 17 00:00:00 2001 From: Alexmelman88 <99257010+Alexmelman88@users.noreply.github.com> Date: Wed, 1 Mar 2023 19:48:50 +0300 Subject: Update ru locale (#1660) * Update general_conf.py * Add files via upload --- archinstall/locales/ru/LC_MESSAGES/base.mo | Bin 35756 -> 36192 bytes archinstall/locales/ru/LC_MESSAGES/base.po | 6 ++++++ 2 files changed, 6 insertions(+) diff --git a/archinstall/locales/ru/LC_MESSAGES/base.mo b/archinstall/locales/ru/LC_MESSAGES/base.mo index 8b3f0ae4..4b83657f 100644 Binary files a/archinstall/locales/ru/LC_MESSAGES/base.mo and b/archinstall/locales/ru/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/ru/LC_MESSAGES/base.po b/archinstall/locales/ru/LC_MESSAGES/base.po index a62a8385..d8762ef6 100644 --- a/archinstall/locales/ru/LC_MESSAGES/base.po +++ b/archinstall/locales/ru/LC_MESSAGES/base.po @@ -832,6 +832,12 @@ msgstr "TAB, чтобы выбрать" msgid "[Default value: 0] > " msgstr "[Значение по умолчанию: 0] > " +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "Чтобы иметь возможность использовать этот перевод, пожалуйста, установите вручную шрифт, поддерживающий данный язык." + +msgid "The font should be stored as {}" +msgstr "Шрифт должен быть сохранен как {}" + #, python-brace-format #~ msgid "Edit {origkey} :" #~ msgstr "Редактировать {origkey}:" -- cgit v1.2.3-70-g09d2 From 9b08c244e66bcc92c425a399f1ddf5be5bac7abc Mon Sep 17 00:00:00 2001 From: Chengjun Xie Date: Wed, 8 Mar 2023 22:30:10 +0800 Subject: rename `keyboard-language` to `keyboard-layout` (#1670) `keyboard-language` doesn't work. --- docs/installing/guided.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installing/guided.rst b/docs/installing/guided.rst index b7d4db4f..3c566958 100644 --- a/docs/installing/guided.rst +++ b/docs/installing/guided.rst @@ -117,7 +117,7 @@ Options for ``--config`` +----------------------+--------------------------------------------------------+---------------------------------------------------------------------------------------------+-----------------------------------------------+ | kernels | [ "kernel1", "kernel2"] | List of kernels to install eg: linux, linux-lts, linux-zen etc | At least 1 | +----------------------+--------------------------------------------------------+---------------------------------------------------------------------------------------------+-----------------------------------------------+ -| keyboard-language | Any valid layout given by ``localectl list-keymaps`` | eg: ``us``, ``de`` or ``de-latin1`` etc. Defaults to ``us`` | No | +| keyboard-layout | Any valid layout given by ``localectl list-keymaps`` | eg: ``us``, ``de`` or ``de-latin1`` etc. Defaults to ``us`` | No | +----------------------+--------------------------------------------------------+---------------------------------------------------------------------------------------------+-----------------------------------------------+ | mirror-region | | {"": { "Mirror URL": True/False}, ..} | | Defaults to automatic selection. | No | | | | "Worldwide" or "Sweden" | | Either takes a dictionary structure of region and a given set of mirrors. | | -- cgit v1.2.3-70-g09d2 From 114e3626e2f3d5c89e21b4dbf94edd8ca5996fee Mon Sep 17 00:00:00 2001 From: bd-g <49082060+bd-g@users.noreply.github.com> Date: Fri, 10 Mar 2023 04:17:19 -0500 Subject: Sway profile - select seat (#1661) * sway profile choose seat --- archinstall/lib/user_interaction/general_conf.py | 3 ++ profiles/sway.py | 39 ++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/archinstall/lib/user_interaction/general_conf.py b/archinstall/lib/user_interaction/general_conf.py index 76631a98..fc7ded45 100644 --- a/archinstall/lib/user_interaction/general_conf.py +++ b/archinstall/lib/user_interaction/general_conf.py @@ -174,7 +174,10 @@ def select_profile(preset) -> Optional[Profile]: storage['profile_minimal'] = False storage['_selected_servers'] = [] storage['_desktop_profile'] = None + storage['sway_sys_priv_ctrl'] = None + storage['arguments']['sway_sys_priv_ctrl'] = None storage['arguments']['desktop-environment'] = None + storage['arguments']['gfx_driver'] = None storage['arguments']['gfx_driver_packages'] = None return None case MenuSelectionType.Skip: diff --git a/profiles/sway.py b/profiles/sway.py index b7266da3..5fbd3365 100644 --- a/profiles/sway.py +++ b/profiles/sway.py @@ -1,6 +1,12 @@ # A desktop environment using "Sway" +from typing import Any, TYPE_CHECKING + import archinstall from archinstall import Menu +from archinstall.lib.menu.menu import MenuSelectionType + +if TYPE_CHECKING: + _: Any is_top_level_profile = False @@ -22,7 +28,7 @@ def _check_driver() -> bool: packages = archinstall.storage.get("gfx_driver_packages", []) if packages and "nvidia" in packages: - prompt = 'The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?' + prompt = _('The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?') choice = Menu(prompt, Menu.yes_no(), default_option=Menu.no(), skip=False).run() if choice.value == Menu.no(): @@ -30,6 +36,18 @@ def _check_driver() -> bool: return True +def _get_system_privelege_control_preference(): + # need to activate seat service and add to seat group + title = str(_('Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)')) + title += str(_('\n\nChoose an option to give Sway access to your hardware')) + choice = Menu(title, ["polkit", "seatd"]).run() + + if choice.type_ != MenuSelectionType.Selection: + return False + + archinstall.storage['sway_sys_priv_ctrl'] = [choice.value] + archinstall.arguments['sway_sys_priv_ctrl'] = [choice.value] + return True def _prep_function(*args, **kwargs): """ @@ -38,6 +56,9 @@ def _prep_function(*args, **kwargs): other code in this stage. So it's a safe way to ask the user for more input before any other installer steps start. """ + if not _get_system_privelege_control_preference(): + return False + driver = archinstall.select_driver() if driver: @@ -49,15 +70,29 @@ def _prep_function(*args, **kwargs): return False +""" +def _post_install(*args, **kwargs): + if "seatd" in sway_sys_priv_ctrl: + print(_('After booting, add user(s) to the `seat` user group and re-login to use Sway')) + return True +""" + # Ensures that this code only gets executed if executed # through importlib.util.spec_from_file_location("sway", "/somewhere/sway.py") # or through conventional import sway if __name__ == "sway": if not _check_driver(): - raise archinstall.lib.exceptions.HardwareIncompatibilityError("Sway does not support the proprietary nvidia drivers.") + raise archinstall.lib.exceptions.HardwareIncompatibilityError(_('Sway does not support the proprietary nvidia drivers.')) # Install the Sway packages archinstall.storage['installation_session'].add_additional_packages(__packages__) + if "seatd" in archinstall.storage['sway_sys_priv_ctrl']: + archinstall.storage['installation_session'].add_additional_packages(['seatd']) + archinstall.storage['installation_session'].enable_service('seatd') + elif "polkit" in archinstall.storage['sway_sys_priv_ctrl']: + archinstall.storage['installation_session'].add_additional_packages(['polkit']) + else: + raise archinstall.lib.exceptions.ProfileError(_('Sway requires either seatd or polkit to run')) # Install the graphics driver packages archinstall.storage['installation_session'].add_additional_packages(f"xorg-server xorg-xinit {' '.join(archinstall.storage.get('gfx_driver_packages', None))}") -- cgit v1.2.3-70-g09d2 From 6c879962016c5a75000d1a7971f8a020be549927 Mon Sep 17 00:00:00 2001 From: Murphy Date: Fri, 10 Mar 2023 10:45:48 +0100 Subject: Add sector unit (#1668) --- archinstall/lib/disk/validators.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/archinstall/lib/disk/validators.py b/archinstall/lib/disk/validators.py index 54808886..076a8ba2 100644 --- a/archinstall/lib/disk/validators.py +++ b/archinstall/lib/disk/validators.py @@ -7,10 +7,12 @@ def valid_parted_position(pos :str) -> bool: if pos.isdigit(): return True - if pos.lower().endswith('b') and pos[:-1].isdigit(): + pos_lower = pos.lower() + + if (pos_lower.endswith('b') or pos_lower.endswith('s')) and pos[:-1].isdigit(): return True - if any(pos.lower().endswith(size) and pos[:-len(size)].replace(".", "", 1).isdigit() + if any(pos_lower.endswith(size) and pos[:-len(size)].replace(".", "", 1).isdigit() for size in ['%', 'kb', 'mb', 'gb', 'tb', 'kib', 'mib', 'gib', 'tib']): return True -- cgit v1.2.3-70-g09d2 From 5669f3ba4660d3be76e2993af30c1787e2ac3915 Mon Sep 17 00:00:00 2001 From: Escape0707 Date: Fri, 10 Mar 2023 19:50:24 +0900 Subject: Generate -fallback variant of boot entries for systemd-boot (#1583) * Generate -fallback variant of boot entries for systemd-boot --------- Co-authored-by: Anton Hvornum --- archinstall/lib/installer.py | 90 ++++++++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 41 deletions(-) diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 08f6d705..2b0830d3 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -839,46 +839,58 @@ class Installer: os.makedirs(f'{self.target}/boot/loader/entries') for kernel in self.kernels: - # Setup the loader entry - with open(f'{self.target}/boot/loader/entries/{self.init_time}_{kernel}.conf', 'w') as entry: - entry.write('# Created by: archinstall\n') - entry.write(f'# Created on: {self.init_time}\n') - entry.write(f'title Arch Linux ({kernel})\n') - entry.write(f"linux /vmlinuz-{kernel}\n") - if not is_vm(): - vendor = cpu_vendor() - if vendor == "AuthenticAMD": - entry.write("initrd /amd-ucode.img\n") - elif vendor == "GenuineIntel": - entry.write("initrd /intel-ucode.img\n") + for variant in ("", "-fallback"): + # Setup the loader entry + with open(f'{self.target}/boot/loader/entries/{self.init_time}_{kernel}{variant}.conf', 'w') as entry: + entry.write('# Created by: archinstall\n') + entry.write(f'# Created on: {self.init_time}\n') + entry.write(f'title Arch Linux ({kernel}{variant})\n') + entry.write(f"linux /vmlinuz-{kernel}\n") + if not is_vm(): + vendor = cpu_vendor() + if vendor == "AuthenticAMD": + entry.write("initrd /amd-ucode.img\n") + elif vendor == "GenuineIntel": + entry.write("initrd /intel-ucode.img\n") + else: + self.log(f"Unknown CPU vendor '{vendor}' detected. Archinstall won't add any ucode to systemd-boot config.", level=logging.DEBUG) + entry.write(f"initrd /initramfs-{kernel}{variant}.img\n") + # blkid doesn't trigger on loopback devices really well, + # so we'll use the old manual method until we get that sorted out. + root_fs_type = get_mount_fs_type(root_partition.filesystem) + + if root_fs_type is not None: + options_entry = f'rw rootfstype={root_fs_type} {" ".join(self.KERNEL_PARAMS)}\n' else: - self.log(f"Unknown CPU vendor '{vendor}' detected. Archinstall won't add any ucode to systemd-boot config.", level=logging.DEBUG) - entry.write(f"initrd /initramfs-{kernel}.img\n") - # blkid doesn't trigger on loopback devices really well, - # so we'll use the old manual method until we get that sorted out. - root_fs_type = get_mount_fs_type(root_partition.filesystem) - - if root_fs_type is not None: - options_entry = f'rw rootfstype={root_fs_type} {" ".join(self.KERNEL_PARAMS)}\n' - else: - options_entry = f'rw {" ".join(self.KERNEL_PARAMS)}\n' + options_entry = f'rw {" ".join(self.KERNEL_PARAMS)}\n' + + for subvolume in root_partition.subvolumes: + if subvolume.root is True and subvolume.name != '': + options_entry = f"rootflags=subvol={subvolume.name} " + options_entry + + # Zswap should be disabled when using zram. + # + # https://github.com/archlinux/archinstall/issues/881 + if self._zram_enabled: + options_entry = "zswap.enabled=0 " + options_entry - for subvolume in root_partition.subvolumes: - if subvolume.root is True and subvolume.name != '': - options_entry = f"rootflags=subvol={subvolume.name} " + options_entry + if real_device := self.detect_encryption(root_partition): + # TODO: We need to detect if the encrypted device is a whole disk encryption, + # or simply a partition encryption. Right now we assume it's a partition (and we always have) + log(f"Identifying root partition by PART-UUID on {real_device}: '{real_device.uuid}/{real_device.part_uuid}'.", level=logging.DEBUG) - # Zswap should be disabled when using zram. - # - # https://github.com/archlinux/archinstall/issues/881 - if self._zram_enabled: - options_entry = "zswap.enabled=0 " + options_entry + kernel_options = f"options" - if real_device := self.detect_encryption(root_partition): - # TODO: We need to detect if the encrypted device is a whole disk encryption, - # or simply a partition encryption. Right now we assume it's a partition (and we always have) - log(f"Identifying root partition by PART-UUID on {real_device}: '{real_device.uuid}/{real_device.part_uuid}'.", level=logging.DEBUG) + if self._disk_encryption.hsm_device: + # Note: lsblk UUID must be used, not PARTUUID for sd-encrypt to work + kernel_options += f" rd.luks.name={real_device.uuid}=luksdev" + # Note: tpm2-device and fido2-device don't play along very well: + # https://github.com/archlinux/archinstall/pull/1196#issuecomment-1129715645 + kernel_options += f" rd.luks.options=fido2-device=auto,password-echo=no" + else: + kernel_options += f" cryptdevice=PARTUUID={real_device.part_uuid}:luksdev" - kernel_options = f"options" + entry.write(f'{kernel_options} root=/dev/mapper/luksdev {options_entry}') if self._disk_encryption and self._disk_encryption.hsm_device: # Note: lsblk UUID must be used, not PARTUUID for sd-encrypt to work @@ -887,12 +899,8 @@ class Installer: # https://github.com/archlinux/archinstall/pull/1196#issuecomment-1129715645 kernel_options += f" rd.luks.options=fido2-device=auto,password-echo=no" else: - kernel_options += f" cryptdevice=PARTUUID={real_device.part_uuid}:luksdev" - - entry.write(f'{kernel_options} root=/dev/mapper/luksdev {options_entry}') - else: - log(f"Identifying root partition by PARTUUID on {root_partition}, looking for '{root_partition.part_uuid}'.", level=logging.DEBUG) - entry.write(f'options root=PARTUUID={root_partition.part_uuid} {options_entry}') + log(f"Identifying root partition by PARTUUID on {root_partition}, looking for '{root_partition.part_uuid}'.", level=logging.DEBUG) + entry.write(f'options root=PARTUUID={root_partition.part_uuid} {options_entry}') self.helper_flags['bootloader'] = "systemd" -- cgit v1.2.3-70-g09d2 From e4f3198505c736e8825a6fd056b71f9a7336c1d3 Mon Sep 17 00:00:00 2001 From: mrvantage <3941997+mrvantage@users.noreply.github.com> Date: Fri, 10 Mar 2023 14:58:41 +0100 Subject: Error handling cmd history (#1560) * If we encounter a FileNotFoundError, the cmd_history.txt file or parent directory does not exist. This leads to vague errors upstream of cmd executable file not existing if this is the case. Probably this is a valid situation and we should just pass on the error. --- archinstall/lib/general.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/archinstall/lib/general.py b/archinstall/lib/general.py index bf32a9a8..5fd655a2 100644 --- a/archinstall/lib/general.py +++ b/archinstall/lib/general.py @@ -391,6 +391,13 @@ class SysCommandWorker: os.chmod(str(history_logfile), stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP) except PermissionError: pass + # If history_logfile does not exist, ignore the error + except FileNotFoundError: + pass + except Exception as e: + exception_type = type(e).__name__ + log(f"Unexpected {exception_type} occurred in {self.cmd}: {e}", level=logging.ERROR) + raise e os.execve(self.cmd[0], list(self.cmd), {**os.environ, **self.environment_vars}) if storage['arguments'].get('debug'): -- cgit v1.2.3-70-g09d2 From 6884cd52cbbceccf1fc240854a1433918bb66e3d Mon Sep 17 00:00:00 2001 From: chestwood96 Date: Fri, 10 Mar 2023 15:07:36 +0100 Subject: Initial swapfile prototype (#1558) * Initial swapfile prototype * add_swapfile different exception handling * Added error handling to add_swapfile prototype --------- Co-authored-by: Anton Hvornum --- archinstall/lib/installer.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 2b0830d3..55bf5570 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -132,6 +132,7 @@ class Installer: # if HSM is not used to encrypt the root volume. Check mkinitcpio() function for that override. self.HOOKS = ["base", "systemd", "autodetect", "keyboard", "sd-vconsole", "modconf", "block", "filesystems", "fsck"] self.KERNEL_PARAMS = [] + self.FSTAB_ENTRIES = [] self._zram_enabled = False @@ -318,6 +319,26 @@ class Installer: partition.mount(f'{self.target}{mountpoint}', options=options) + def add_swapfile(self, size = '4G', enable_resume = True, file='/swapfile'): + if file[:1] != '/': + file = f"/{file}" + if len(file.strip()) <= 0 or file == '/': + raise ValueError(f"The filename for the swap file has to be a valid path, not: {self.target}{file}") + + SysCommand(f'dd if=/dev/zero of={self.target}{file} bs={size} count=1') + SysCommand(f'chmod 0600 {self.target}{file}') + SysCommand(f'mkswap {self.target}{file}') + + self.FSTAB_ENTRIES.append(f'{file} none swap defaults 0 0') + + if enable_resume: + resume_uuid = SysCommand(f'findmnt -no UUID -T {self.target}{file}').decode('UTF-8').strip() + resume_offset = SysCommand(f'/usr/bin/filefrag -v {self.target}{file}').decode('UTF-8').split('0:', 1)[1].split(":", 1)[1].split("..", 1)[0].strip() + + self.HOOKS.append('resume') + self.KERNEL_PARAMS.append(f'resume=UUID={resume_uuid}') + self.KERNEL_PARAMS.append(f'resume_offset={resume_offset}') + def post_install_check(self, *args :str, **kwargs :str) -> List[str]: return [step for step, flag in self.helper_flags.items() if flag is False] @@ -431,6 +452,11 @@ class Installer: if hasattr(plugin, 'on_genfstab'): if plugin.on_genfstab(self) is True: break + + with open(f"{self.target}/etc/fstab", 'a') as fstab_fh: + for entry in self.FSTAB_ENTRIES: + fstab_fh.write(f'{entry}\n') + return True -- cgit v1.2.3-70-g09d2 From 8f6cc07062968b259bebd346521ef685c16f89dc Mon Sep 17 00:00:00 2001 From: Steven Deobald Date: Fri, 10 Mar 2023 06:08:24 -0800 Subject: The Live ISO image does not have 'python-setuptools' installed (#1533) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 78787dec..106f61fc 100644 --- a/README.md +++ b/README.md @@ -168,6 +168,7 @@ you can replace the version of archinstall with a new version and run that with 5. Enter the repository with `cd archinstall` *At this stage, you can choose to check out a feature branch for instance with `git checkout v2.3.1-rc1`* 6. Build the project and install it using `python setup.py install` + *If you get a 'No Module named setuptools' error, run `pacman -S python-setuptools`* After this, running archinstall with `python -m archinstall` will run against whatever branch you chose in step 5. -- cgit v1.2.3-70-g09d2 From f0a6adb96dd388d62b2f6683709a8e310e6727c8 Mon Sep 17 00:00:00 2001 From: Yunus Emre Aydın <47641431+DolphyWind@users.noreply.github.com> Date: Tue, 14 Mar 2023 13:05:17 +0300 Subject: Fixed flake8 warnings (#1676) --- archinstall/lib/installer.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 55bf5570..8c6a8367 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -319,7 +319,7 @@ class Installer: partition.mount(f'{self.target}{mountpoint}', options=options) - def add_swapfile(self, size = '4G', enable_resume = True, file='/swapfile'): + def add_swapfile(self, size='4G', enable_resume=True, file='/swapfile'): if file[:1] != '/': file = f"/{file}" if len(file.strip()) <= 0 or file == '/': @@ -337,7 +337,7 @@ class Installer: self.HOOKS.append('resume') self.KERNEL_PARAMS.append(f'resume=UUID={resume_uuid}') - self.KERNEL_PARAMS.append(f'resume_offset={resume_offset}') + self.KERNEL_PARAMS.append(f'resume_offset={resume_offset}') def post_install_check(self, *args :str, **kwargs :str) -> List[str]: return [step for step, flag in self.helper_flags.items() if flag is False] @@ -457,7 +457,6 @@ class Installer: for entry in self.FSTAB_ENTRIES: fstab_fh.write(f'{entry}\n') - return True def set_hostname(self, hostname: str, *args :str, **kwargs :str) -> None: -- cgit v1.2.3-70-g09d2 From 79eb6bba627c4c70f24a265ac0b2ef9cbfbbd211 Mon Sep 17 00:00:00 2001 From: codefiles <11915375+codefiles@users.noreply.github.com> Date: Tue, 14 Mar 2023 16:24:15 -0400 Subject: Fix `exit_code` (#1679) --- archinstall/lib/general.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/archinstall/lib/general.py b/archinstall/lib/general.py index 5fd655a2..79693dcb 100644 --- a/archinstall/lib/general.py +++ b/archinstall/lib/general.py @@ -355,10 +355,12 @@ class SysCommandWorker: if self.ended or (got_output is False and pid_exists(self.pid) is False): self.ended = time.time() try: - self.exit_code = os.waitpid(self.pid, 0)[1] + wait_status = os.waitpid(self.pid, 0)[1] + self.exit_code = os.waitstatus_to_exitcode(wait_status) except ChildProcessError: try: - self.exit_code = os.waitpid(self.child_fd, 0)[1] + wait_status = os.waitpid(self.child_fd, 0)[1] + self.exit_code = os.waitstatus_to_exitcode(wait_status) except ChildProcessError: self.exit_code = 1 -- cgit v1.2.3-70-g09d2 From f6113107d6c7df763301de0816dcd1ae1d4ace4d Mon Sep 17 00:00:00 2001 From: codefiles <11915375+codefiles@users.noreply.github.com> Date: Sun, 26 Mar 2023 15:40:08 -0400 Subject: Change exit status indications to exit codes (#1685) --- archinstall/lib/disk/helpers.py | 2 +- archinstall/lib/disk/partition.py | 12 ++---------- archinstall/lib/luks.py | 2 +- archinstall/lib/systemd.py | 2 -- 4 files changed, 4 insertions(+), 14 deletions(-) diff --git a/archinstall/lib/disk/helpers.py b/archinstall/lib/disk/helpers.py index aea794f5..80d0cb53 100644 --- a/archinstall/lib/disk/helpers.py +++ b/archinstall/lib/disk/helpers.py @@ -233,7 +233,7 @@ def get_blockdevice_info(device_path, exclude_iso_dev :bool = True) -> Dict[str, information = blkid(f'blkid -p -o export {device_path}') return enrich_blockdevice_information(information) except SysCallError as ex: - if ex.exit_code in (512, 2): + if ex.exit_code == 2: # Assume that it's a loop device, and try to get info on it try: resolved_device_name = device_path.readlink().name diff --git a/archinstall/lib/disk/partition.py b/archinstall/lib/disk/partition.py index 12b1a9a6..87eaa6a7 100644 --- a/archinstall/lib/disk/partition.py +++ b/archinstall/lib/disk/partition.py @@ -186,8 +186,7 @@ class Partition: try: output = SysCommand(f"lsblk --json -b -o+LOG-SEC,SIZE,PTTYPE,PARTUUID,UUID,FSTYPE {self.device_path}").decode('UTF-8') except SysCallError as error: - # It appears as if lsblk can return exit codes like 8192 to indicate something. - # But it does return output in stderr so we'll try to catch it minus the message/info. + # Get the output minus the message/info from lsblk if it returns a non-zero exit code. output = error.worker.decode('UTF-8') if '{' in output: output = output[output.find('{'):] @@ -632,14 +631,7 @@ class Partition: return False def unmount(self) -> bool: - worker = SysCommand(f"/usr/bin/umount {self._path}") - exit_code = worker.exit_code - - # Without to much research, it seams that low error codes are errors. - # And above 8k is indicators such as "/dev/x not mounted.". - # So anything in between 0 and 8k are errors (?). - if exit_code and 0 < exit_code < 8000: - raise SysCallError(f"Could not unmount {self._path} properly: {worker}", exit_code=exit_code) + SysCommand(f"/usr/bin/umount {self._path}") # Update the partition info since the mount info has changed after this call. self._partition_info = self._fetch_information() diff --git a/archinstall/lib/luks.py b/archinstall/lib/luks.py index 7e4534d8..ad6bf093 100644 --- a/archinstall/lib/luks.py +++ b/archinstall/lib/luks.py @@ -115,7 +115,7 @@ class luks2: if cmd_handle.exit_code != 0: raise DiskError(f'Could not encrypt volume "{partition.path}": {b"".join(cmd_handle)}') except SysCallError as err: - if err.exit_code == 256: + if err.exit_code == 1: log(f'{partition} is being used, trying to unmount and crypt-close the device and running one more attempt at encrypting the device.', level=logging.DEBUG) # Partition was in use, unmount it and try again partition.unmount() diff --git a/archinstall/lib/systemd.py b/archinstall/lib/systemd.py index f459f94b..64ffcae4 100644 --- a/archinstall/lib/systemd.py +++ b/archinstall/lib/systemd.py @@ -97,8 +97,6 @@ class Boot: shutdown = SysCommand(f'systemd-run --machine={self.container_name} --pty shutdown now') except SysCallError as error: shutdown_exit_code = error.exit_code - # if error.exit_code == 256: - # pass while self.session.is_alive(): time.sleep(0.25) -- cgit v1.2.3-70-g09d2 From 6fdfd93e69aa27dd521449d363cdc66cf8429815 Mon Sep 17 00:00:00 2001 From: Murphy Date: Sun, 26 Mar 2023 21:42:24 +0200 Subject: Partition creation prompt text (#1683) * new prompt text * remove quotes --- archinstall/lib/user_interaction/partitioning_conf.py | 4 ++-- archinstall/locales/ar/LC_MESSAGES/base.po | 4 ++-- archinstall/locales/base.pot | 4 ++-- archinstall/locales/cs/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/de/LC_MESSAGES/base.po | 8 ++++---- archinstall/locales/el/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/en/LC_MESSAGES/base.po | 5 ++++- archinstall/locales/es/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/fr/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/id/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/it/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/ka/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/ko/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/nl/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/pl/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/pt/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/pt_BR/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/ru/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/sv/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/ta/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/tr/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/uk/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/ur/LC_MESSAGES/base.po | 6 ++++++ archinstall/locales/zh-CN/LC_MESSAGES/base.po | 6 ++++++ 24 files changed, 128 insertions(+), 11 deletions(-) diff --git a/archinstall/lib/user_interaction/partitioning_conf.py b/archinstall/lib/user_interaction/partitioning_conf.py index cff76dc2..0a5ede51 100644 --- a/archinstall/lib/user_interaction/partitioning_conf.py +++ b/archinstall/lib/user_interaction/partitioning_conf.py @@ -208,7 +208,7 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, if fs_choice.type_ == MenuSelectionType.Skip: continue - prompt = str(_('Enter the start sector (percentage or block number, default: {}): ')).format( + prompt = str(_('Enter the start location (in parted units: s, GB, %, etc. ; default: {}): ')).format( block_device.first_free_sector ) start = input(prompt).strip() @@ -219,7 +219,7 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, else: end_suggested = '100%' - prompt = str(_('Enter the end sector of the partition (percentage or block number, ex: {}): ')).format( + prompt = str(_('Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): ')).format( end_suggested ) end = input(prompt).strip() diff --git a/archinstall/locales/ar/LC_MESSAGES/base.po b/archinstall/locales/ar/LC_MESSAGES/base.po index 1a9fc1aa..1207e31d 100644 --- a/archinstall/locales/ar/LC_MESSAGES/base.po +++ b/archinstall/locales/ar/LC_MESSAGES/base.po @@ -97,10 +97,10 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " msgstr "" -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" msgid "{} contains queued partitions, this will remove those, are you sure?" diff --git a/archinstall/locales/base.pot b/archinstall/locales/base.pot index 2becbbf3..dd4076d6 100644 --- a/archinstall/locales/base.pot +++ b/archinstall/locales/base.pot @@ -97,11 +97,11 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " msgstr "" msgid "" -"Enter the end sector of the partition (percentage or block number, ex: {}): " +"Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" msgid "{} contains queued partitions, this will remove those, are you sure?" diff --git a/archinstall/locales/cs/LC_MESSAGES/base.po b/archinstall/locales/cs/LC_MESSAGES/base.po index b3dea244..42bbb7d5 100644 --- a/archinstall/locales/cs/LC_MESSAGES/base.po +++ b/archinstall/locales/cs/LC_MESSAGES/base.po @@ -94,6 +94,12 @@ msgstr "Zvolte co dělat s {}" msgid "Enter a desired filesystem type for the partition" msgstr "Zadejte požadovaný souborový systém pro oddíl" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Zadejte počáteční sektor (procenta nebo číslo bloku, výchozí: {}): " diff --git a/archinstall/locales/de/LC_MESSAGES/base.po b/archinstall/locales/de/LC_MESSAGES/base.po index dee2b481..ab7e8ef8 100644 --- a/archinstall/locales/de/LC_MESSAGES/base.po +++ b/archinstall/locales/de/LC_MESSAGES/base.po @@ -96,11 +96,11 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Bitte wählen Sie einen Dateisystemtyp für die Partition aus" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Bitte geben Sie den start Sektor ein (in Prozent oder Blocknummer, default: {}): " +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "Bitte geben Sie die Startposition ein (in parted Einheiten: s, GB, %, etc. ; default: {}): " -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Bitte geben Sie den end Sektor ein (in Prozent oder Blocknummer, default: {}): " +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "Bitte geben Sie die Endposition ein (in parted Einheiten: s, GB, %, etc. ; default: {}): " msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} enthält Partitionen in der Warteschlange, dies werden damit entfernt, sind sie sicher?" diff --git a/archinstall/locales/el/LC_MESSAGES/base.po b/archinstall/locales/el/LC_MESSAGES/base.po index c41dbb7e..ddbfa437 100644 --- a/archinstall/locales/el/LC_MESSAGES/base.po +++ b/archinstall/locales/el/LC_MESSAGES/base.po @@ -96,6 +96,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Εισάγετε ένα επιθυμητό τύπο συστήματος αρχείων για τη διαμέριση" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Εισάγετε τον start sector (ποσοστό ή αριθμό block, προκαθορισμένο {}): " diff --git a/archinstall/locales/en/LC_MESSAGES/base.po b/archinstall/locales/en/LC_MESSAGES/base.po index 62543eaa..f458aa76 100644 --- a/archinstall/locales/en/LC_MESSAGES/base.po +++ b/archinstall/locales/en/LC_MESSAGES/base.po @@ -94,7 +94,10 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " diff --git a/archinstall/locales/es/LC_MESSAGES/base.po b/archinstall/locales/es/LC_MESSAGES/base.po index f744daae..377488f8 100644 --- a/archinstall/locales/es/LC_MESSAGES/base.po +++ b/archinstall/locales/es/LC_MESSAGES/base.po @@ -96,6 +96,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Ingrese un tipo de sistema de archivos deseado para la partición" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Introduzca el sector de inicio (porcentaje o número de bloque, predeterminado: {}): " diff --git a/archinstall/locales/fr/LC_MESSAGES/base.po b/archinstall/locales/fr/LC_MESSAGES/base.po index ada12b8e..3fa12a34 100644 --- a/archinstall/locales/fr/LC_MESSAGES/base.po +++ b/archinstall/locales/fr/LC_MESSAGES/base.po @@ -93,6 +93,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Entrer un type de système de fichiers souhaité pour la partition" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Entrer le secteur de début (pourcentage ou numéro de bloc, par défaut : {}) : " diff --git a/archinstall/locales/id/LC_MESSAGES/base.po b/archinstall/locales/id/LC_MESSAGES/base.po index 85479389..99788ed6 100644 --- a/archinstall/locales/id/LC_MESSAGES/base.po +++ b/archinstall/locales/id/LC_MESSAGES/base.po @@ -96,6 +96,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Masukkan jenis filesystem yang diinginkan untuk partisi" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Masukkan sektor awal (persentase atau nomor blok, default: {}): " diff --git a/archinstall/locales/it/LC_MESSAGES/base.po b/archinstall/locales/it/LC_MESSAGES/base.po index 176d3959..18015fc8 100644 --- a/archinstall/locales/it/LC_MESSAGES/base.po +++ b/archinstall/locales/it/LC_MESSAGES/base.po @@ -96,6 +96,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Immettere un tipo di filesystem desiderato per la partizione" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Inserisci il settore iniziale (percentuale o numero di blocco, predefinito: {}): " diff --git a/archinstall/locales/ka/LC_MESSAGES/base.po b/archinstall/locales/ka/LC_MESSAGES/base.po index 6357d1a7..46d198ec 100644 --- a/archinstall/locales/ka/LC_MESSAGES/base.po +++ b/archinstall/locales/ka/LC_MESSAGES/base.po @@ -97,6 +97,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "შეიყვანეთ დანაყოფის სასურველი ფაილური სისტემის ტიპი" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "შეიყვანეთ საწყისი სექტორი (პროცენტებში ან ბლოკის ნომერი. ნაგულისხმები: {}): " diff --git a/archinstall/locales/ko/LC_MESSAGES/base.po b/archinstall/locales/ko/LC_MESSAGES/base.po index b0a85c64..7b914a90 100644 --- a/archinstall/locales/ko/LC_MESSAGES/base.po +++ b/archinstall/locales/ko/LC_MESSAGES/base.po @@ -96,6 +96,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "파티션에 대해 원하는 파일 시스템 유형을 입력하세요" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "시작 섹터를 입력하세요 (백분율 또는 블록 번호, 기본값: {}): " diff --git a/archinstall/locales/nl/LC_MESSAGES/base.po b/archinstall/locales/nl/LC_MESSAGES/base.po index b7323059..2986779b 100644 --- a/archinstall/locales/nl/LC_MESSAGES/base.po +++ b/archinstall/locales/nl/LC_MESSAGES/base.po @@ -97,6 +97,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Kies het gewenste bestandssysteem voor de partitie" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Voer de beginsector in (percentage of bloknummer - standaard: {}): " diff --git a/archinstall/locales/pl/LC_MESSAGES/base.po b/archinstall/locales/pl/LC_MESSAGES/base.po index 6655bbbd..363c5d9f 100644 --- a/archinstall/locales/pl/LC_MESSAGES/base.po +++ b/archinstall/locales/pl/LC_MESSAGES/base.po @@ -96,6 +96,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Wprowadź typ systemu plików dla partycji" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Wprowadź sektor początkowy (procent lub numer bloku, domyślnie: {}): " diff --git a/archinstall/locales/pt/LC_MESSAGES/base.po b/archinstall/locales/pt/LC_MESSAGES/base.po index 683de0ad..6c7338d4 100644 --- a/archinstall/locales/pt/LC_MESSAGES/base.po +++ b/archinstall/locales/pt/LC_MESSAGES/base.po @@ -95,6 +95,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Escreve o tipo de sistema de ficheiros desejado para a partição" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Escreve o sector de início (percentagem ou número de bloco, padrão: {}): " diff --git a/archinstall/locales/pt_BR/LC_MESSAGES/base.po b/archinstall/locales/pt_BR/LC_MESSAGES/base.po index 938f5068..8d1db8ac 100644 --- a/archinstall/locales/pt_BR/LC_MESSAGES/base.po +++ b/archinstall/locales/pt_BR/LC_MESSAGES/base.po @@ -94,6 +94,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Digite o tipo de sistema de arquivos desejado para a partição" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Digite o setor de início (porcentagem ou número do bloco, padrão: {}): " diff --git a/archinstall/locales/ru/LC_MESSAGES/base.po b/archinstall/locales/ru/LC_MESSAGES/base.po index d8762ef6..bdb1c4b6 100644 --- a/archinstall/locales/ru/LC_MESSAGES/base.po +++ b/archinstall/locales/ru/LC_MESSAGES/base.po @@ -97,6 +97,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Введите желаемый тип файловой системы для раздела" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Введите начальный сектор (процент или номер блока, по умолчанию: {}): " diff --git a/archinstall/locales/sv/LC_MESSAGES/base.po b/archinstall/locales/sv/LC_MESSAGES/base.po index fc311551..8bc51650 100644 --- a/archinstall/locales/sv/LC_MESSAGES/base.po +++ b/archinstall/locales/sv/LC_MESSAGES/base.po @@ -97,6 +97,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Mata in önskad filsystemtyp för partition" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Mata in startsektor (procent eller block-nummer, standard: {}): " diff --git a/archinstall/locales/ta/LC_MESSAGES/base.po b/archinstall/locales/ta/LC_MESSAGES/base.po index 4375f477..763e9fc9 100644 --- a/archinstall/locales/ta/LC_MESSAGES/base.po +++ b/archinstall/locales/ta/LC_MESSAGES/base.po @@ -96,6 +96,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "பகிர்வுக்கு தேவையான கோப்பு முறைமை வகையை உள்ளிடவும்" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "தொடக்கப் பிரிவை உள்ளிடவும் (சதவீதம் அல்லது தொகுதி எண், இயல்புநிலை: {}): " diff --git a/archinstall/locales/tr/LC_MESSAGES/base.po b/archinstall/locales/tr/LC_MESSAGES/base.po index fd1e2393..d31db52d 100644 --- a/archinstall/locales/tr/LC_MESSAGES/base.po +++ b/archinstall/locales/tr/LC_MESSAGES/base.po @@ -97,6 +97,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Disk bölümü için arzu edilen bir dosya systemi tipi girin" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Başlangıç kesimini girin (yüzde ya da blok numarası, varsayılan: {}): " diff --git a/archinstall/locales/uk/LC_MESSAGES/base.po b/archinstall/locales/uk/LC_MESSAGES/base.po index 3589df98..8216c4a7 100644 --- a/archinstall/locales/uk/LC_MESSAGES/base.po +++ b/archinstall/locales/uk/LC_MESSAGES/base.po @@ -96,6 +96,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "Введіть бажаний тип файлової системи для розділу" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Введіть початковий сектор (відсоток або номер блоку, за замовчуванням: {}): " diff --git a/archinstall/locales/ur/LC_MESSAGES/base.po b/archinstall/locales/ur/LC_MESSAGES/base.po index 0b024031..fc8174da 100644 --- a/archinstall/locales/ur/LC_MESSAGES/base.po +++ b/archinstall/locales/ur/LC_MESSAGES/base.po @@ -96,6 +96,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "اس پارٹیشن کے لیے مطلوبہ فائل سسٹم درج کریں" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "اسٹارٹ سیکٹر درج کریں (فیصد یا بلاک نمبر، ڈیفالٹ: {}):" diff --git a/archinstall/locales/zh-CN/LC_MESSAGES/base.po b/archinstall/locales/zh-CN/LC_MESSAGES/base.po index 60f88a01..78e86f8e 100644 --- a/archinstall/locales/zh-CN/LC_MESSAGES/base.po +++ b/archinstall/locales/zh-CN/LC_MESSAGES/base.po @@ -96,6 +96,12 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "为分区输入所需的文件系统类型" +msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgstr "" + +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgstr "" + msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "输入起始扇区(百分比或块号,默认:{}): " -- cgit v1.2.3-70-g09d2 From 942112f871ee625f21146f444dd19d08f8640c5e Mon Sep 17 00:00:00 2001 From: Lautron <66799530+Lautron@users.noreply.github.com> Date: Sun, 26 Mar 2023 16:47:36 -0300 Subject: Check if line begins with 'warning' before adding it to package info (#1674) * Check if line begins with 'warning' before adding it to package info, fix #1673 * Implement @Torxed suggestion from #1674 * Replaced 4 spaces with 1 tab --------- Co-authored-by: Anton Hvornum Co-authored-by: Anton Hvornum --- archinstall/lib/packages/packages.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/archinstall/lib/packages/packages.py b/archinstall/lib/packages/packages.py index d5834f43..0743e83b 100644 --- a/archinstall/lib/packages/packages.py +++ b/archinstall/lib/packages/packages.py @@ -1,3 +1,4 @@ +import dataclasses import json import ssl from typing import Dict, Any, Tuple, List @@ -112,4 +113,4 @@ def installed_package(package :str) -> LocalPackage: except SysCallError: pass - return LocalPackage(**package_info) + return LocalPackage({field.name: package_info.get(field.name) for field in dataclasses.fields(LocalPackage)}) -- cgit v1.2.3-70-g09d2 From ef5011114d7ecfbfd81d154fc985b1f2d345c3cc Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Sun, 26 Mar 2023 22:05:52 +0200 Subject: Improved handling of .json() helper handling. By dumping it with the JsonEncoder and loading it back in we ensure that any recursive objects also meers the json friendly dict criterias. (#1689) --- archinstall/lib/general.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/archinstall/lib/general.py b/archinstall/lib/general.py index 79693dcb..79ab024b 100644 --- a/archinstall/lib/general.py +++ b/archinstall/lib/general.py @@ -130,7 +130,10 @@ class JsonEncoder: copy[JsonEncoder._encode(key)] = val return copy elif hasattr(obj, 'json'): - return obj.json() + # json() is a friendly name for json-helper, it should return + # a dictionary representation of the object so that it can be + # processed by the json library. + return json.loads(json.dumps(obj.json(), cls=JSON)) elif hasattr(obj, '__dump__'): return obj.__dump__() elif isinstance(obj, (datetime, date)): -- cgit v1.2.3-70-g09d2 From fdb1b483308f21be67c544cba3391af3362ab24a Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Sun, 26 Mar 2023 23:00:52 +0200 Subject: Removed the archlinux-keyring package update it should no longer be needed as there's a service populating keys. (#1690) --- examples/guided.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/examples/guided.py b/examples/guided.py index 0bf30c46..e9240c03 100644 --- a/examples/guided.py +++ b/examples/guided.py @@ -287,20 +287,6 @@ if archinstall.arguments.get('skip-mirror-check', False) is False and archinstal archinstall.log(f"Arch Linux mirrors are not reachable. Please check your internet connection and the log file '{log_file}'.", level=logging.INFO, fg="red") exit(1) -if not archinstall.arguments.get('offline'): - latest_version_archlinux_keyring = max([k.pkg_version for k in archinstall.find_package('archlinux-keyring')]) - - # If we want to check for keyring updates - # and the installed package version is lower than the upstream version - if archinstall.arguments.get('skip-keyring-update', False) is False and \ - archinstall.installed_package('archlinux-keyring').version < latest_version_archlinux_keyring: - - # Then we update the keyring in the ISO environment - if not archinstall.update_keyring(): - log_file = os.path.join(archinstall.storage.get('LOG_PATH', None), archinstall.storage.get('LOG_FILE', None)) - archinstall.log(f"Failed to update the keyring. Please check your internet connection and the log file '{log_file}'.", level=logging.INFO, fg="red") - exit(1) - if not archinstall.arguments.get('silent'): ask_user_questions() -- cgit v1.2.3-70-g09d2 From b2fc71c9e5b3df3658ff12ed9a8f0d3c09a21136 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 27 Mar 2023 13:47:07 +0200 Subject: Added .part_uuid to MapperDev (#1691) --- archinstall/lib/disk/mapperdev.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/archinstall/lib/disk/mapperdev.py b/archinstall/lib/disk/mapperdev.py index 71ef2a79..bf1b3583 100644 --- a/archinstall/lib/disk/mapperdev.py +++ b/archinstall/lib/disk/mapperdev.py @@ -24,6 +24,10 @@ class MapperDev: def path(self): return f"/dev/mapper/{self.mappername}" + @property + def part_uuid(self): + return self.partition.part_uuid + @property def partition(self): from .helpers import uevent, get_parent_of_partition -- cgit v1.2.3-70-g09d2 From 83f4b4178fae83f9fae3dd0a7ac333957acd0c3f Mon Sep 17 00:00:00 2001 From: Daniel Girtler Date: Wed, 29 Mar 2023 21:48:11 +1100 Subject: Save encryption configuration (#1672) * Save encryption configuration * Fix deserialization problem * Added .part_uuid to MapperDev --------- Co-authored-by: Daniel Girtler Co-authored-by: Anton Hvornum Co-authored-by: Anton Hvornum --- archinstall/__init__.py | 8 ++++ archinstall/lib/configuration.py | 5 ++- archinstall/lib/disk/encryption.py | 26 ++++++++--- archinstall/lib/disk/filesystem.py | 2 +- archinstall/lib/hsm/fido.py | 19 +++++++- archinstall/lib/installer.py | 6 +-- archinstall/lib/menu/global_menu.py | 4 +- archinstall/lib/models/disk_encryption.py | 59 ++++++++++++++++++++++--- archinstall/lib/user_interaction/system_conf.py | 1 - 9 files changed, 108 insertions(+), 22 deletions(-) diff --git a/archinstall/__init__.py b/archinstall/__init__.py index b22b4663..9664c507 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -240,6 +240,14 @@ def load_config(): superusers = arguments.get('!superusers', None) arguments['!users'] = User.parse_arguments(users, superusers) + if arguments.get('disk_encryption', None) is not None and arguments.get('disk_layouts', None) is not None: + password = arguments.get('encryption_password', '') + arguments['disk_encryption'] = DiskEncryption.parse_arg( + arguments['disk_layouts'], + arguments['disk_encryption'], + password + ) + def post_process_arguments(arguments): storage['arguments'] = arguments diff --git a/archinstall/lib/configuration.py b/archinstall/lib/configuration.py index ad537b21..e0b5a143 100644 --- a/archinstall/lib/configuration.py +++ b/archinstall/lib/configuration.py @@ -44,7 +44,7 @@ class ConfigurationOutput: self._disk_layout_file = "user_disk_layout.json" self._sensitive = ['!users'] - self._ignore = ['abort', 'install', 'config', 'creds', 'dry_run', 'disk_encryption'] + self._ignore = ['abort', 'install', 'config', 'creds', 'dry_run'] self._process_config() @@ -71,6 +71,9 @@ class ConfigurationOutput: else: self._user_config[key] = self._config[key] + if key == 'disk_encryption': # special handling for encryption password + self._user_credentials['encryption_password'] = self._config[key].encryption_password + def user_config_to_json(self) -> str: return json.dumps({ 'config_version': storage['__version__'], # Tells us what version was used to generate the config diff --git a/archinstall/lib/disk/encryption.py b/archinstall/lib/disk/encryption.py index 67f656c8..c7496bfa 100644 --- a/archinstall/lib/disk/encryption.py +++ b/archinstall/lib/disk/encryption.py @@ -46,7 +46,7 @@ class DiskEncryptionMenu(AbstractSubMenu): Selector( _('Partitions'), func=lambda preset: select_partitions_to_encrypt(self._disk_layouts, preset), - display_func=lambda x: f'{len(x)} {_("Partitions")}' if x else None, + display_func=lambda x: f'{sum([len(y) for y in x.values()])} {_("Partitions")}' if x else None, dependencies=['encryption_password'], default=self._preset.partitions, preview_func=self._prev_disk_layouts, @@ -86,9 +86,14 @@ class DiskEncryptionMenu(AbstractSubMenu): def _prev_disk_layouts(self) -> Optional[str]: selector = self._menu_options['partitions'] if selector.has_selection(): - partitions: List[Any] = selector.current_selection + partitions: Dict[str, Any] = selector.current_selection + + all_partitions = [] + for parts in partitions.values(): + all_partitions += parts + output = str(_('Partitions to be encrypted')) + '\n' - output += current_partition_layout(partitions, with_title=False) + output += current_partition_layout(all_partitions, with_title=False) return output.rstrip() return None @@ -132,7 +137,7 @@ def select_hsm(preset: Optional[Fido2Device] = None) -> Optional[Fido2Device]: return None -def select_partitions_to_encrypt(disk_layouts: Dict[str, Any], preset: List[Any]) -> List[Any]: +def select_partitions_to_encrypt(disk_layouts: Dict[str, Any], preset: Dict[str, Any]) -> Dict[str, Any]: # If no partitions was marked as encrypted, but a password was supplied and we have some disks to format.. # Then we need to identify which partitions to encrypt. This will default to / (root). all_partitions = [] @@ -153,10 +158,17 @@ def select_partitions_to_encrypt(disk_layouts: Dict[str, Any], preset: List[Any] match choice.type_: case MenuSelectionType.Reset: - return [] + return {} case MenuSelectionType.Skip: return preset case MenuSelectionType.Selection: - return choice.value # type: ignore + selections: List[Any] = choice.value # type: ignore + partitions = {} + + for path, device in disk_layouts.items(): + for part in selections: + if part in device.get('partitions', []): + partitions.setdefault(path, []).append(part) - return [] + return partitions + return {} diff --git a/archinstall/lib/disk/filesystem.py b/archinstall/lib/disk/filesystem.py index 1e722ce5..1083df53 100644 --- a/archinstall/lib/disk/filesystem.py +++ b/archinstall/lib/disk/filesystem.py @@ -113,7 +113,7 @@ class Filesystem: format_options = partition.get('options',[]) + partition.get('filesystem',{}).get('format_options',[]) disk_encryption: DiskEncryption = storage['arguments'].get('disk_encryption') - if disk_encryption and partition in disk_encryption.partitions: + if disk_encryption and partition in disk_encryption.all_partitions: if not partition['device_instance']: raise DiskError(f"Internal error caused us to loose the partition. Please report this issue upstream!") diff --git a/archinstall/lib/hsm/fido.py b/archinstall/lib/hsm/fido.py index 758a2548..1c226322 100644 --- a/archinstall/lib/hsm/fido.py +++ b/archinstall/lib/hsm/fido.py @@ -1,9 +1,11 @@ +from __future__ import annotations + import getpass import logging from dataclasses import dataclass from pathlib import Path -from typing import List +from typing import List, Dict from ..general import SysCommand, SysCommandWorker, clear_vt100_escape_codes from ..disk.partition import Partition @@ -16,6 +18,21 @@ class Fido2Device: manufacturer: str product: str + def json(self) -> Dict[str, str]: + return { + 'path': str(self.path), + 'manufacturer': self.manufacturer, + 'product': self.product + } + + @classmethod + def parse_arg(cls, arg: Dict[str, str]) -> 'Fido2Device': + return Fido2Device( + Path(arg['path']), + arg['manufacturer'], + arg['product'] + ) + class Fido2: _loaded: bool = False diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 8c6a8367..0e9f0662 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -248,7 +248,7 @@ class Installer: # we manage the encrypted partititons if self._disk_encryption: - for partition in self._disk_encryption.partitions: + for partition in self._disk_encryption.all_partitions: # open the luks device and all associate stuff loopdev = f"{storage.get('ENC_IDENTIFIER', 'ai')}{pathlib.Path(partition['device_instance'].path).name}" @@ -324,7 +324,7 @@ class Installer: file = f"/{file}" if len(file.strip()) <= 0 or file == '/': raise ValueError(f"The filename for the swap file has to be a valid path, not: {self.target}{file}") - + SysCommand(f'dd if=/dev/zero of={self.target}{file} bs={size} count=1') SysCommand(f'chmod 0600 {self.target}{file}') SysCommand(f'mkswap {self.target}{file}') @@ -452,7 +452,7 @@ class Installer: if hasattr(plugin, 'on_genfstab'): if plugin.on_genfstab(self) is True: break - + with open(f"{self.target}/etc/fstab", 'a') as fstab_fh: for entry in self.FSTAB_ENTRIES: fstab_fh.write(f'{entry}\n') diff --git a/archinstall/lib/menu/global_menu.py b/archinstall/lib/menu/global_menu.py index f0062b4c..7c5b153e 100644 --- a/archinstall/lib/menu/global_menu.py +++ b/archinstall/lib/menu/global_menu.py @@ -279,8 +279,8 @@ class GlobalMenu(AbstractMenu): output = str(_('Encryption type')) + f': {enc_type}\n' output += str(_('Password')) + f': {secret(encryption.encryption_password)}\n' - if encryption.partitions: - output += 'Partitions: {} selected'.format(len(encryption.partitions)) + '\n' + if encryption.all_partitions: + output += 'Partitions: {} selected'.format(len(encryption.all_partitions)) + '\n' if encryption.hsm_device: output += f'HSM: {encryption.hsm_device.manufacturer}' diff --git a/archinstall/lib/models/disk_encryption.py b/archinstall/lib/models/disk_encryption.py index 3edab93e..a4a501d9 100644 --- a/archinstall/lib/models/disk_encryption.py +++ b/archinstall/lib/models/disk_encryption.py @@ -1,5 +1,7 @@ +from __future__ import annotations + from dataclasses import dataclass, field -from enum import Enum, auto +from enum import Enum from typing import Optional, List, Dict, TYPE_CHECKING, Any from ..hsm.fido import Fido2Device @@ -9,8 +11,7 @@ if TYPE_CHECKING: class EncryptionType(Enum): - Partition = auto() - # FullDiskEncryption = auto() + Partition = 'partition' @classmethod def _encryption_type_mapper(cls) -> Dict[str, 'EncryptionType']: @@ -35,9 +36,55 @@ class EncryptionType(Enum): class DiskEncryption: encryption_type: EncryptionType = EncryptionType.Partition encryption_password: str = '' - partitions: List[str] = field(default_factory=list) + partitions: Dict[str, List[Dict[str, Any]]] = field(default_factory=dict) hsm_device: Optional[Fido2Device] = None + @property + def all_partitions(self) -> List[Dict[str, Any]]: + _all: List[Dict[str, Any]] = [] + for parts in self.partitions.values(): + _all += parts + return _all + def generate_encryption_file(self, partition) -> bool: - return partition in self.partitions and partition['mountpoint'] != '/' - + return partition in self.all_partitions and partition['mountpoint'] != '/' + + def json(self) -> Dict[str, Any]: + obj = { + 'encryption_type': self.encryption_type.value, + 'partitions': self.partitions + } + + if self.hsm_device: + obj['hsm_device'] = self.hsm_device.json() + + return obj + + @classmethod + def parse_arg( + cls, + disk_layout: Dict[str, Any], + arg: Dict[str, Any], + password: str = '' + ) -> 'DiskEncryption': + # we have to map the enc partition config to the disk layout objects + # they both need to point to the same object as it will get modified + # during the installation process + enc_partitions: Dict[str, List[Dict[str, Any]]] = {} + + for path, partitions in disk_layout.items(): + conf_partitions = arg['partitions'].get(path, []) + for part in partitions['partitions']: + if part in conf_partitions: + enc_partitions.setdefault(path, []).append(part) + + enc = DiskEncryption( + EncryptionType(arg['encryption_type']), + password, + enc_partitions + ) + + if hsm := arg.get('hsm_device', None): + enc.hsm_device = Fido2Device.parse_arg(hsm) + + return enc diff --git a/archinstall/lib/user_interaction/system_conf.py b/archinstall/lib/user_interaction/system_conf.py index 42a6cec7..e1581677 100644 --- a/archinstall/lib/user_interaction/system_conf.py +++ b/archinstall/lib/user_interaction/system_conf.py @@ -60,7 +60,6 @@ def select_harddrives(preset: List[str] = []) -> List[str]: selected_harddrive = Menu( title, list(options.keys()), - preset_values=preset, multi=True, allow_reset=True, allow_reset_warning_msg=warning -- cgit v1.2.3-70-g09d2 From 194f132577008f9c56a7c3d4b769a0363f1979e6 Mon Sep 17 00:00:00 2001 From: codefiles <11915375+codefiles@users.noreply.github.com> Date: Wed, 29 Mar 2023 06:48:42 -0400 Subject: Use `pacstrap -K` (#1693) --- archinstall/lib/installer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 0e9f0662..15cb5ff0 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -418,7 +418,7 @@ class Installer: raise RequirementError(f'Could not sync mirrors: {error}', level=logging.ERROR, fg="red") try: - return SysCommand(f'/usr/bin/pacstrap -C /etc/pacman.conf {self.target} {" ".join(packages)} --noconfirm', peek_output=True).exit_code == 0 + return SysCommand(f'/usr/bin/pacstrap -C /etc/pacman.conf -K {self.target} {" ".join(packages)} --noconfirm', peek_output=True).exit_code == 0 except SysCallError as error: self.log(f'Could not strap in packages: {error}', level=logging.ERROR, fg="red") -- cgit v1.2.3-70-g09d2 From 9fe9fd6e62ec75a131e249f5ebe3c2d9ac133474 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Wed, 29 Mar 2023 13:29:13 +0200 Subject: Version bump v2.5.4 (#1694) --- archinstall/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archinstall/__init__.py b/archinstall/__init__.py index 9664c507..9de4a3ec 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -47,7 +47,7 @@ from .lib.configuration import * from .lib.udev import udevadm_info parser = ArgumentParser() -__version__ = "2.5.3" +__version__ = "2.5.4" storage['__version__'] = __version__ # add the custome _ as a builtin, it can now be used anywhere in the -- cgit v1.2.3-70-g09d2 From 9f102a66a4062ea64118c18c8f2c997ff30078ed Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Wed, 29 Mar 2023 14:39:47 +0200 Subject: Add some tweaks to make PKGBUILD more manageable (#1695) * Fixing some values that trigger issues in PKGBUILD * license dynamic --- pyproject.toml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 61f24e37..3572148e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "archinstall" -dynamic = ["version"] +dynamic = ["version", "entry-points", "license"] description = "Arch Linux installer - guided, templates etc." authors = [ {name = "Anton Hvornum", email = "anton@hvornum.se"}, @@ -15,11 +15,9 @@ requires-python = ">=3.10" keywords = ["linux", "arch", "archinstall", "installer"] classifiers = [ - "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", - "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: POSIX :: Linux", ] -- cgit v1.2.3-70-g09d2 From 4429b3897c016a71e8be4e40e68d4d12b377b72a Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Wed, 29 Mar 2023 15:30:11 +0200 Subject: Updated PKGBUILD with a pkgver, depends and hashsums (#1696) * Fixing some values that trigger issues in PKGBUILD * license dynamic * Updated PKGBUILD to contain a pkgver() as well as update hashsums and added systemd as depends --- PKGBUILD | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/PKGBUILD b/PKGBUILD index 70b18d00..108fa56e 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -4,14 +4,13 @@ # Contributor: demostanis worlds pkgname=archinstall -pkgver=2.5.0 -#pkgver=$(git describe --long | sed 's/\([^-]*-g\)/r\1/;s/-/./g') +#pkgver=2.5.4 pkgrel=1 pkgdesc="Just another guided/automated Arch Linux installer with a twist" arch=(any) url="https://github.com/archlinux/archinstall" license=(GPL3) -depends=(python) +depends=(python systemd) makedepends=(python-build python-installer python-setuptools python-sphinx python-wheel) provides=(python-archinstall) conflicts=(python-archinstall) @@ -20,12 +19,17 @@ source=( $pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz $pkgname-$pkgver.tar.gz.sig::$url/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz.sig ) -sha512sums=('9516719c4e4fe0423224a35b4846cf5c8daeb931cff6fed588957840edc5774e9c6fe18619d2356a6d76681ae3216ba19f5d0f0bd89c6301b4ff9b128d037d13' +sha512sums=('3bfdd2b33ef3a784bd6c847afce75b0d5c1997f8374db5f75adc6fe9e35ab135e7cdb2fdcef01999fcb6c03ed80159f02d3da560d28e8da8fe17043f4cdac108' 'SKIP') -b2sums=('a29ae767756f74ce296d53e31bb8376cfa7db19a53b8c3997b2d8747a60842ba88e8b18c505bc56a36d685f73f7a6d9e53adff17953c8a4ebaabc67c6db8e583' +b2sums=('87c3ad807e87d834d59210cb28d14c93acabe8996bcc7407866307f9cdddf4e233a35c96e99e02aebbbb95548bdfa125772fb4703bf0152227e4163cd621860a' 'SKIP') validpgpkeys=('256F73CEEFC6705C6BBAB20E5FBBB32941E3740A') # Anton Hvornum (Torxed) +pkgver() { + cd $pkgname-$pkgver + git describe --long --abbrev=7 | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' | grep -o -E '[0-9.]{5}' +} + prepare() { cd $pkgname-$pkgver # use real directories for examples and profiles, as symlinks do not work @@ -43,4 +47,4 @@ package() { cd "$pkgname-$pkgver" python -m installer --destdir="$pkgdir" dist/*.whl install -vDm 644 docs/_build/man/archinstall.1 -t "$pkgdir/usr/share/man/man1/" -} \ No newline at end of file +} -- cgit v1.2.3-70-g09d2 From 4f539a193146b67e122d30732294df44eb826f13 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Wed, 29 Mar 2023 15:41:55 +0200 Subject: Added missing pkgver definition (#1697) --- PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PKGBUILD b/PKGBUILD index 108fa56e..c5fcd038 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -4,7 +4,7 @@ # Contributor: demostanis worlds pkgname=archinstall -#pkgver=2.5.4 +pkgver=2.5.4 pkgrel=1 pkgdesc="Just another guided/automated Arch Linux installer with a twist" arch=(any) @@ -13,7 +13,7 @@ license=(GPL3) depends=(python systemd) makedepends=(python-build python-installer python-setuptools python-sphinx python-wheel) provides=(python-archinstall) -conflicts=(python-archinstall) +conflicts=(python-archinstall archinstall-git) replaces=(python-archinstall) source=( $pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz -- cgit v1.2.3-70-g09d2 From c5348564c929a2e3704593398eb305dd73bc1e4d Mon Sep 17 00:00:00 2001 From: codefiles <11915375+codefiles@users.noreply.github.com> Date: Thu, 30 Mar 2023 03:35:01 -0400 Subject: Update `SysCommand()` calls in `installer.py` (#1703) --- archinstall/lib/installer.py | 64 ++++++++++++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 15cb5ff0..f1c7b3db 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -418,7 +418,8 @@ class Installer: raise RequirementError(f'Could not sync mirrors: {error}', level=logging.ERROR, fg="red") try: - return SysCommand(f'/usr/bin/pacstrap -C /etc/pacman.conf -K {self.target} {" ".join(packages)} --noconfirm', peek_output=True).exit_code == 0 + SysCommand(f'/usr/bin/pacstrap -C /etc/pacman.conf -K {self.target} {" ".join(packages)} --noconfirm', peek_output=True) + return True except SysCallError as error: self.log(f'Could not strap in packages: {error}', level=logging.ERROR, fg="red") @@ -439,8 +440,10 @@ class Installer: def genfstab(self, flags :str = '-pU') -> bool: self.log(f"Updating {self.target}/etc/fstab", level=logging.INFO) - if not (fstab := SysCommand(f'/usr/bin/genfstab {flags} {self.target}')).exit_code == 0: - raise RequirementError(f'Could not generate fstab, strapping in packages most likely failed (disk out of space?)\n Error: {fstab}') + try: + fstab = SysCommand(f'/usr/bin/genfstab {flags} {self.target}') + except SysCallError as error: + raise RequirementError(f'Could not generate fstab, strapping in packages most likely failed (disk out of space?)\n Error: {error}') with open(f"{self.target}/etc/fstab", 'a') as fstab_fh: fstab_fh.write(fstab.decode()) @@ -489,7 +492,11 @@ class Installer: with open(f'{self.target}/etc/locale.conf', 'w') as fh: fh.write(f'LANG={locale}.{encoding}{modifier}\n') - return True if SysCommand(f'/usr/bin/arch-chroot {self.target} locale-gen').exit_code == 0 else False + try: + SysCommand(f'/usr/bin/arch-chroot {self.target} locale-gen') + return True + except SysCallError: + return False def set_timezone(self, zone :str, *args :str, **kwargs :str) -> bool: if not zone: @@ -545,8 +552,10 @@ class Installer: def enable_service(self, *services :str) -> None: for service in services: self.log(f'Enabling service {service}', level=logging.INFO) - if (output := self.arch_chroot(f'systemctl enable {service}')).exit_code != 0: - raise ServiceException(f"Unable to start service {service}: {output}") + try: + self.arch_chroot(f'systemctl enable {service}') + except SysCallError as error: + raise ServiceException(f"Unable to start service {service}: {error}") for plugin in plugins.values(): if hasattr(plugin, 'on_service'): @@ -687,7 +696,11 @@ class Installer: mkinit.write(f"HOOKS=({' '.join(self.HOOKS)})\n") - return SysCommand(f'/usr/bin/arch-chroot {self.target} mkinitcpio {" ".join(flags)}').exit_code == 0 + try: + SysCommand(f'/usr/bin/arch-chroot {self.target} mkinitcpio {" ".join(flags)}') + return True + except SysCallError: + return False def minimal_installation( self, testing: bool = False, multilib: bool = False, @@ -1140,8 +1153,10 @@ class Installer: if not handled_by_plugin: self.log(f'Creating user {user}', level=logging.INFO) - if not (output := SysCommand(f'/usr/bin/arch-chroot {self.target} useradd -m -G wheel {user}')).exit_code == 0: - raise SystemError(f"Could not create user inside installation: {output}") + try: + SysCommand(f'/usr/bin/arch-chroot {self.target} useradd -m -G wheel {user}') + except SysCallError as error: + raise SystemError(f"Could not create user inside installation: {error}") for plugin in plugins.values(): if hasattr(plugin, 'on_user_created'): @@ -1169,17 +1184,28 @@ class Installer: echo = shlex.join(['echo', combo]) sh = shlex.join(['sh', '-c', echo]) - result = SysCommand(f"/usr/bin/arch-chroot {self.target} " + sh[:-1] + " | chpasswd'") - return result.exit_code == 0 + try: + SysCommand(f"/usr/bin/arch-chroot {self.target} " + sh[:-1] + " | chpasswd'") + return True + except SysCallError: + return False def user_set_shell(self, user :str, shell :str) -> bool: self.log(f'Setting shell for {user} to {shell}', level=logging.INFO) - return SysCommand(f"/usr/bin/arch-chroot {self.target} sh -c \"chsh -s {shell} {user}\"").exit_code == 0 + try: + SysCommand(f"/usr/bin/arch-chroot {self.target} sh -c \"chsh -s {shell} {user}\"") + return True + except SysCallError: + return False def chown(self, owner :str, path :str, options :List[str] = []) -> bool: cleaned_path = path.replace('\'', '\\\'') - return SysCommand(f"/usr/bin/arch-chroot {self.target} sh -c 'chown {' '.join(options)} {owner} {cleaned_path}'").exit_code == 0 + try: + SysCommand(f"/usr/bin/arch-chroot {self.target} sh -c 'chown {' '.join(options)} {owner} {cleaned_path}'") + return True + except SysCallError: + return False def create_file(self, filename :str, owner :Optional[str] = None) -> InstallationFile: return InstallationFile(self, filename, owner) @@ -1197,8 +1223,10 @@ class Installer: with Boot(self) as session: os.system('/usr/bin/systemd-run --machine=archinstall --pty localectl set-keymap ""') - if (output := session.SysCommand(["localectl", "set-keymap", language])).exit_code != 0: - raise ServiceException(f"Unable to set locale '{language}' for console: {output}") + try: + session.SysCommand(["localectl", "set-keymap", language]) + except SysCallError as error: + raise ServiceException(f"Unable to set locale '{language}' for console: {error}") self.log(f"Keyboard language for this installation is now set to: {language}") else: @@ -1221,8 +1249,10 @@ class Installer: with Boot(self) as session: session.SysCommand(["localectl", "set-x11-keymap", '""']) - if (output := session.SysCommand(["localectl", "set-x11-keymap", language])).exit_code != 0: - raise ServiceException(f"Unable to set locale '{language}' for X11: {output}") + try: + session.SysCommand(["localectl", "set-x11-keymap", language]) + except SysCallError as error: + raise ServiceException(f"Unable to set locale '{language}' for X11: {error}") else: self.log(f'X11-Keyboard language was not changed from default (no language specified).', fg="yellow", level=logging.INFO) -- cgit v1.2.3-70-g09d2 From a822735dfe32f89640603cf8ee76312e952d8e00 Mon Sep 17 00:00:00 2001 From: Bao Date: Thu, 30 Mar 2023 03:08:08 -0500 Subject: Guard against null in config processor (#1705) Fixes #1704 --- archinstall/lib/configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archinstall/lib/configuration.py b/archinstall/lib/configuration.py index e0b5a143..c036783f 100644 --- a/archinstall/lib/configuration.py +++ b/archinstall/lib/configuration.py @@ -71,7 +71,7 @@ class ConfigurationOutput: else: self._user_config[key] = self._config[key] - if key == 'disk_encryption': # special handling for encryption password + if key == 'disk_encryption' and self._config[key]: # special handling for encryption password self._user_credentials['encryption_password'] = self._config[key].encryption_password def user_config_to_json(self) -> str: -- cgit v1.2.3-70-g09d2 From 60cdb81c788eb314c935632f830d87e1ff655659 Mon Sep 17 00:00:00 2001 From: laymoth Date: Thu, 30 Mar 2023 15:55:28 +0700 Subject: Update locale files (#1699) --- archinstall/locales/ar/LC_MESSAGES/base.po | 42 ++++++++++++++++ archinstall/locales/base.pot | 39 +++++++++++++-- archinstall/locales/cs/LC_MESSAGES/base.mo | Bin 26460 -> 26115 bytes archinstall/locales/cs/LC_MESSAGES/base.po | 58 +++++++++++++++++++--- archinstall/locales/de/LC_MESSAGES/base.mo | Bin 23285 -> 23304 bytes archinstall/locales/de/LC_MESSAGES/base.po | 48 ++++++++++++++++++- archinstall/locales/el/LC_MESSAGES/base.mo | Bin 35979 -> 35562 bytes archinstall/locales/el/LC_MESSAGES/base.po | 58 +++++++++++++++++++--- archinstall/locales/en/LC_MESSAGES/base.po | 45 ++++++++++++++++-- archinstall/locales/es/LC_MESSAGES/base.mo | Bin 24797 -> 24393 bytes archinstall/locales/es/LC_MESSAGES/base.po | 60 +++++++++++++++++++---- archinstall/locales/fr/LC_MESSAGES/base.mo | Bin 27935 -> 27591 bytes archinstall/locales/fr/LC_MESSAGES/base.po | 57 ++++++++++++++++++---- archinstall/locales/id/LC_MESSAGES/base.mo | Bin 26367 -> 26054 bytes archinstall/locales/id/LC_MESSAGES/base.po | 55 ++++++++++++++++++--- archinstall/locales/it/LC_MESSAGES/base.mo | Bin 27015 -> 26675 bytes archinstall/locales/it/LC_MESSAGES/base.po | 49 ++++++++++++++++--- archinstall/locales/ka/LC_MESSAGES/base.mo | Bin 45559 -> 44957 bytes archinstall/locales/ka/LC_MESSAGES/base.po | 12 ++--- archinstall/locales/ko/LC_MESSAGES/base.mo | Bin 27798 -> 27355 bytes archinstall/locales/ko/LC_MESSAGES/base.po | 52 +++++++++++++++++--- archinstall/locales/nl/LC_MESSAGES/base.mo | Bin 18002 -> 17688 bytes archinstall/locales/nl/LC_MESSAGES/base.po | 60 +++++++++++++++++++---- archinstall/locales/pl/LC_MESSAGES/base.mo | Bin 25880 -> 25444 bytes archinstall/locales/pl/LC_MESSAGES/base.po | 66 +++++++++++++++++++++----- archinstall/locales/pt/LC_MESSAGES/base.mo | Bin 16667 -> 16333 bytes archinstall/locales/pt/LC_MESSAGES/base.po | 60 +++++++++++++++++++---- archinstall/locales/pt_BR/LC_MESSAGES/base.mo | Bin 26802 -> 26469 bytes archinstall/locales/pt_BR/LC_MESSAGES/base.po | 49 ++++++++++++++++--- archinstall/locales/ru/LC_MESSAGES/base.mo | Bin 36192 -> 35760 bytes archinstall/locales/ru/LC_MESSAGES/base.po | 49 ++++++++++++++++--- archinstall/locales/sv/LC_MESSAGES/base.mo | Bin 23045 -> 22729 bytes archinstall/locales/sv/LC_MESSAGES/base.po | 60 +++++++++++++++++++---- archinstall/locales/ta/LC_MESSAGES/base.mo | Bin 48222 -> 47610 bytes archinstall/locales/ta/LC_MESSAGES/base.po | 58 +++++++++++++++++++--- archinstall/locales/tr/LC_MESSAGES/base.mo | Bin 24757 -> 24422 bytes archinstall/locales/tr/LC_MESSAGES/base.po | 58 +++++++++++++++++++--- archinstall/locales/uk/LC_MESSAGES/base.mo | Bin 36644 -> 36158 bytes archinstall/locales/uk/LC_MESSAGES/base.po | 18 +++---- archinstall/locales/ur/LC_MESSAGES/base.mo | Bin 20880 -> 20487 bytes archinstall/locales/ur/LC_MESSAGES/base.po | 60 +++++++++++++++++++---- archinstall/locales/zh-CN/LC_MESSAGES/base.mo | Bin 24513 -> 24126 bytes archinstall/locales/zh-CN/LC_MESSAGES/base.po | 52 +++++++++++++++++--- 43 files changed, 1021 insertions(+), 144 deletions(-) diff --git a/archinstall/locales/ar/LC_MESSAGES/base.po b/archinstall/locales/ar/LC_MESSAGES/base.po index 1207e31d..c9540b38 100644 --- a/archinstall/locales/ar/LC_MESSAGES/base.po +++ b/archinstall/locales/ar/LC_MESSAGES/base.po @@ -782,3 +782,45 @@ msgstr "" msgid "TAB to select" msgstr "" + +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +msgid "Encryption type" +msgstr "" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +msgid "Partitions to be encrypted" +msgstr "" + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +msgid "All settings will be reset, are you sure?" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Partition encryption" +msgstr "" diff --git a/archinstall/locales/base.pot b/archinstall/locales/base.pot index dd4076d6..651fbd58 100644 --- a/archinstall/locales/base.pot +++ b/archinstall/locales/base.pot @@ -97,11 +97,11 @@ msgstr "" msgid "Enter a desired filesystem type for the partition" msgstr "" -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " +msgid "" +"Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " msgstr "" -msgid "" -"Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " +msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" msgid "{} contains queued partitions, this will remove those, are you sure?" @@ -843,3 +843,36 @@ msgstr "" msgid "The font should be stored as {}" msgstr "" + +msgid "Encryption type" +msgstr "" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +msgid "Partitions to be encrypted" +msgstr "" + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +msgid "All settings will be reset, are you sure?" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Partition encryption" +msgstr "" diff --git a/archinstall/locales/cs/LC_MESSAGES/base.mo b/archinstall/locales/cs/LC_MESSAGES/base.mo index b175a54e..a256081c 100644 Binary files a/archinstall/locales/cs/LC_MESSAGES/base.mo and b/archinstall/locales/cs/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/cs/LC_MESSAGES/base.po b/archinstall/locales/cs/LC_MESSAGES/base.po index 42bbb7d5..a09c6001 100644 --- a/archinstall/locales/cs/LC_MESSAGES/base.po +++ b/archinstall/locales/cs/LC_MESSAGES/base.po @@ -100,12 +100,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Zadejte počáteční sektor (procenta nebo číslo bloku, výchozí: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Zadejte koncový sektor oddílu (procenta nebo číslo bloku, např. {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} obsahuje oddíly ve frontě, toto je odstraní, jste si jisti?" @@ -827,3 +821,55 @@ msgstr "" msgid "TAB to select" msgstr "" + +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +#, fuzzy +msgid "Encryption type" +msgstr "Šifrovací heslo" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Zvolte oddíl, který bude označen jako šifrovaný" + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} obsahuje oddíly ve frontě, toto je odstraní, jste si jisti?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Heslo správce (root)" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Zadejte počáteční sektor (procenta nebo číslo bloku, výchozí: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Zadejte koncový sektor oddílu (procenta nebo číslo bloku, např. {}): " diff --git a/archinstall/locales/de/LC_MESSAGES/base.mo b/archinstall/locales/de/LC_MESSAGES/base.mo index ca3f2971..0572f28b 100644 Binary files a/archinstall/locales/de/LC_MESSAGES/base.mo and b/archinstall/locales/de/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/de/LC_MESSAGES/base.po b/archinstall/locales/de/LC_MESSAGES/base.po index ab7e8ef8..ac677188 100644 --- a/archinstall/locales/de/LC_MESSAGES/base.po +++ b/archinstall/locales/de/LC_MESSAGES/base.po @@ -841,8 +841,52 @@ msgstr "" msgid "TAB to select" msgstr "" -#~ msgid "Select disk layout" -#~ msgstr "Laufwerke-layout auswählen" +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +#, fuzzy +msgid "Encryption type" +msgstr "Verschlüsselungspasswort angeben" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Bitte wählen sie welche Partition verschlüsselt werden soll" + +#, fuzzy +msgid "Select disk encryption option" +msgstr "Laufwerke-layout auswählen" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} enthält Partitionen in der Warteschlange, dies werden damit entfernt, sind sie sicher?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Root Passwort" + +msgid "Partition encryption" +msgstr "" #~ msgid "Add :" #~ msgstr "Hinzufügen :" diff --git a/archinstall/locales/el/LC_MESSAGES/base.mo b/archinstall/locales/el/LC_MESSAGES/base.mo index beae2659..103eaf0c 100644 Binary files a/archinstall/locales/el/LC_MESSAGES/base.mo and b/archinstall/locales/el/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/el/LC_MESSAGES/base.po b/archinstall/locales/el/LC_MESSAGES/base.po index ddbfa437..efcd6b49 100644 --- a/archinstall/locales/el/LC_MESSAGES/base.po +++ b/archinstall/locales/el/LC_MESSAGES/base.po @@ -102,12 +102,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Εισάγετε τον start sector (ποσοστό ή αριθμό block, προκαθορισμένο {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Εισάγετε τον end sector της διαμέρισης (ποσοστό ή αριθμό block, πχ: {}) " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} περιέχει διαμερίσεις στην ουρά, αυτό θα τις διαγράψει, είστε σίγουρη/ος;" @@ -834,3 +828,55 @@ msgstr "" msgid "TAB to select" msgstr "" + +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +#, fuzzy +msgid "Encryption type" +msgstr "Κωδικός κρυπτογράφησης" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Επιλέξτε ποιες διαμερίσεις να κρυπτογραφηθούν." + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} περιέχει διαμερίσεις στην ουρά, αυτό θα τις διαγράψει, είστε σίγουρη/ος;" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Κωδικός root" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Εισάγετε τον start sector (ποσοστό ή αριθμό block, προκαθορισμένο {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Εισάγετε τον end sector της διαμέρισης (ποσοστό ή αριθμό block, πχ: {}) " diff --git a/archinstall/locales/en/LC_MESSAGES/base.po b/archinstall/locales/en/LC_MESSAGES/base.po index f458aa76..f1722ef9 100644 --- a/archinstall/locales/en/LC_MESSAGES/base.po +++ b/archinstall/locales/en/LC_MESSAGES/base.po @@ -100,9 +100,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "" - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "" @@ -781,3 +778,45 @@ msgstr "" msgid "TAB to select" msgstr "" + +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +msgid "Encryption type" +msgstr "" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +msgid "Partitions to be encrypted" +msgstr "" + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +msgid "All settings will be reset, are you sure?" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Partition encryption" +msgstr "" diff --git a/archinstall/locales/es/LC_MESSAGES/base.mo b/archinstall/locales/es/LC_MESSAGES/base.mo index 6006c274..7194020e 100644 Binary files a/archinstall/locales/es/LC_MESSAGES/base.mo and b/archinstall/locales/es/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/es/LC_MESSAGES/base.po b/archinstall/locales/es/LC_MESSAGES/base.po index 377488f8..20101de0 100644 --- a/archinstall/locales/es/LC_MESSAGES/base.po +++ b/archinstall/locales/es/LC_MESSAGES/base.po @@ -102,12 +102,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Introduzca el sector de inicio (porcentaje o número de bloque, predeterminado: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Ingrese el sector final de la partición (porcentaje o número de bloque, ej: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} contiene particiones en cola, esto eliminará esas particiones, ¿estás seguro?" @@ -833,8 +827,58 @@ msgstr "" msgid "TAB to select" msgstr "" -#~ msgid "Select disk layout" -#~ msgstr "Seleccione el diseño del disco" +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +#, fuzzy +msgid "Encryption type" +msgstr "Contraseña de cifrado" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Seleccione qué particiones cifrar" + +#, fuzzy +msgid "Select disk encryption option" +msgstr "Seleccione el diseño del disco" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} contiene particiones en cola, esto eliminará esas particiones, ¿estás seguro?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Contraseña de root" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Introduzca el sector de inicio (porcentaje o número de bloque, predeterminado: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Ingrese el sector final de la partición (porcentaje o número de bloque, ej: {}): " #~ msgid "Add :" #~ msgstr "Añadir :" diff --git a/archinstall/locales/fr/LC_MESSAGES/base.mo b/archinstall/locales/fr/LC_MESSAGES/base.mo index 4570984a..16b8a6cf 100644 Binary files a/archinstall/locales/fr/LC_MESSAGES/base.mo and b/archinstall/locales/fr/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/fr/LC_MESSAGES/base.po b/archinstall/locales/fr/LC_MESSAGES/base.po index 3fa12a34..76080e40 100644 --- a/archinstall/locales/fr/LC_MESSAGES/base.po +++ b/archinstall/locales/fr/LC_MESSAGES/base.po @@ -68,6 +68,9 @@ msgstr "Utiliser NetworkManager (nécessaire pour configurer graphiquement Inter msgid "Select one network interface to configure" msgstr "Sélectionner une interface réseau à configurer" +msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" +msgstr "" + msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " msgstr "Entrer l'IP et le sous-réseau pour {} (exemple : 192.168.0.5/24) : " @@ -99,12 +102,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Entrer le secteur de début (pourcentage ou numéro de bloc, par défaut : {}) : " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Entrer le secteur de fin de la partition (pourcentage ou numéro de bloc, ex : {}) : " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} contient des partitions en file d'attente, cela les supprimera, êtes-vous sûr ?" @@ -216,6 +213,9 @@ msgstr "" msgid "All open-source (default)" msgstr "Tout open-source (par défaut)" +msgid "Choose which kernels to use or leave blank for default \"{}\"" +msgstr "" + msgid "Choose which locale language to use" msgstr "Choisir la langue locale à utiliser" @@ -837,8 +837,49 @@ msgstr "Pour pouvoir utiliser cette traduction, veuillez installer manuellement msgid "The font should be stored as {}" msgstr "La police doit être stockée sous {}" -#~ msgid "Select disk layout" -#~ msgstr "Sélectionner la disposition du disque" +#, fuzzy +msgid "Encryption type" +msgstr "Mot de passe de chiffrement" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Sélectionner les partitions à chiffrer" + +#, fuzzy +msgid "Select disk encryption option" +msgstr "Sélectionner la disposition du disque" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} contient des partitions en file d'attente, cela les supprimera, êtes-vous sûr ?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Mot de passe root" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Entrer le secteur de début (pourcentage ou numéro de bloc, par défaut : {}) : " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Entrer le secteur de fin de la partition (pourcentage ou numéro de bloc, ex : {}) : " #, python-brace-format #~ msgid "Edit {origkey} :" diff --git a/archinstall/locales/id/LC_MESSAGES/base.mo b/archinstall/locales/id/LC_MESSAGES/base.mo index c02df9eb..c2380c86 100644 Binary files a/archinstall/locales/id/LC_MESSAGES/base.mo and b/archinstall/locales/id/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/id/LC_MESSAGES/base.po b/archinstall/locales/id/LC_MESSAGES/base.po index 99788ed6..63065ec3 100644 --- a/archinstall/locales/id/LC_MESSAGES/base.po +++ b/archinstall/locales/id/LC_MESSAGES/base.po @@ -102,12 +102,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Masukkan sektor awal (persentase atau nomor blok, default: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Masukkan sektor akhir partisi (persentase atau nomor blok, mis: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} berisi partisi yang mengantri, ini akan menghapusnya, apakah Anda yakin?" @@ -836,3 +830,52 @@ msgstr "TAB untuk memilih" msgid "[Default value: 0] > " msgstr "[Nilai default: 0] > " + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +#, fuzzy +msgid "Encryption type" +msgstr "Kata sandi enkripsi" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Pilih partisi mana yang akan dienkripsi" + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} berisi partisi yang mengantri, ini akan menghapusnya, apakah Anda yakin?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Kata sandi root" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Masukkan sektor awal (persentase atau nomor blok, default: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Masukkan sektor akhir partisi (persentase atau nomor blok, mis: {}): " diff --git a/archinstall/locales/it/LC_MESSAGES/base.mo b/archinstall/locales/it/LC_MESSAGES/base.mo index e1dccd81..f199746c 100644 Binary files a/archinstall/locales/it/LC_MESSAGES/base.mo and b/archinstall/locales/it/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/it/LC_MESSAGES/base.po b/archinstall/locales/it/LC_MESSAGES/base.po index 18015fc8..00df1a3f 100644 --- a/archinstall/locales/it/LC_MESSAGES/base.po +++ b/archinstall/locales/it/LC_MESSAGES/base.po @@ -102,12 +102,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Inserisci il settore iniziale (percentuale o numero di blocco, predefinito: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Inserisci il settore finale (percentuale o numero di blocco, predefinito: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} contiene partizioni in coda, questo le rimuoverà, sei sicuro?" @@ -842,3 +836,46 @@ msgstr "Per poter utilizzare questa traduzione, installa manualmente un font che msgid "The font should be stored as {}" msgstr "Il carattere dovrebbe essere memorizzato come {}" + +#, fuzzy +msgid "Encryption type" +msgstr "Password di crittografia" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Seleziona le partizioni da crittografare" + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} contiene partizioni in coda, questo le rimuoverà, sei sicuro?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Password di root" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Inserisci il settore iniziale (percentuale o numero di blocco, predefinito: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Inserisci il settore finale (percentuale o numero di blocco, predefinito: {}): " diff --git a/archinstall/locales/ka/LC_MESSAGES/base.mo b/archinstall/locales/ka/LC_MESSAGES/base.mo index 63a239ce..b95a6e0e 100644 Binary files a/archinstall/locales/ka/LC_MESSAGES/base.mo and b/archinstall/locales/ka/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/ka/LC_MESSAGES/base.po b/archinstall/locales/ka/LC_MESSAGES/base.po index 46d198ec..c89ec795 100644 --- a/archinstall/locales/ka/LC_MESSAGES/base.po +++ b/archinstall/locales/ka/LC_MESSAGES/base.po @@ -103,12 +103,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "შეიყვანეთ საწყისი სექტორი (პროცენტებში ან ბლოკის ნომერი. ნაგულისხმები: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "შეიყვანეთ დანაყოფის ბოლო სექტორი (პროცენტულად ან ბლოკის ნომერი. მაგ: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} რიგში ჩაყენებულ დანაყოფებს შეიცავს. ეს წაშლის მათ. დარწმუნებული ბრძანდებით?" @@ -876,3 +870,9 @@ msgstr "პაროლი" msgid "Partition encryption" msgstr "დანაყოფის დაშიფვრა" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "შეიყვანეთ საწყისი სექტორი (პროცენტებში ან ბლოკის ნომერი. ნაგულისხმები: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "შეიყვანეთ დანაყოფის ბოლო სექტორი (პროცენტულად ან ბლოკის ნომერი. მაგ: {}): " diff --git a/archinstall/locales/ko/LC_MESSAGES/base.mo b/archinstall/locales/ko/LC_MESSAGES/base.mo index 9f86dafd..4c89f1f8 100644 Binary files a/archinstall/locales/ko/LC_MESSAGES/base.mo and b/archinstall/locales/ko/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/ko/LC_MESSAGES/base.po b/archinstall/locales/ko/LC_MESSAGES/base.po index 7b914a90..4363031e 100644 --- a/archinstall/locales/ko/LC_MESSAGES/base.po +++ b/archinstall/locales/ko/LC_MESSAGES/base.po @@ -102,12 +102,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "시작 섹터를 입력하세요 (백분율 또는 블록 번호, 기본값: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "파티션의 끝 섹터를 입력하세요 (백분율 또는 블록 번호, 예시: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} 에 대기 중인 파티션이 포함되어 있습니다. 그러면 이러한 파티션이 제거됩니다. 정말 진행하시겠습니까?" @@ -769,7 +763,8 @@ msgstr "입력한 사용자 이름이 잘못되었습니다. 다시 시도하세 msgid "Should \"{}\" be a superuser (sudo)?" msgstr "\"{}\"은(는) 슈퍼유저여야 합니까 (sudo)?" -msgid "Select which partitions to encrypt:" +#, fuzzy +msgid "Select which partitions to encrypt" msgstr "암호화할 파티션을 선택하세요:" msgid "very weak" @@ -842,3 +837,46 @@ msgstr "이 번역을 사용하려면 해당 언어를 지원하는 글꼴을 msgid "The font should be stored as {}" msgstr "글꼴은 {} (으)로 저장해야 합니다" + +#, fuzzy +msgid "Encryption type" +msgstr "비밀번호 암호화" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "암호화할 파티션을 선택하세요:" + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} 에 대기 중인 파티션이 포함되어 있습니다. 그러면 이러한 파티션이 제거됩니다. 정말 진행하시겠습니까?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "루트 비밀번호" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "시작 섹터를 입력하세요 (백분율 또는 블록 번호, 기본값: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "파티션의 끝 섹터를 입력하세요 (백분율 또는 블록 번호, 예시: {}): " diff --git a/archinstall/locales/nl/LC_MESSAGES/base.mo b/archinstall/locales/nl/LC_MESSAGES/base.mo index 62b7af82..222f21e9 100644 Binary files a/archinstall/locales/nl/LC_MESSAGES/base.mo and b/archinstall/locales/nl/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/nl/LC_MESSAGES/base.po b/archinstall/locales/nl/LC_MESSAGES/base.po index 2986779b..7f3de195 100644 --- a/archinstall/locales/nl/LC_MESSAGES/base.po +++ b/archinstall/locales/nl/LC_MESSAGES/base.po @@ -103,12 +103,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Voer de beginsector in (percentage of bloknummer - standaard: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Voer de eindsector in (percentage of bloknummer - bijvoorbeeld: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "‘{}’ bevat in behandeling zijnde partities, welke hierdoor worden verwijderd. Weet u zeker dat u wilt doorgaan?" @@ -862,8 +856,58 @@ msgstr "" msgid "TAB to select" msgstr "" -#~ msgid "Select disk layout" -#~ msgstr "Kies een schijfindeling" +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +#, fuzzy +msgid "Encryption type" +msgstr "Versleutelwachtwoord instellen" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Kies welke partitie moet worden versleuteld" + +#, fuzzy +msgid "Select disk encryption option" +msgstr "Kies een schijfindeling" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "‘{}’ bevat in behandeling zijnde partities, welke hierdoor worden verwijderd. Weet u zeker dat u wilt doorgaan?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Rootwachtwoord" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Voer de beginsector in (percentage of bloknummer - standaard: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Voer de eindsector in (percentage of bloknummer - bijvoorbeeld: {}): " #~ msgid "Add :" #~ msgstr "Toevoegen:" diff --git a/archinstall/locales/pl/LC_MESSAGES/base.mo b/archinstall/locales/pl/LC_MESSAGES/base.mo index 0e8e7bef..7ca4f9b0 100644 Binary files a/archinstall/locales/pl/LC_MESSAGES/base.mo and b/archinstall/locales/pl/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/pl/LC_MESSAGES/base.po b/archinstall/locales/pl/LC_MESSAGES/base.po index 363c5d9f..ec4fcbd4 100644 --- a/archinstall/locales/pl/LC_MESSAGES/base.po +++ b/archinstall/locales/pl/LC_MESSAGES/base.po @@ -1,14 +1,14 @@ msgid "" msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" "Last-Translator: MedzikUser \n" "Language-Team: \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" "X-Generator: Poedit 2.4.2\n" msgid "[!] A log file has been created here: {} {}" @@ -102,12 +102,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Wprowadź sektor początkowy (procent lub numer bloku, domyślnie: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Wprowadź sektor końcowy (procent lub numer bloku, domyślnie: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} zawiera partycje oczekujące w kolejce, to spowoduje ich usunięcie, czy jesteś pewien?" @@ -836,8 +830,58 @@ msgstr "Naciśnij Ctrl+C, aby zresetować" msgid "TAB to select" msgstr "Naciśnij Tab, aby wybrać" -#~ msgid "Select disk layout" -#~ msgstr "Wybierz układ dysku" +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +#, fuzzy +msgid "Encryption type" +msgstr "Hasło szyfrujące" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Wybierz partycja która ma zostać zaszyfrowana" + +#, fuzzy +msgid "Select disk encryption option" +msgstr "Wybierz układ dysku" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} zawiera partycje oczekujące w kolejce, to spowoduje ich usunięcie, czy jesteś pewien?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Hasło użytkownika root" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Wprowadź sektor początkowy (procent lub numer bloku, domyślnie: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Wprowadź sektor końcowy (procent lub numer bloku, domyślnie: {}): " #~ msgid "Add :" #~ msgstr "Dodaj :" diff --git a/archinstall/locales/pt/LC_MESSAGES/base.mo b/archinstall/locales/pt/LC_MESSAGES/base.mo index 113b26a6..99fd4b02 100644 Binary files a/archinstall/locales/pt/LC_MESSAGES/base.mo and b/archinstall/locales/pt/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/pt/LC_MESSAGES/base.po b/archinstall/locales/pt/LC_MESSAGES/base.po index 6c7338d4..4f772aae 100644 --- a/archinstall/locales/pt/LC_MESSAGES/base.po +++ b/archinstall/locales/pt/LC_MESSAGES/base.po @@ -101,12 +101,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Escreve o sector de início (percentagem ou número de bloco, padrão: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Escreve o sector final da partição (percentagem ou número de bloco, ex: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} contem partições em fila, isto irá remover essas, tens a certeza?" @@ -884,8 +878,58 @@ msgstr "" msgid "TAB to select" msgstr "" -#~ msgid "Select disk layout" -#~ msgstr "Seleciona o esquema de disco" +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +#, fuzzy +msgid "Encryption type" +msgstr "Define a palavra-passe de encriptação" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Seleciona a partição a marcar como encriptada" + +#, fuzzy +msgid "Select disk encryption option" +msgstr "Seleciona o esquema de disco" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} contem partições em fila, isto irá remover essas, tens a certeza?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Palavra-passe de root" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Escreve o sector de início (percentagem ou número de bloco, padrão: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Escreve o sector final da partição (percentagem ou número de bloco, ex: {}): " #~ msgid "Add :" #~ msgstr "Adicionar :" diff --git a/archinstall/locales/pt_BR/LC_MESSAGES/base.mo b/archinstall/locales/pt_BR/LC_MESSAGES/base.mo index 931e0ddf..bcffafbf 100644 Binary files a/archinstall/locales/pt_BR/LC_MESSAGES/base.mo and b/archinstall/locales/pt_BR/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/pt_BR/LC_MESSAGES/base.po b/archinstall/locales/pt_BR/LC_MESSAGES/base.po index 8d1db8ac..33e78a20 100644 --- a/archinstall/locales/pt_BR/LC_MESSAGES/base.po +++ b/archinstall/locales/pt_BR/LC_MESSAGES/base.po @@ -100,12 +100,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Digite o setor de início (porcentagem ou número do bloco, padrão: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Digite o setor final da partição (porcentagem ou número de bloco, ex.: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} contém partições em fila, isto irá removê-las, tem certeza?" @@ -841,3 +835,46 @@ msgstr "Para poder usar esta tradução, instale manualmente uma fonte que supor msgid "The font should be stored as {}" msgstr "A fonte deve ser armazenada como {}" + +#, fuzzy +msgid "Encryption type" +msgstr "Senha de encriptação" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Selecione quais partições encriptar" + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} contém partições em fila, isto irá removê-las, tem certeza?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Senha de root" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Digite o setor de início (porcentagem ou número do bloco, padrão: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Digite o setor final da partição (porcentagem ou número de bloco, ex.: {}): " diff --git a/archinstall/locales/ru/LC_MESSAGES/base.mo b/archinstall/locales/ru/LC_MESSAGES/base.mo index 4b83657f..0fe08128 100644 Binary files a/archinstall/locales/ru/LC_MESSAGES/base.mo and b/archinstall/locales/ru/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/ru/LC_MESSAGES/base.po b/archinstall/locales/ru/LC_MESSAGES/base.po index bdb1c4b6..1a33881f 100644 --- a/archinstall/locales/ru/LC_MESSAGES/base.po +++ b/archinstall/locales/ru/LC_MESSAGES/base.po @@ -103,12 +103,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Введите начальный сектор (процент или номер блока, по умолчанию: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Введите конечный сектор раздела (процент или номер блока, например: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} содержит разделы в очереди, это удалит их, вы уверены?" @@ -844,6 +838,49 @@ msgstr "Чтобы иметь возможность использовать э msgid "The font should be stored as {}" msgstr "Шрифт должен быть сохранен как {}" +#, fuzzy +msgid "Encryption type" +msgstr "Пароль шифрования" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Выберите разделы для шифрования" + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} содержит разделы в очереди, это удалит их, вы уверены?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Пароль root" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Введите начальный сектор (процент или номер блока, по умолчанию: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Введите конечный сектор раздела (процент или номер блока, например: {}): " + #, python-brace-format #~ msgid "Edit {origkey} :" #~ msgstr "Редактировать {origkey}:" diff --git a/archinstall/locales/sv/LC_MESSAGES/base.mo b/archinstall/locales/sv/LC_MESSAGES/base.mo index f2798bd4..243f1d9f 100644 Binary files a/archinstall/locales/sv/LC_MESSAGES/base.mo and b/archinstall/locales/sv/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/sv/LC_MESSAGES/base.po b/archinstall/locales/sv/LC_MESSAGES/base.po index 8bc51650..61755a2c 100644 --- a/archinstall/locales/sv/LC_MESSAGES/base.po +++ b/archinstall/locales/sv/LC_MESSAGES/base.po @@ -103,12 +103,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Mata in startsektor (procent eller block-nummer, standard: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Mata in slutsektor för partitionen (procent eller block-nummer, ex: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} innehåller uppköade partitionen och detta kommer ta bort dessa. Är du säker?" @@ -843,5 +837,55 @@ msgstr "" msgid "TAB to select" msgstr "" -#~ msgid "Select disk layout" -#~ msgstr "Välj hårddisk-layout" +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +#, fuzzy +msgid "Encryption type" +msgstr "Välj ett krypterings-lösenord" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Välj vilken partition som skall markeras för kryptering" + +#, fuzzy +msgid "Select disk encryption option" +msgstr "Välj hårddisk-layout" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} innehåller uppköade partitionen och detta kommer ta bort dessa. Är du säker?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "root-lösenord" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Mata in startsektor (procent eller block-nummer, standard: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Mata in slutsektor för partitionen (procent eller block-nummer, ex: {}): " diff --git a/archinstall/locales/ta/LC_MESSAGES/base.mo b/archinstall/locales/ta/LC_MESSAGES/base.mo index 20b8a7f5..3f175509 100644 Binary files a/archinstall/locales/ta/LC_MESSAGES/base.mo and b/archinstall/locales/ta/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/ta/LC_MESSAGES/base.po b/archinstall/locales/ta/LC_MESSAGES/base.po index 763e9fc9..4f1d6762 100644 --- a/archinstall/locales/ta/LC_MESSAGES/base.po +++ b/archinstall/locales/ta/LC_MESSAGES/base.po @@ -102,12 +102,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "தொடக்கப் பிரிவை உள்ளிடவும் (சதவீதம் அல்லது தொகுதி எண், இயல்புநிலை: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "பகிர்வின் இறுதிப் பகுதியை உள்ளிடவும் (சதவீதம் அல்லது தொகுதி எண், எ.கா: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} வரிசைப்படுத்தப்பட்ட பகிர்வுகளைக் கொண்டுள்ளது, இது அவற்றை அகற்றும், நீங்கள் உறுதியாக இருக்கிறீர்களா?" @@ -833,3 +827,55 @@ msgstr "மீட்டமைக்க CTRL+C" msgid "TAB to select" msgstr "தேர்ந்தெடுக்க TAB" + +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +#, fuzzy +msgid "Encryption type" +msgstr "குறியாக்கம் கடவுச்சொல்" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "குறியாக்கம் செய்ய வேண்டிய பகிர்வுகளைத் தேர்ந்தெடுக்கவும்" + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} வரிசைப்படுத்தப்பட்ட பகிர்வுகளைக் கொண்டுள்ளது, இது அவற்றை அகற்றும், நீங்கள் உறுதியாக இருக்கிறீர்களா?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "ரூட் கடவுச்சொல்" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "தொடக்கப் பிரிவை உள்ளிடவும் (சதவீதம் அல்லது தொகுதி எண், இயல்புநிலை: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "பகிர்வின் இறுதிப் பகுதியை உள்ளிடவும் (சதவீதம் அல்லது தொகுதி எண், எ.கா: {}): " diff --git a/archinstall/locales/tr/LC_MESSAGES/base.mo b/archinstall/locales/tr/LC_MESSAGES/base.mo index 6a205da9..2e9d1258 100644 Binary files a/archinstall/locales/tr/LC_MESSAGES/base.mo and b/archinstall/locales/tr/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/tr/LC_MESSAGES/base.po b/archinstall/locales/tr/LC_MESSAGES/base.po index d31db52d..f17efd3f 100644 --- a/archinstall/locales/tr/LC_MESSAGES/base.po +++ b/archinstall/locales/tr/LC_MESSAGES/base.po @@ -103,12 +103,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Başlangıç kesimini girin (yüzde ya da blok numarası, varsayılan: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Disk bölümünün bitiş kesimini girin (yüzde ya da blok numarası, ör: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} işlem sırasında bekleyen disk bölümleri bulunduruyor, bu onları kaldıracak, emin misiniz?" @@ -842,3 +836,55 @@ msgstr "" msgid "TAB to select" msgstr "" + +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +#, fuzzy +msgid "Encryption type" +msgstr "Şifreleme şifresi" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "Hangi disk bölümünün şifrelenmiş olarak işaretleneceğini seçin" + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} işlem sırasında bekleyen disk bölümleri bulunduruyor, bu onları kaldıracak, emin misiniz?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Root (kök) şifresi" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Başlangıç kesimini girin (yüzde ya da blok numarası, varsayılan: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Disk bölümünün bitiş kesimini girin (yüzde ya da blok numarası, ör: {}): " diff --git a/archinstall/locales/uk/LC_MESSAGES/base.mo b/archinstall/locales/uk/LC_MESSAGES/base.mo index 1e0486a2..ae98dcfb 100644 Binary files a/archinstall/locales/uk/LC_MESSAGES/base.mo and b/archinstall/locales/uk/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/uk/LC_MESSAGES/base.po b/archinstall/locales/uk/LC_MESSAGES/base.po index 8216c4a7..ee9740fc 100644 --- a/archinstall/locales/uk/LC_MESSAGES/base.po +++ b/archinstall/locales/uk/LC_MESSAGES/base.po @@ -102,12 +102,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "Введіть початковий сектор (відсоток або номер блоку, за замовчуванням: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Введіть кінцевий сектор розділу (відсоток або номер блоку, наприклад: {}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} містить розділи в черзі, це видалить їх, ви впевнені?" @@ -861,9 +855,6 @@ msgstr "Оберіть параметр шифрування диска" msgid "Select a FIDO2 device to use for HSM" msgstr "Оберіть пристрій FIDO2 для використання для HSM" -msgid "Partition encryption" -msgstr "Шифрування розділу" - msgid "All settings will be reset, are you sure?" msgstr "Усі налаштування буде скинуто, ви впевнені?" @@ -875,3 +866,12 @@ msgstr "Disk encryption" msgid "Password" msgstr "Пароль" + +msgid "Partition encryption" +msgstr "Шифрування розділу" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "Введіть початковий сектор (відсоток або номер блоку, за замовчуванням: {}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "Введіть кінцевий сектор розділу (відсоток або номер блоку, наприклад: {}): " diff --git a/archinstall/locales/ur/LC_MESSAGES/base.mo b/archinstall/locales/ur/LC_MESSAGES/base.mo index 44e38ad4..e788d932 100644 Binary files a/archinstall/locales/ur/LC_MESSAGES/base.mo and b/archinstall/locales/ur/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/ur/LC_MESSAGES/base.po b/archinstall/locales/ur/LC_MESSAGES/base.po index fc8174da..4e3d7a10 100644 --- a/archinstall/locales/ur/LC_MESSAGES/base.po +++ b/archinstall/locales/ur/LC_MESSAGES/base.po @@ -102,12 +102,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "اسٹارٹ سیکٹر درج کریں (فیصد یا بلاک نمبر، ڈیفالٹ: {}):" - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "پارٹیشن کا آخری سیکٹر درج کریں (فیصد یا بلاک نمبر، مثال کے طور پر: {}):" - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} پارٹیشنزکے گروپ پر مشتمل ہے، یہ ان کو مٹا دے گا، کیا آپ پر اعتماد ہیں؟" @@ -864,8 +858,58 @@ msgstr "" msgid "TAB to select" msgstr "" -#~ msgid "Select disk layout" -#~ msgstr "ڈسک لے آؤٹ کو منتخب کریں" +msgid "[Default value: 0] > " +msgstr "" + +msgid "To be able to use this translation, please install a font manually that supports the language." +msgstr "" + +msgid "The font should be stored as {}" +msgstr "" + +#, fuzzy +msgid "Encryption type" +msgstr "انکرپشن پاس ورڈ سیٹ کریں" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "منتخب کریں کہ کس پارٹیشن کو انکرپٹڈ یا خفیہ رکھنا ہے" + +#, fuzzy +msgid "Select disk encryption option" +msgstr "ڈسک لے آؤٹ کو منتخب کریں" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} پارٹیشنزکے گروپ پر مشتمل ہے، یہ ان کو مٹا دے گا، کیا آپ پر اعتماد ہیں؟" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "روٹ پاس ورڈ" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "اسٹارٹ سیکٹر درج کریں (فیصد یا بلاک نمبر، ڈیفالٹ: {}):" + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "پارٹیشن کا آخری سیکٹر درج کریں (فیصد یا بلاک نمبر، مثال کے طور پر: {}):" #~ msgid "Add :" #~ msgstr "شامل:" diff --git a/archinstall/locales/zh-CN/LC_MESSAGES/base.mo b/archinstall/locales/zh-CN/LC_MESSAGES/base.mo index 70cb4064..693308ab 100644 Binary files a/archinstall/locales/zh-CN/LC_MESSAGES/base.mo and b/archinstall/locales/zh-CN/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/zh-CN/LC_MESSAGES/base.po b/archinstall/locales/zh-CN/LC_MESSAGES/base.po index 78e86f8e..d957204b 100644 --- a/archinstall/locales/zh-CN/LC_MESSAGES/base.po +++ b/archinstall/locales/zh-CN/LC_MESSAGES/base.po @@ -102,12 +102,6 @@ msgstr "" msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " msgstr "" -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "输入起始扇区(百分比或块号,默认:{}): " - -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "输入分区的结束扇区(百分比或块号,例如:{}): " - msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} 包含排队分区,这将删除这些分区,您确定吗?" @@ -767,7 +761,8 @@ msgstr "您输入的用户名无效。 再试一次" msgid "Should \"{}\" be a superuser (sudo)?" msgstr "将 \"{}\" 设置为超级用户(sudo)吗?" -msgid "Select which partitions to encrypt:" +#, fuzzy +msgid "Select which partitions to encrypt" msgstr "选择要加密的分区:" msgid "very weak" @@ -840,3 +835,46 @@ msgstr "为了能够使用此翻译,请手动安装支持该语言的字体。 msgid "The font should be stored as {}" msgstr "字体应存储为 {}" + +#, fuzzy +msgid "Encryption type" +msgstr "加密密码" + +msgid "Partitions" +msgstr "" + +msgid "No HSM devices available" +msgstr "" + +#, fuzzy +msgid "Partitions to be encrypted" +msgstr "选择要加密的分区:" + +msgid "Select disk encryption option" +msgstr "" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "" + +#, fuzzy +msgid "All settings will be reset, are you sure?" +msgstr "{} 包含排队分区,这将删除这些分区,您确定吗?" + +msgid "Back" +msgstr "" + +msgid "Disk encryption" +msgstr "" + +#, fuzzy +msgid "Password" +msgstr "Root 密码" + +msgid "Partition encryption" +msgstr "" + +#~ msgid "Enter the start sector (percentage or block number, default: {}): " +#~ msgstr "输入起始扇区(百分比或块号,默认:{}): " + +#~ msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +#~ msgstr "输入分区的结束扇区(百分比或块号,例如:{}): " -- cgit v1.2.3-70-g09d2 From c3e3ac67c61e9f7a6367249d77580553f864bdac Mon Sep 17 00:00:00 2001 From: laymoth Date: Thu, 30 Mar 2023 17:55:14 +0700 Subject: Update id translation (#1700) --- README.md | 2 +- archinstall/locales/id/LC_MESSAGES/base.mo | Bin 26054 -> 27433 bytes archinstall/locales/id/LC_MESSAGES/base.po | 42 +++++++++++++---------------- archinstall/locales/languages.json | 2 +- 4 files changed, 21 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 106f61fc..d83a8901 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ English Deutsch Español Français -Indonesia +Indonesian Italiano Nederlands Polskie diff --git a/archinstall/locales/id/LC_MESSAGES/base.mo b/archinstall/locales/id/LC_MESSAGES/base.mo index c2380c86..6e707237 100644 Binary files a/archinstall/locales/id/LC_MESSAGES/base.mo and b/archinstall/locales/id/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/id/LC_MESSAGES/base.po b/archinstall/locales/id/LC_MESSAGES/base.po index 63065ec3..6cc19cbf 100644 --- a/archinstall/locales/id/LC_MESSAGES/base.po +++ b/archinstall/locales/id/LC_MESSAGES/base.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.1\n" +"X-Generator: Poedit 3.2.2\n" msgid "[!] A log file has been created here: {} {}" msgstr "[!] File log telah dibuat di sini: {} {}" @@ -97,13 +97,13 @@ msgid "Enter a desired filesystem type for the partition" msgstr "Masukkan jenis filesystem yang diinginkan untuk partisi" msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "" +msgstr "Masukkan lokasi awal (dalam satuan parted: s, GB, %, dll. ; default: {}): " msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "" +msgstr "Masukkan lokasi akhir (dalam satuan parted: s, GB, %, dll. ; cth: {}): " msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} berisi partisi yang mengantri, ini akan menghapusnya, apakah Anda yakin?" +msgstr "{} berisi partisi yang telah di-queue, tindakan ini akan menghapusnya, apakah Anda yakin?" msgid "" "{}\n" @@ -561,7 +561,7 @@ msgstr "" "Isi nilai yang diinginkan untuk subvolume baru\n" msgid "Subvolume name " -msgstr " Nama subvolume" +msgstr "Nama subvolume " msgid "Subvolume mountpoint" msgstr "Titik mount subvolume" @@ -755,7 +755,7 @@ msgid "Either root-password or at least 1 user with sudo privileges must be spec msgstr "Baik kata sandi root atau setidaknya 1 pengguna dengan hak sudo harus ditentukan" msgid "Enter username (leave blank to skip): " -msgstr " Masukkan nama pengguna (kosongkan untuk melewati):" +msgstr "Masukkan nama pengguna (kosongkan untuk melewati): " msgid "The username you entered is invalid. Try again" msgstr "Nama pengguna yang Anda masukkan tidak valid. Coba lagi" @@ -832,47 +832,43 @@ msgid "[Default value: 0] > " msgstr "[Nilai default: 0] > " msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "" +msgstr "Untuk dapat menggunakan terjemahan ini, silakan instal font yang mendukung bahasa tersebut secara manual." msgid "The font should be stored as {}" -msgstr "" +msgstr "Font harus disimpan sebagai {}" -#, fuzzy msgid "Encryption type" -msgstr "Kata sandi enkripsi" +msgstr "Tipe enkripsi" msgid "Partitions" -msgstr "" +msgstr "Partisi" msgid "No HSM devices available" -msgstr "" +msgstr "Tidak ada perangkat HSM yang tersedia" -#, fuzzy msgid "Partitions to be encrypted" -msgstr "Pilih partisi mana yang akan dienkripsi" +msgstr "Partisi yang akan dienkripsi" msgid "Select disk encryption option" -msgstr "" +msgstr "Pilih opsi enkripsi disk" msgid "Select a FIDO2 device to use for HSM" -msgstr "" +msgstr "Pilih perangkat FID02 yang akan digunakan untuk HSM" -#, fuzzy msgid "All settings will be reset, are you sure?" -msgstr "{} berisi partisi yang mengantri, ini akan menghapusnya, apakah Anda yakin?" +msgstr "Semua pengaturan akan direset, apakah Anda yakin?" msgid "Back" -msgstr "" +msgstr "Kembali" msgid "Disk encryption" -msgstr "" +msgstr "Enkripsi disk" -#, fuzzy msgid "Password" -msgstr "Kata sandi root" +msgstr "Kata sandi" msgid "Partition encryption" -msgstr "" +msgstr "Enkripsi partisi" #~ msgid "Enter the start sector (percentage or block number, default: {}): " #~ msgstr "Masukkan sektor awal (persentase atau nomor blok, default: {}): " diff --git a/archinstall/locales/languages.json b/archinstall/locales/languages.json index 92efac49..1e33dcde 100644 --- a/archinstall/locales/languages.json +++ b/archinstall/locales/languages.json @@ -68,7 +68,7 @@ {"abbr": "iu", "lang": "Inuktitut"}, {"abbr": "ie", "lang": "Interlingue"}, {"abbr": "ia", "lang": "Interlingua (International Auxiliary Language Association)"}, - {"abbr": "id", "lang": "Indonesian", "translated_lang": "Indonesia"}, + {"abbr": "id", "lang": "Indonesian", "translated_lang": "Indonesian"}, {"abbr": "ik", "lang": "Inupiaq"}, {"abbr": "is", "lang": "Icelandic"}, {"abbr": "it", "lang": "Italian", "translated_lang": "Italiano"}, -- cgit v1.2.3-70-g09d2 From 315f87ce827ccbc2c190c54fb5a1fdc360f5d986 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Fri, 31 Mar 2023 11:05:52 +0200 Subject: Fixed a indentation in a table of docs (#1708) --- docs/installing/guided.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/installing/guided.rst b/docs/installing/guided.rst index 3c566958..4cb07ae1 100644 --- a/docs/installing/guided.rst +++ b/docs/installing/guided.rst @@ -115,9 +115,9 @@ Options for ``--config`` +----------------------+--------------------------------------------------------+---------------------------------------------------------------------------------------------+-----------------------------------------------+ | hostname | any | Hostname of machine after installation. Default will be ``archinstall`` | No | +----------------------+--------------------------------------------------------+---------------------------------------------------------------------------------------------+-----------------------------------------------+ -| kernels | [ "kernel1", "kernel2"] | List of kernels to install eg: linux, linux-lts, linux-zen etc | At least 1 | +| kernels | [ "kernel1", "kernel2"] | List of kernels to install eg: linux, linux-lts, linux-zen etc | At least 1 | +----------------------+--------------------------------------------------------+---------------------------------------------------------------------------------------------+-----------------------------------------------+ -| keyboard-layout | Any valid layout given by ``localectl list-keymaps`` | eg: ``us``, ``de`` or ``de-latin1`` etc. Defaults to ``us`` | No | +| keyboard-layout | Any valid layout given by ``localectl list-keymaps`` | eg: ``us``, ``de`` or ``de-latin1`` etc. Defaults to ``us`` | No | +----------------------+--------------------------------------------------------+---------------------------------------------------------------------------------------------+-----------------------------------------------+ | mirror-region | | {"": { "Mirror URL": True/False}, ..} | | Defaults to automatic selection. | No | | | | "Worldwide" or "Sweden" | | Either takes a dictionary structure of region and a given set of mirrors. | | -- cgit v1.2.3-70-g09d2 From 9efbe9e6e8e77eb1f08e5557ed9f2a6750af14ce Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Fri, 31 Mar 2023 11:13:59 +0200 Subject: Improved PKGBUILD and correctly identify __version__ without git (#1709) --- PKGBUILD | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/PKGBUILD b/PKGBUILD index c5fcd038..42fccfc3 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -10,28 +10,42 @@ pkgdesc="Just another guided/automated Arch Linux installer with a twist" arch=(any) url="https://github.com/archlinux/archinstall" license=(GPL3) -depends=(python systemd) -makedepends=(python-build python-installer python-setuptools python-sphinx python-wheel) -provides=(python-archinstall) +depends=( + 'python' + 'systemd' +) +makedepends=( + 'python-setuptools' + 'python-sphinx' + 'python-build' + 'python-installer' + 'python-wheel' +) +optdepends=( + 'python-systemd: Adds journald logging' +) +provides=(python-archinstall archinstall) conflicts=(python-archinstall archinstall-git) -replaces=(python-archinstall) +replaces=(python-archinstall archinstall-git) source=( $pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz $pkgname-$pkgver.tar.gz.sig::$url/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz.sig ) -sha512sums=('3bfdd2b33ef3a784bd6c847afce75b0d5c1997f8374db5f75adc6fe9e35ab135e7cdb2fdcef01999fcb6c03ed80159f02d3da560d28e8da8fe17043f4cdac108' +sha512sums=('64cb3593c5091b3885ad14ef073cfab31090b4f9bcb4405b18cf9b19adb5ca42255ba8891ec62e21f92d59872541ef6d94f186fb05c625822af63525441e08d9' 'SKIP') -b2sums=('87c3ad807e87d834d59210cb28d14c93acabe8996bcc7407866307f9cdddf4e233a35c96e99e02aebbbb95548bdfa125772fb4703bf0152227e4163cd621860a' +b2sums=('9c0ec0871841804377ba8310dc744711adcec4eed7319a8d89d684af8e7b822bb9d47540b00f4d746a9fcd7b9ea1b9e07bac773e6c28fabc760e4df38b16748b' 'SKIP') validpgpkeys=('256F73CEEFC6705C6BBAB20E5FBBB32941E3740A') # Anton Hvornum (Torxed) pkgver() { cd $pkgname-$pkgver - git describe --long --abbrev=7 | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' | grep -o -E '[0-9.]{5}' + + cat archinstall/__init__.py | grep '^__version__' | grep -o -E '[0-9.]{5}' } prepare() { cd $pkgname-$pkgver + # use real directories for examples and profiles, as symlinks do not work rm -fv $pkgname/{examples,profiles} mv -v examples profiles $pkgname/ @@ -39,12 +53,14 @@ prepare() { build() { cd $pkgname-$pkgver + python -m build --wheel --no-isolation PYTHONDONTWRITEBYTECODE=1 make man -C docs } package() { cd "$pkgname-$pkgver" + python -m installer --destdir="$pkgdir" dist/*.whl install -vDm 644 docs/_build/man/archinstall.1 -t "$pkgdir/usr/share/man/man1/" } -- cgit v1.2.3-70-g09d2 From 1c6b0bae73a02fb91b1670e8527ff2dfb6dc3071 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Fri, 31 Mar 2023 11:29:07 +0200 Subject: Replaced double-grep with awk (#1710) --- PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PKGBUILD b/PKGBUILD index 42fccfc3..08c2001b 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -39,8 +39,8 @@ validpgpkeys=('256F73CEEFC6705C6BBAB20E5FBBB32941E3740A') # Anton Hvornum (Torxe pkgver() { cd $pkgname-$pkgver - - cat archinstall/__init__.py | grep '^__version__' | grep -o -E '[0-9.]{5}' + + awk '$1 ~ /^__version__/ {gsub("\"", ""); print $3}' archinstall/__init__.py } prepare() { -- cgit v1.2.3-70-g09d2 From dc5291f781c8211b535e043fc865f72eb7b70a3f Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Fri, 31 Mar 2023 18:14:34 +0200 Subject: Removing legacy build files setup.py and setup.cfg (#1711) * Removing legacy build and dist files * Bumped requirement for setuptools to deal with dynamic license inclusion * Added dynamic versioning and licensing to pyproject.toml * Clarified the license according to the LICENSE file, GPL-3.0-only --- pyproject.toml | 22 ++++++++++++++++++---- setup.cfg | 43 ------------------------------------------- setup.py | 3 --- 3 files changed, 18 insertions(+), 50 deletions(-) delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/pyproject.toml b/pyproject.toml index 3572148e..6e0fcb99 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,14 +1,15 @@ [build-system] -requires = ["setuptools>=67"] +requires = ["setuptools>=67.5"] build-backend = "setuptools.build_meta" [project] name = "archinstall" -dynamic = ["version", "entry-points", "license"] +dynamic = ["version", "entry-points"] description = "Arch Linux installer - guided, templates etc." authors = [ {name = "Anton Hvornum", email = "anton@hvornum.se"}, ] +license = {text = "GPL-3.0-only"} readme = "README.md" requires-python = ">=3.10" @@ -26,11 +27,24 @@ Home = "https://archlinux.org" Documentation = "https://archinstall.readthedocs.io/" Source = "https://github.com/archlinux/archinstall" +[project.optional-dependencies] +doc = ["sphinx"] + [project.scripts] archinstall = "archinstall:run_as_a_module" -[project.optional-dependencies] -doc = ["sphinx"] +[tool.setuptools] +packages = ["archinstall", "profiles", "examples"] + +[tool.setuptools.package-data] +archinstall = [ + "examples/*.py", + "profiles/*.py", + "profiles/applications/*.py" +] + +[tool.setuptools.dynamic] +version = {attr = "archinstall.__version__"} [tool.mypy] python_version = "3.10" diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index fd73ff92..00000000 --- a/setup.cfg +++ /dev/null @@ -1,43 +0,0 @@ -[metadata] -name = archinstall -version = attr: archinstall.__version__ -description = Arch Linux installer - guided, templates etc. -author = Anton Hvornum -author_email = anton@hvornum.se -long_description = file: README.md -long_description_content_type = text/markdown -keywords = linux, arch, archinstall, installer -license = GPL -license_files = - LICENSE -project_urls = - Source = https://github.com/archlinux/archinstall - Documentation = https://archinstall.readthedocs.io/ -classifiers = - "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", - "Operating System :: POSIX :: Linux", - -[options] -packages = find: -python_requires = >= 3.10 -zip_safe = True -include_package_data = True - -[options.packages.find] -include = - archinstall - archinstall.* - -[options.package_data] -archinstall = - examples/*.py - profiles/*.py - profiles/applications/*.py - -[options.entry_points] -console_scripts = - archinstall = archinstall:run_as_a_module diff --git a/setup.py b/setup.py deleted file mode 100644 index 639e4434..00000000 --- a/setup.py +++ /dev/null @@ -1,3 +0,0 @@ -import setuptools # type: ignore - -setuptools.setup(package_data={'archinstall': ['locales/*','locales/*/*','locales/*/*/*']}, include_package_data=True) -- cgit v1.2.3-70-g09d2 From 7ad00d96e1f1104e3c321d69e4f6cd8625ef4dac Mon Sep 17 00:00:00 2001 From: bd-g <49082060+bd-g@users.noreply.github.com> Date: Sat, 1 Apr 2023 04:13:18 -0400 Subject: Make it easier to save configuration files (#1659) * updated save menu for configuration files * add log message to TUI to let user know we may run for a second finding save directories * remove testing line * remove unnecessary non-relative import * fix bug when skipping save location * make save configuration translatable * fix linting errors * handle skip and reset options correctly * fix flake8 linting error --------- Co-authored-by: Anton Hvornum --- archinstall/lib/user_interaction/save_conf.py | 92 ++++++++++++++++++++++----- 1 file changed, 75 insertions(+), 17 deletions(-) diff --git a/archinstall/lib/user_interaction/save_conf.py b/archinstall/lib/user_interaction/save_conf.py index d60ef995..5b4ae2b3 100644 --- a/archinstall/lib/user_interaction/save_conf.py +++ b/archinstall/lib/user_interaction/save_conf.py @@ -1,9 +1,12 @@ from __future__ import annotations +import logging + from pathlib import Path from typing import Any, Dict, TYPE_CHECKING from ..configuration import ConfigurationOutput +from ..general import SysCommand from ..menu import Menu from ..menu.menu import MenuSelectionType from ..output import log @@ -58,20 +61,75 @@ def save_config(config: Dict): if choice.type_ == MenuSelectionType.Skip: return - while True: - path = input(_('Enter a directory for the configuration(s) to be saved: ')).strip(' ') - dest_path = Path(path) - if dest_path.exists() and dest_path.is_dir(): - break - log(_('Not a valid directory: {}').format(dest_path), fg='red') - - if options['user_config'] == choice.value: - config_output.save_user_config(dest_path) - elif options['user_creds'] == choice.value: - config_output.save_user_creds(dest_path) - elif options['disk_layout'] == choice.value: - config_output.save_disk_layout(dest_path) - elif options['all'] == choice.value: - config_output.save_user_config(dest_path) - config_output.save_user_creds(dest_path) - config_output.save_disk_layout(dest_path) + dirs_to_exclude = [ + '/bin', + '/dev', + '/lib', + '/lib64', + '/lost+found', + '/opt', + '/proc', + '/run', + '/sbin', + '/srv', + '/sys', + '/usr', + '/var', + ] + log( + _('When picking a directory to save configuration files to,' + ' by default we will ignore the following folders: ') + ','.join(dirs_to_exclude), + level=logging.DEBUG + ) + + log(_('Finding possible directories to save configuration files ...'), level=logging.INFO) + + find_exclude = '-path ' + ' -prune -o -path '.join(dirs_to_exclude) + ' -prune ' + file_picker_command = f'find / {find_exclude} -o -type d -print0' + possible_save_dirs = list( + filter(None, SysCommand(file_picker_command).decode().split('\x00')) + ) + + selection = Menu( + _('Select directory (or directories) for saving configuration files'), + possible_save_dirs, + multi=True, + skip=True, + allow_reset=False, + ).run() + + match selection.type_: + case MenuSelectionType.Skip: + return + case _: + save_dirs = selection.value + + prompt = _('Do you want to save {} configuration file(s) in the following locations?\n\n{}').format( + list(options.keys())[list(options.values()).index(choice.value)], + save_dirs + ) + save_confirmation = Menu(prompt, Menu.yes_no(), default_option=Menu.yes()).run() + if save_confirmation == Menu.no(): + return + + log( + _('Saving {} configuration files to {}').format( + list(options.keys())[list(options.values()).index(choice.value)], + save_dirs + ), + level=logging.DEBUG + ) + + if save_dirs is not None: + for save_dir_str in save_dirs: + save_dir = Path(save_dir_str) + if options['user_config'] == choice.value: + config_output.save_user_config(save_dir) + elif options['user_creds'] == choice.value: + config_output.save_user_creds(save_dir) + elif options['disk_layout'] == choice.value: + config_output.save_disk_layout(save_dir) + elif options['all'] == choice.value: + config_output.save_user_config(save_dir) + config_output.save_user_creds(save_dir) + config_output.save_disk_layout(save_dir) -- cgit v1.2.3-70-g09d2 From 6e3c6f8863041b54f6d8cf7af37f9719c493eadd Mon Sep 17 00:00:00 2001 From: r0t0r-r0t0r Date: Sun, 2 Apr 2023 01:04:53 +0300 Subject: Fix i3 profile (#1714) --- profiles/i3.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profiles/i3.py b/profiles/i3.py index d3e6e6b0..d9b98b77 100644 --- a/profiles/i3.py +++ b/profiles/i3.py @@ -7,7 +7,7 @@ is_top_level_profile = False # New way of defining packages for a profile, which is iterable and can be used out side # of the profile to get a list of "what packages will be installed". __packages__ = [ - 'i3-wm' + 'i3-wm', 'i3lock', 'i3status', 'i3blocks', -- cgit v1.2.3-70-g09d2