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).