Add constant for /etc/pacman.conf (#4375)

This commit is contained in:
codefiles 2026-04-05 17:18:22 -04:00 committed by GitHub
parent 41858db832
commit 56bec01979
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 28 additions and 11 deletions

View File

@ -1,9 +1,9 @@
from enum import Enum
from pathlib import Path
from archinstall.lib.locale.utils import list_timezones
from archinstall.lib.menu.helpers import Confirmation, Input, Selection
from archinstall.lib.output import warn
from archinstall.lib.pathnames import PACMAN_CONF
from archinstall.lib.translationhandler import Language, tr
from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.ui.result import ResultType
@ -162,11 +162,10 @@ async def add_number_of_parallel_downloads(preset: int = 1) -> int | None:
case ResultType.Selection:
downloads = int(result.get_value())
pacman_conf_path = Path('/etc/pacman.conf')
with pacman_conf_path.open() as f: # noqa: ASYNC230
with PACMAN_CONF.open() as f:
pacman_conf = f.read().split('\n')
with pacman_conf_path.open('w') as fwrite: # noqa: ASYNC230
with PACMAN_CONF.open('w') as fwrite:
for line in pacman_conf:
if 'ParallelDownloads' in line:
fwrite.write(f'ParallelDownloads = {downloads}\n')

View File

@ -55,6 +55,7 @@ from archinstall.lib.output import debug, error, info, log, logger, warn
from archinstall.lib.packages.packages import installed_package
from archinstall.lib.pacman.config import PacmanConfig
from archinstall.lib.pacman.pacman import Pacman
from archinstall.lib.pathnames import PACMAN_CONF
from archinstall.lib.plugins import plugins
from archinstall.lib.translationhandler import tr
@ -570,7 +571,7 @@ class Installer:
root = self.target if on_target else Path('/')
mirrorlist_config = root / 'etc/pacman.d/mirrorlist'
pacman_config = root / 'etc/pacman.conf'
pacman_config = root / PACMAN_CONF.relative_to_root()
repositories_config = mirror_config.repositories_config()
if repositories_config:

View File

@ -0,0 +1,11 @@
from pathlib import Path
from typing import Self
class LPath(Path):
@classmethod
def fs_root(cls) -> Self:
return cls('/')
def relative_to_root(self) -> Self:
return self.relative_to(self.fs_root())

View File

@ -3,15 +3,15 @@ from pathlib import Path
from shutil import copy2
from archinstall.lib.models.packages import Repository
from archinstall.lib.pathnames import PACMAN_CONF
class PacmanConfig:
def __init__(self, target: Path | None):
self._config_path = Path('/etc') / 'pacman.conf'
self._config_remote_path: Path | None = None
if target:
self._config_remote_path = target / 'etc' / 'pacman.conf'
self._config_remote_path = target / PACMAN_CONF.relative_to_root()
self._repositories: list[Repository] = []
@ -32,7 +32,7 @@ class PacmanConfig:
else:
repos_to_enable.append(repo.value)
content = self._config_path.read_text().splitlines(keepends=True)
content = PACMAN_CONF.read_text().splitlines(keepends=True)
for row, line in enumerate(content):
# Check if this is a commented repository section that needs to be enabled
@ -47,9 +47,9 @@ class PacmanConfig:
content[row + 1] = re.sub(r'^#\s*', '', content[row + 1])
# Write the modified content back to the file
with open(self._config_path, 'w') as f:
with PACMAN_CONF.open('w') as f:
f.writelines(content)
def persist(self) -> None:
if self._repositories and self._config_remote_path:
copy2(self._config_path, self._config_remote_path)
copy2(PACMAN_CONF, self._config_remote_path)

View File

@ -6,6 +6,7 @@ from pathlib import Path
from archinstall.lib.command import SysCommand
from archinstall.lib.exceptions import RequirementError
from archinstall.lib.output import error, info, warn
from archinstall.lib.pathnames import PACMAN_CONF
from archinstall.lib.plugins import plugins
from archinstall.lib.translationhandler import tr
@ -77,6 +78,6 @@ class Pacman:
'Could not strap in packages',
'Pacstrap failed. See /var/log/archinstall/install.log or above message for error details',
SysCommand,
f'pacstrap -C /etc/pacman.conf -K {self.target} {" ".join(packages)} --noconfirm --needed',
f'pacstrap -C {PACMAN_CONF} -K {self.target} {" ".join(packages)} --noconfirm --needed',
peek_output=True,
)

View File

@ -0,0 +1,5 @@
from typing import Final
from archinstall.lib.linux_path import LPath
PACMAN_CONF: Final = LPath('/etc/pacman.conf')