|
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