Fix enabling of testing repositories (#2340)
This commit is contained in:
parent
b39e3dc886
commit
9b1fd2e44f
|
|
@ -661,8 +661,6 @@ class Installer:
|
|||
if testing:
|
||||
info("The testing flag is set. This system will be installed with testing repositories enabled.")
|
||||
pacman_conf.enable(pacman.Repo.Testing)
|
||||
if multilib:
|
||||
pacman_conf.enable(pacman.Repo.MultilibTesting)
|
||||
else:
|
||||
info("The testing flag is not set. This system will be installed without testing repositories enabled.")
|
||||
|
||||
|
|
|
|||
|
|
@ -10,24 +10,35 @@ class Config:
|
|||
def __init__(self, target: Path):
|
||||
self.path = Path("/etc") / "pacman.conf"
|
||||
self.chroot_path = target / "etc" / "pacman.conf"
|
||||
self.patterns: List[re.Pattern] = []
|
||||
self.repos: List[Repo] = []
|
||||
|
||||
def enable(self, repo: Repo):
|
||||
self.patterns.append(re.compile(r"^#\s*\[{}\]$".format(repo.value)))
|
||||
self.repos.append(repo)
|
||||
|
||||
def apply(self):
|
||||
if not self.patterns:
|
||||
if not self.repos:
|
||||
return
|
||||
|
||||
if Repo.Testing in self.repos:
|
||||
if Repo.Multilib in self.repos:
|
||||
repos_pattern = f'({Repo.Multilib.value}|.+-{Repo.Testing.value})'
|
||||
else:
|
||||
repos_pattern = f'(?!{Repo.Multilib.value}).+-{Repo.Testing.value}'
|
||||
else:
|
||||
repos_pattern = Repo.Multilib.value
|
||||
|
||||
pattern = re.compile(rf"^#\s*\[{repos_pattern}\]$")
|
||||
|
||||
lines = iter(self.path.read_text().splitlines(keepends=True))
|
||||
with open(self.path, 'w') as f:
|
||||
for line in lines:
|
||||
if any(pattern.match(line) for pattern in self.patterns):
|
||||
if pattern.match(line):
|
||||
# Uncomment this line and the next.
|
||||
f.write(line.lstrip('#'))
|
||||
f.write(next(lines).lstrip('#'))
|
||||
else:
|
||||
f.write(line)
|
||||
|
||||
|
||||
def persist(self):
|
||||
if self.patterns:
|
||||
if self.repos:
|
||||
copy2(self.path, self.chroot_path)
|
||||
|
|
|
|||
|
|
@ -3,4 +3,3 @@ from enum import Enum
|
|||
class Repo(Enum):
|
||||
Multilib = "multilib"
|
||||
Testing = "testing"
|
||||
MultilibTesting = "multilib-testing"
|
||||
|
|
|
|||
Loading…
Reference in New Issue