|
19 | 19 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
20 | 20 | # USA.
|
21 | 21 |
|
22 |
| -import shutil |
23 |
| -from typing import List |
| 22 | +from typing import List, Dict |
24 | 23 |
|
25 | 24 | from source.common.package_manager import PackageManager
|
26 | 25 | from source.common.process_result import ProcessResult
|
|
29 | 28 | class PACMANCLI(PackageManager):
|
30 | 29 | def __init__(self, log_handler, log_level):
|
31 | 30 | super().__init__(log_handler, log_level)
|
32 |
| - self.package_manager: str = "pacman" |
| 31 | + self.package_manager = "pacman" |
33 | 32 |
|
34 | 33 | def refresh(self, hard_fail: bool) -> ProcessResult:
|
35 | 34 | """
|
36 | 35 | Use package manager to refresh available packages.
|
37 | 36 |
|
38 |
| - :param hard_fail: raise error if some repo is unavailable |
| 37 | + Note: Is a no-op in ArchLinux because upgrade takes care of it, and |
| 38 | + having just sync could cause problems. |
| 39 | + See: https://github.com/QubesOS/qubes-core-admin-linux/pull/139#pullrequestreview-1845574713 |
| 40 | +
|
39 | 41 | :return: (exit_code, stdout, stderr)
|
40 | 42 | """
|
41 |
| - cmd = [ self.package_manager, |
42 |
| - "-Sy" ] |
43 |
| - return self.run_cmd(cmd) |
| 43 | + cmd = ["true"] |
| 44 | + return self.run_cmd(cmd) |
44 | 45 |
|
45 |
| - def get_packages(self): |
| 46 | + def get_packages(self) -> Dict[str, List[str]]: |
46 | 47 | """
|
47 | 48 | Use pacman to return the installed packages and their versions.
|
48 | 49 | """
|
49 | 50 |
|
50 |
| - cmd = [ self.package_manager, |
51 |
| - "-Q" ] |
| 51 | + cmd = [self.package_manager, "-Q"] |
52 | 52 | # EXAMPLE OUTPUT:
|
53 | 53 | # qubes-vm-core 4.2.25-1
|
54 |
| - result = self.run_cmd(cmd) |
| 54 | + result = self.run_cmd(cmd, realtime=False) |
55 | 55 |
|
56 |
| - packages = {} |
| 56 | + packages: Dict[str, List[str]] = {} |
57 | 57 | for line in result.out.splitlines():
|
58 |
| - cols = line.split() |
59 |
| - package, version = cols |
| 58 | + package, version = line.split() |
60 | 59 | packages.setdefault(package, []).append(version)
|
61 | 60 |
|
62 | 61 | return packages
|
|
0 commit comments