Commit Graph

27 Commits

Author SHA1 Message Date
correctmost 0b0dc76558
Fix SysCallError import cycle between exceptions.py and general.py (#3242)
This commit updates SysCallError to accept a worker log argument
instead of an entire SysCommandWorker.
2025-03-11 21:25:25 +11:00
correctmost 0dc77f8e8a
Replace more Optional instances with union syntax in lib/ (#2841) 2024-11-17 11:01:57 +11:00
correctmost b96194d51a
Fix super-call-with-parameters (UP008) Ruff warning (#2832) 2024-11-16 20:54:46 +11:00
correctmost 62b4099c8d
Fix whitespace issues detected by flake8 (#2652)
This commit also removes exclusions that are no longer needed.
2024-08-29 01:40:53 +10:00
Anton Hvornum 98518e444a
Use `/mirrors/status/json/` instead of `/mirrorlist/` to get mirror lists (#2599)
* Using JSON endpoint instead of ASCII endpoint for mirror listing, as the JSON endpoint is cached and easier to parse

* Added a TODO to handle unknown regional mirrors (which lacks info in the backend)

* Filtered out 'bad' mirrors. Also added a sorting mechanism that uses the mirrors 'score' rather than just the URL name. This will emulate the reflector.service/rankmirrors behavior and thus reducing the need to re-rank the mirrors.

* Added the ability to sort mirrors via latency or download speed using sorted(mirror_list, key=lambda mirror: (mirror.score, mirror.speed)) - but I have not implemented the sorting via the menu yet, and I have not integrated the new MirrorStatus model into the handling of URL's. I still need to figure out where the {region: [url, url]} is being used, so that i can convert to {region: [mirror.url, mirror.url]} logic.

* Converting MirrorStatus model to {mirror: [url, url]}

* Added debug information for /var/log/archinstall/install.log

* Fixing flake8

* Fixed issue where 'dead' mirrors have no score, and thus can't be round():ed

* Forgot to return model validation data after validation

* Improving debug/info output

* Reverting change in #2350 - Writing over instead of appending to mirrorlist

* Mirror URL's reported by the JSON endpoint does not contain the repo format, only the base location for the mirror. So we have to adjust for this.

* pydantic did not honor 'private' variables in 'before' model validator, had to change to 'after' instead.

* Sorted out mypy typing matching the new MirrorStatus model

* Added pydantic as a dependency, it's time!

* Updated workflow to include pydantic

* Added return values from model @property decorators.
2024-08-02 15:24:44 +02:00
Daniel Girtler ce9828c293
Fixes for prev PR (#2175)
* Fixes for prev PR

* Update

---------

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
2023-10-18 16:57:44 +11:00
Daniel Girtler 89cefb9a1c
Cleanup imports and unused code (#1801)
* Cleanup imports and unused code

* Update build check

* Keep deprecation exception

* Simplify logging

---------

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
2023-05-11 18:30:09 +02:00
Anton Hvornum 0f5b91c7d7
Fixing issue where blkid causes SysCallException (#1445)
* Moving a partprobe() call to better allow for cache updates

* Trying to improve Partition()._fetch_information()

* Removed a sleep() for debugging purposes

* Tweaked a sleep
2022-08-30 22:59:23 +02:00
Anton Hvornum c93482a8b9
Rework btrfs handling (#1234)
* Restructuring btrfs.py into lib/btrfs/*.py

* Reworking how BTRFS subvolumes get represented, and worked with. Subvolumes are now their own entity which can be used to access it's information, parents or mount location.

* Added BtrfsSubvolume.partition and other stuff.

* Reworking the way luks2().unlock and .format() returns device instances. They should now return BTRFSSubvolume where appropriate.

* Fixed a missing import

* Fixed an issue where mkfs.btrfs wouldn't trigger due to busy disk.

* Fixing subvol mounting without creating a fake instance.

* Added creation of mountpint for btrfs subvolume

* Fixed root detection

* Re-worked mounting into a queue system using frozen mounting calls using lambda

* Removed old mount_subvolume() function

* Removed get_subvolumes_from_findmnt()

* Fixed Partition().subvolumes iteration

* Adding .root to BtrfsSubvolume

* Fixed issue in SysCommandWorker where log output would break and crash execution due to cmd being a string vs list

* Changed return-value from MapperDev.mountpoint to pathlib.Path
2022-05-26 18:46:10 +02:00
Anton Hvornum 49a93480a8
Added better error output (based on #963) 2022-02-11 20:26:33 +01:00
Anton Hvornum c08520f990
SysCommand() to remove ANSII VT100 Esc codes & archlinux-keyring fix (#933)
* Fixed SysCommandWorker() so that it removes ANSII VT100 escape codes. I also moved package.py into it's own folder, as that's something I want to expand on a lot, so package related stuff should go in there. I created a installed_package() function which gets information about the locally installed package. I changed so that find_packages() and find_package() returns a data-model instead for the package information. This should unify and make sure we detect issues down the line.

* Working on structuring .version constructor that works with BaseModel

* Added version contructors to VersionDef(). Also added __eq__ and __lt__ to LocalPackage() and PackageSearchResult().

* removed debug and added a TODO

* Removed whitespace

* Removed mirror-database function from myrepo
2022-02-02 14:22:52 +01:00
Anton Hvornum e32cf71ae7
Added type annotations to all functions (#845)
* Added type annotations for 1/5 of the files.

There's bound to be some issues with type miss-match, will sort that out later.

* Added type hints for 4/5 of the code

* Added type hints for 4.7/5 of the code

* Added type hints for 5/5 of the code base

* Split the linters into individual files

This should help with more clearly show which runner is breaking since they don't share a single common name any longer. Also moved mypy settings into pyproject.toml

* Fixed some of the last flake8 issues

* Missing parameter

* Fixed invalid lookahead types

* __future__ had to be at the top

* Fixed last flake8 issues
2022-01-06 22:01:15 +01:00
Anton Hvornum ddb0810af0
Improve documentation v2.3.1 (#843)
* Updated documentation

Mostly I've moved things around, cleaned up some dead paths and added more clarity.

* Cleaned up !superusers section

* Mentioning of accessibility
2022-01-05 23:42:06 +01:00
Anton Hvornum b1b820f4cb
Fixing some mypy complaints (#780)
* Fixed some mypy issues regarding SysCommand* and logging
* Fixed imports and undefined variable
2021-12-02 21:20:31 +01:00
Dylan M. Taylor c14ee42bff
Remove PermissionError since it shadows the built-in of the same name 2021-05-18 08:27:59 -04:00
Dylan Taylor 69d675f4aa Many more manual changes 2021-05-15 12:29:57 -04:00
Zach Osman 0888ca592a allow multiple services to be enabled at once 2021-04-05 13:10:35 -04:00
Anton Hvornum 2ef7be9787
Wrong variable name. 2021-03-14 12:17:30 +01:00
Anton Hvornum f589750a3c
Tweaked SysCallError() exception to include the exit code in a machine readable manner. Since it's useful as an indicator where calls might go wrong and for what reason. 2021-03-14 12:16:46 +01:00
Anton Hvornum 572d59e560 Cleaning up guided.py a bit to be less complex and convoluted, while still performing the same task. 2021-02-17 13:30:14 +01:00
Anton Hvornum e2cd617d05
Reworked the way partition formatting works. As well as added some flags to the partition if it's locked/unlocked for partitioning. By defaults partitions will now be in a locked state - prohibiting formatting unless set or overridden in the formatting call. This allows us to selectively format partitions individually later on. There's also a target_mountpoint that is the desired relative mount point inside a installation. This can be pre-pended with the installation base directory during mount. These changes also function as indicators for the installation (and guided installation) for which partitions to use and/or wipe. If an entire drive is selected for wiping, these changes will have no affect in the decision making as all partitions will be new and have formatable set to true. 2021-02-11 14:11:21 +01:00
Anton Hvornum a5a6ff4d31 Added an early check for filesystem compatability. Since we need to handle unique packages etc for certain filesystem formats. This early check can be caught and ignored if the programmer/user wants to override the check and continue anyway. But the default should be to stop all execution to not install a half-working system. 2021-02-07 15:25:34 +01:00
Anton Hvornum 3a16d156b9 Added an embryo for listing wireless networks. 2021-01-25 12:38:11 +01:00
Anton Hvornum 5ad6ea26c8 Tweaked #58 slightly. Execution is done with an attempt to retain file line numbers when executing. It also consolidates behavior of files and remote documents in a 'similar' manner. 2020-11-08 22:57:53 +00:00
Anton Hvornum 3b3456b6f9 Added a raise on sys_command exit code being bad. Also updated readme to show how to test this locally 2020-07-07 22:24:56 +00:00
Anton Hvornum f7d3022cc8 Reworked final preparations for working with profiles and installing them. 2020-07-06 22:20:34 +02:00
Anton Hvornum b4a6f03b96 Converted the lib to a pip supported structure to make packaging easier. Also tweaked some minor issues and added the AUR function 2020-07-06 18:44:42 +02:00