Releases: archlinux/archinstall
v2.0.6
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()
andApplication()
to not useImported()
, 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 thatguided
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 intoScript()
for a more unified experience.archinstall.output.log()
now checks iflogfile
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 theimportlib
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 bylist_profiles()
which handles multiple use cases and being a bit more flexible.list_profiles()
now looks for profiles inarchinstall.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
andNetworkd
handlers (based onIni()
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 thatpython -m archinstall $@
is being called instead of hardcoding it topython -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
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
andNetworkd
handlers (based onIni()
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
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
Minor fixes
- Tweaked the module mode by centralizing the "find" logic.
- Replaced
exec()
logic with theimportlib
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
New features
- Modified the Arch Linux package
archinstall
so thatpython -m archinstall $@
is being called instead of hardcoding it topython -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
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
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 aif __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 fromawesome
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 onxorg
.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
ofarchinstall
, which is the helper scripts to createarchinstall-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 withpython -m archinstall guided
).
v2.0.4
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 whenInstall()
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 ifroot_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 thentp.service
and installs thentp
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 wellApplication()
andProfile()
classes now correctly inserts thatarchinstall
library path intosys.path
from where it was installed. This has to be done in order to sub-executed scripts to get the correct version ofarchinstall
when doingimport archinstall
in profiles and applications. Otherwise the installed/other libraries might take precedence overgit 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 compilingyay
and installing it) - Added a
yay()
(andadd_AUR_packages()
pointer toyay()
) command for installing AUR packages inside the mountpoint - Added
enable_AUR()
function to - Added
run_command
which will run commands inside the installation viaarch-chroot {mountpoint}
- Added
arch_chroot
which just points torun_command()
. - Added a
set_timezone()
- Fixed
set_locale()
in theInstaller()
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 usefrom 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 unlessbtrfs
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 bothpython-archinstall
(pip install archinstall
equivilant) andarchinstall
(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 frompacstrap
which it didn't before.install_profile()
now gives a return value fromprofile.install()
which it previously didn't.Profile()
andApplication()
now skips looking for the profile/application if absolute paths are given (hopefully that logic works)- Added a
__repr__
forApplication()
so it doesn't look like it's aProfile()
being installed when printing the object. - Fixed
desktop.py
which was broken due to string formatting being a bit off.
v2.0.4rc8
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
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 whenInstall()
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 ifroot_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 unlessbtrfs
is detected as a filesystem.