Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/mirrors.py
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2022-09-30 17:25:43 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2022-09-30 17:25:43 +0200
commit6408c9dce00aa70ad3c6614d2d793dba9a99aff6 (patch)
treebff1889dfebde0c74e30e9de427a2c122513684b /archinstall/lib/mirrors.py
parentfaf925de1882be722d2994d697a802918282e509 (diff)
parent53a2797af6ac0832bf7dd00dfe96b8ea1867db2e (diff)
merged from upstream for ISO 2022-10
Diffstat (limited to 'archinstall/lib/mirrors.py')
-rw-r--r--archinstall/lib/mirrors.py27
1 files changed, 20 insertions, 7 deletions
diff --git a/archinstall/lib/mirrors.py b/archinstall/lib/mirrors.py
index e4917f5e..f78a8b18 100644
--- a/archinstall/lib/mirrors.py
+++ b/archinstall/lib/mirrors.py
@@ -1,10 +1,12 @@
import logging
+import pathlib
import urllib.error
import urllib.request
from typing import Union, Mapping, Iterable, Dict, Any, List
from .general import SysCommand
from .output import log
+from .storage import storage
def sort_mirrorlist(raw_data :bytes, sort_order=["https", "http"]) -> bytes:
"""
@@ -144,16 +146,22 @@ def re_rank_mirrors(
def list_mirrors(sort_order :List[str] = ["https", "http"]) -> Dict[str, Any]:
- url = "https://archlinux32.org/mirrorlist/?protocol=https&protocol=http&ip_version=4&ip_version=6&use_mirror_status=on"
regions = {}
- try:
- response = urllib.request.urlopen(url)
- except urllib.error.URLError as err:
- log(f'Could not fetch an active mirror-list: {err}', level=logging.WARNING, fg="orange")
- return regions
+ if storage['arguments']['offline']:
+ with pathlib.Path('/etc/pacman.d/mirrorlist').open('rb') as fh:
+ mirrorlist = fh.read()
+ else:
+ url = "https://archlinux32.org/mirrorlist/?protocol=https&protocol=http&ip_version=4&ip_version=6&use_mirror_status=on"
+
+ try:
+ response = urllib.request.urlopen(url)
+ except urllib.error.URLError as err:
+ log(f'Could not fetch an active mirror-list: {err}', level=logging.WARNING, fg="orange")
+ return regions
+
+ mirrorlist = response.read()
- mirrorlist = response.read()
if sort_order:
mirrorlist = sort_mirrorlist(mirrorlist, sort_order=sort_order)
@@ -170,5 +178,10 @@ def list_mirrors(sort_order :List[str] = ["https", "http"]) -> Dict[str, Any]:
url = line.lstrip('#Server = ')
regions[region][url] = True
+ elif line.startswith('Server = '):
+ regions.setdefault(region, {})
+
+ url = line.lstrip('Server = ')
+ regions[region][url] = True
return regions