Skip to content

Releases: archlinux/archinstall

v2.0.6

06 Dec 16:28
Compare
Choose a tag to compare

Bug fixes

  • #62 is now fixed. There might be some edge cases left with it (especially absolute paths etc). But the overall idea was to slim down Profile() and Application() to not use Imported(), since it caused additional (separated) logic to handle profiles and paths.
  • In junction with the above, list_profiles() now supports remote profiles as well. With the limitation that there needs to be a "package" database over profiles. Parsing HTML pages for files isn't what we're here for. But this enables smoother finding of profiles in general. The drawback currently is that guided will show up.
  • list_profiles() now cache found result to avoid being noisy against HTTP endpoints (as well as being able to manipulate it in __main__.py pre and post listing profiles)
  • MAC addresses are now lowered before comparing on both profile level as well as listed MAC addresses.
  • find_installation_script() has been merged into Script() for a more unified experience.
  • archinstall.output.log() now checks if logfile is defined, otherwise no output is attempted to any log handles.
  • Fixed #63 - Issues installing package groups
  • Numerous edge cases in examples/guided.py where some default options caused KeyError at certain points if left empty.
  • Empty locale (very first question) caused a hang because loadkeys will enter some form of interactive mode if no option is given.
  • Tweaked the module mode by centralizing the "find" logic.
  • Replaced exec() logic with the importlib logic again to preserve line numbers in subsequent files.
  • Created a Script class that takes care of some of the import/execution logic, it takes content and not filenames.
  • Fixed a bunch of issues in examples/guided.py that caused issues, namely #61 where lists were given where strings were supposed to be etc.
  • Issue/Help documentation has been updated to contain the latest changes in terms of logs and submitting issues.
  • #43 / #55 - Added a configuration overview before formatting (the formatting can be paused with Ctrl-C to paus and view the config)
  • #57 - Fix minor issues like typos and code style violations.
  • #59 - Relative paths causing issues, should be fixed with a os.chdir() in module mode.
  • Added some more doc-strings
  • Added error handling for invalid packages in examples/guided.py. Re-asks the user for correct packages rather than crashing half way through the installation
  • Added a JSON serializer that can handle some of archinstalls objects.

New features

  • Added network configuration option via Installer().configure_nic() which helps to set up a interface inside a installation. (in the long run, perhaps add a similar thing to the live medium?)
    • Supports DHCP and static IP configurations (limited, but there are two options at least)
    • TODO: Show current IP-address to make it easier to evaluate which interface to configure
  • find_examples() have been merged in/replaced by list_profiles() which handles multiple use cases and being a bit more flexible.
  • list_profiles() now looks for profiles in archinstall.storage['PROFILE_PATH'], archinstall.storage['UPSTREAM_URL']/archinstall.storage['PROFILE_DB'] for profiles. Which enables dynamic lookups some what.
  • Script.localize_path() now converts remote paths into a temporary file under /tmp/ (We gotta keep an eye out here so /tmp/ isn't to small or locked in size or something).
  • Added a MAC -> iface lookup as well, even tho that wasn't hard previously, having a function call is more easily readable.
  • Added a Systemd and Networkd handlers (based on Ini() class), which is a basic helper to create INI files for Systemd services and network configurations.
  • Logging has been improved, and installation log files are now created under ~/.cache/archinstall. This is also where individual worker-logs are stored in case more detailed information needs to be gathered for support cases. Logs contain a "snapshot" of the configuration chosen as well as the individual outputs by the client (this will be improved over time, but should serve as a good starting point).
  • Modified the Arch Linux package archinstall so that python -m archinstall $@ is being called instead of hardcoding it to python -m archinstall guided.
  • Calling archinstall with argument <profile> which can be a remote URL or a full path (not strictly hardcoded to look in ./examples) is now supported.
  • Added archinstall.validate_package_list() to validate a list of package names. This will help early-checks for finding any issue with the given package names from a user. So that we can throw errors early on, and not half way into the installation when the user most likely has stopped watching for output.
  • Added profiles/desktop.py which acts as a desktop-selector, so users can slightly more easily find and install a desktop environment. Currently there's only three supported desktop environments: [gnome', 'kde', 'awesome'].
  • Added a archinstall.storage for session storage. Profiles etc can store things in here, which will persist between executions (since profiles have a pre-installation import and execution, and a during-installation import and execution to help with asking users questions. But in between, the session is lost on purpose).

v2.0.6rc17

11 Nov 21:53
Compare
Choose a tag to compare
v2.0.6rc17 Pre-release
Pre-release

Bug fixes

  • Fixed #63 - Issues installing package groups
  • Numerous edge cases in examples/guided.py where some default options caused KeyError at certain points if left empty.
  • Empty locale (very first question) caused a hang because loadkeys will enter some form of interactive mode if no option is given.

New features

  • Added a Systemd and Networkd handlers (based on Ini() class), which is a basic helper to create INI files for Systemd services and network configurations.
  • Added Installer().configure_nic() which helps to set up a interface inside a installation. (in the long run, perhaps add a similar thing to the live medium?)
    • Supports DHCP and static IP configurations (limited, but there are two options at least)
    • TODO: Show current IP-address to make it easier to evaluate which interface to configure

v2.0.6rc3

08 Nov 10:00
16c98e8
Compare
Choose a tag to compare
v2.0.6rc3 Pre-release
Pre-release

Description

Final release candidate before release.

All features for this releaser have now been included in individual RC steps.

New features

  • Logging has been improved, and installation log files are now created under ~/.cache/archinstall. This is also where individual worker-logs are stored in case more detailed information needs to be gathered for support cases. Logs contain a "snapshot" of the configuration chosen as well as the individual outputs by the client (this will be improved over time, but should serve as a good starting point).

Minor fixes

  • Issue/Help documentation has been updated to contain the latest changes in terms of logs and submitting issues.

v2.0.6rc16

08 Nov 22:37
Compare
Choose a tag to compare
v2.0.6rc16 Pre-release
Pre-release

Minor fixes

  • Tweaked the module mode by centralizing the "find" logic.
  • Replaced exec() logic with the importlib logic again to preserve line numbers in subsequent files.
  • Created a Script class that takes care of some of the import/execution logic, it takes content and not filenames.
  • Fixed a bunch of issues in examples/guided.py that caused issues, namely #61 where lists were given where strings were supposed to be etc.

v2.0.6rc2

07 Nov 09:30
e64cd07
Compare
Choose a tag to compare
v2.0.6rc2 Pre-release
Pre-release

New features

  • Modified the Arch Linux package archinstall so that python -m archinstall $@ is being called instead of hardcoding it to python -m archinstall guided.
  • Calling archinstall with argument <profile> which can be a remote URL or a full path (not strictly hardcoded to look in ./examples) is now supported.

v2.0.6rc1

01 Nov 23:16
57eef46
Compare
Choose a tag to compare
v2.0.6rc1 Pre-release
Pre-release

Placeholder release!

Bug fixes

#43 / #55 - Added a configuration overview before formatting (the formatting can be paused with Ctrl-C to paus and view the config)
#57 - Fix minor issues like typos and code style violations.
#59 - Relative paths causing issues, should be fixed with a os.chdir() in module mode.

New features

  • Added archinstall.validate_package_list() to validate a list of package names. This will help early-checks for finding any issue with the given package names from a user. So that we can throw errors early on, and not half way into the installation when the user most likely has stopped watching for output.
  • Added profiles/desktop.py which acts as a desktop-selector, so users can slightly more easily find and install a desktop environment. Currently there's only three supported desktop environments: [gnome', 'kde', 'awesome'].
  • Added a archinstall.storage for session storage. Profiles etc can store things in here, which will persist between executions (since profiles have a pre-installation import and execution, and a during-installation import and execution to help with asking users questions. But in between, the session is lost on purpose).

Minor fixes

  • Added some more doc-strings
  • Added error handling for invalid packages in examples/guided.py. Re-asks the user for correct packages rather than crashing half way through the installation
  • Added a JSON serializer that can handle some of archinstalls objects.

v2.0.5

01 Oct 09:11
Compare
Choose a tag to compare

New features

  • Added archinstall.list_mirrors() to list available mirrors upstream
  • Added archinstall.Installer().set_mirrors() to set mirrors in the installation
  • Added archinstall.service_state() which checks a .service state on the live-medium.
  • Added archinstall.find_package() which can locate one package upstream in the official package database.
  • Added archinstall.find_packages() which can locate many packages, but are a bit slow due to there not being a batch-search in the upstream API, individual packages have to be queried and built into a result structure locally.
  • Profiles now have the option to support a magic function called _prep_function() which gets called when a profile is loaded (but not executed). If this function exists, it needs to be accompanied by a if __name__ == "moduleName" in order to not execute whatever is in the script. This is optional, and simply helps with the early-user-question steps. (A way to ask users questions before installer actually runs)
  • Removed AUR support from this library. It might cause issues and headache upstream, so that functionality will have to become optional in a addon-package/library (most likely called python-archinstall-aur or something similar).

Profile changes

  • Guided example now waits for reflector.service to run it's course before continuing. As it will break any mirror changes done by the guided (or other) templates.
  • Guided now shows archinstall.list_profiles() when asking the user if a profile should be installed.
  • xorg profile/application is now split out and separated from awesome profile to better work with other desktop environments.
  • xorg now attempts to assist with driver-selection (this might get split into it's own profile later)
  • awesome is now less intrusive and depends on xorg.
  • gnome has been added and auto-starts on boot (minimal version comes later)
  • kde has been added with auto-launch on login (minimal version comes later)

Minor fixes

  • Fixed a lot of documentation and autodoc stuff. Docstrings needs to be added, but the base structure is there now.

Known issues

  • This release did not have the latest fix for the PKGBUILD of archinstall, which is the helper scripts to create archinstall-guided which launches the guided template. It's just helper scripts, so the fix will come in the next release. Until then, creating /usr/bin/archinstall-guided manually is required (or executed with python -m archinstall guided).

v2.0.4

01 Sep 08:50
Compare
Choose a tag to compare

screenshot

New features

  • Added locale helpers in terms of keyboard language/layout.
    • archinstall.list_keyboard_languages()
    • archinstall.search_keyboard_layout()
    • archinstall.set_keyboard_language()

These functions work together to help listing, finding and setting a keyboard layout in terminals. Won't work for X-frontends, but will do for CLI installation methods. Added a language selector-helper-function (archinstall.select_language()) with a crude search functionality.

Added all this to the guided template.

  • Added network helpers in archinstall.lib.networking. Mainly adding helpers to detect physical interfaces and MAC-addresses.
  • Added a unattended example profile
  • Support for listing (and filtering) profiles based on MAC-address was added, the filter_irrelevant_macs will filter any MAC address profile that doesn't match the current machine.
  • archinstall.Installer() now has post-installation checks on __exit__, so when Install() is used in a context manager (with archinstall.Installer() as installation), whenever the coder exits that block, the post-installation-steps will run and inform (but not raise) about any missing steps that haven't been completed in order to successfully boot the machine (checks if the base OS is installed, if root or a super user is created/setup and if a bootloader is installed).
  • Fixed the guided template to check if root_pw is set, if it isn't, it will require an additional sudo-user to be created.
  • Added reboot() as a function (This is more of a fix, it used to exist but has been re-added)
  • Added list_profiles() which lists all current local profiles.
  • Profiles now support descriptions by reading the top most comment in the .py files.
  • Added enable_service() to enable services within the installation
  • Added a helper function called activate_ntp() that simply enables the ntp.service and installs the ntp package.
  • Added add_custom_mirrors(). The function appends custom mirrors to /etc/pacman.conf based on the syntax:
    {'url': 'http://url.com', 'signcheck': 'Optional', 'signoptions': 'TrustAll', 'name': 'testmirror'}
  • Added add_custom_mirrors(). The function appends custom mirrors to /etc/pacman.conf based on the syntax:
    {'url': 'http://url.com', 'signcheck': 'Optional', 'signoptions': 'TrustAll', 'name': 'testmirror'}
  • Application() profiles now support .py scripts as well
  • Application() and Profile() classes now correctly inserts that archinstall library path into sys.path from where it was installed. This has to be done in order to sub-executed scripts to get the correct version of archinstall when doing import archinstall in profiles and applications. Otherwise the installed/other libraries might take precedence over git clone'd repositories/submodules in projects (very noticeable in archinstall_gui for instance)
  • Added the add_AUR_support() function to enable AUR packages in the mountpoint (by compiling yay and installing it)
  • Added a yay() (and add_AUR_packages() pointer to yay()) command for installing AUR packages inside the mountpoint
  • Added enable_AUR() function to
  • Added run_command which will run commands inside the installation via arch-chroot {mountpoint}
  • Added arch_chroot which just points to run_command().
  • Added a set_timezone()
  • Fixed set_locale() in the Installer() class.
  • Also added a mirrors.py helper to rudimentary set mirror data on the installer host
  • awesome now has a .py profile instead of a .json, even tho the .json is still there.
  • Pre built ISO's are up again
  • Examples are now packaged in both pypi and pre-built nuitka3 binary
  • Added a PKGBUILD
  • archinstall.BlockDevice now contains a __dump__ meta function, which can be used with:
    def json_serial(obj):
    	elif type(obj) is bytes:
    		return obj.decode('UTF-8')
    	elif getattr(obj, "__dump__", None):
    		return obj.__dump__()
    	else:
    		return str(obj)
    
    json.dumps(block_device, default=json_serial)
  • Added a __init__.py into the main github repo structure, so that cloned repo's can use from archinstall import * for instance.

Minor Fixes

  • The unattended test-profile reports upstream to inform which commit was installed without user interaction.
  • Made btrfs-progs optional, won't be installed unless btrfs is detected as a filesystem.
  • Tweaked the build scripts a bit to fetch a common VERSION definition.
  • Removed .json support, as it's quite convoluted and redundant now that we have proper support for .py profiles and applications.
  • PKGBUILD now exists for both python-archinstall (pip install archinstall equivilant) and archinstall (binary compiled version, no need for python to be installed)
  • set_locale() now correctly takes the given locale and encoding and hopefully sets locale and encoding separately.
  • add_additional_packages() now gives a return value from pacstrap which it didn't before.
  • install_profile() now gives a return value from profile.install() which it previously didn't.
  • Profile() and Application() now skips looking for the profile/application if absolute paths are given (hopefully that logic works)
  • Added a __repr__ for Application() so it doesn't look like it's a Profile() being installed when printing the object.
  • Fixed desktop.py which was broken due to string formatting being a bit off.

v2.0.4rc8

01 Sep 07:05
Compare
Choose a tag to compare
v2.0.4rc8 Pre-release
Pre-release

New features

  • Added locale helpers in terms of keyboard language/layout.
    • archinstall.list_keyboard_languages()
    • archinstall.search_keyboard_layout()
    • archinstall.set_keyboard_language()

These functions work together to help listing, finding and setting a keyboard layout in terminals. Won't work for X-frontends, but will do for CLI installation methods. Added a language selector-helper-function (archinstall.select_language()) with a crude search functionality.

Added all this to the guided template.

v2.0.4rc7

31 Aug 20:01
Compare
Choose a tag to compare
v2.0.4rc7 Pre-release
Pre-release

New features

  • Added network helpers in archinstall.lib.networking. Mainly adding helpers to detect physical interfaces and MAC-addresses.
  • Added a unattended example profile
  • Support for listing (and filtering) profiles based on MAC-address was added, the filter_irrelevant_macs will filter any MAC address profile that doesn't match the current machine.
  • archinstall.Installer() now has post-installation checks on __exit__, so when Install() is used in a context manager (with archinstall.Installer() as installation), whenever the coder exits that block, the post-installation-steps will run and inform (but not raise) about any missing steps that haven't been completed in order to successfully boot the machine (checks if the base OS is installed, if root or a super user is created/setup and if a bootloader is installed).
  • Fixed the guided template to check if root_pw is set, if it isn't, it will require an additional sudo-user to be created.

Minor Fixes

  • The unattended test-profile reports upstream to inform which commit was installed without user interaction.
  • Made btrfs-progs optional, won't be installed unless btrfs is detected as a filesystem.

Demo: https://youtu.be/9Xt7X_Iqg6E