Merge ~nteodosio/update-manager:jammy-ua into update-manager:ubuntu/jammy
- Git
- lp:~nteodosio/update-manager
- jammy-ua
- Merge into ubuntu/jammy
Proposed by
Nathan Teodosio
Status: | Merged |
---|---|
Approved by: | Sebastien Bacher |
Approved revision: | d9687545386c1016c4a05d2e51d6f0ed38ab4afe |
Merge reported by: | Sebastien Bacher |
Merged at revision: | d9687545386c1016c4a05d2e51d6f0ed38ab4afe |
Proposed branch: | ~nteodosio/update-manager:jammy-ua |
Merge into: | update-manager:ubuntu/jammy |
Diff against target: |
241 lines (+71/-27) 4 files modified
UpdateManager/Core/UpdateList.py (+22/-7) UpdateManager/UpdateManager.py (+11/-4) UpdateManager/UpdatesAvailable.py (+31/-16) debian/changelog (+7/-0) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Sebastien Bacher | Pending | ||
Review via email: mp+452816@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Sebastien Bacher (seb128) wrote : | # |
Revision history for this message
Sebastien Bacher (seb128) wrote : | # |
It was merged into https:/
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/UpdateManager/Core/UpdateList.py b/UpdateManager/Core/UpdateList.py | |||
2 | index 8d30317..814d772 100644 | |||
3 | --- a/UpdateManager/Core/UpdateList.py | |||
4 | +++ b/UpdateManager/Core/UpdateList.py | |||
5 | @@ -391,7 +391,8 @@ class UpdateList(): | |||
6 | 391 | return True | 391 | return True |
7 | 392 | return False | 392 | return False |
8 | 393 | 393 | ||
10 | 394 | def _make_groups(self, cache, pkgs, eventloop_callback, to_remove=False, sensitive=True): | 394 | def _make_groups(self, cache, pkgs, eventloop_callback, to_remove=False, |
11 | 395 | sensitive=True): | ||
12 | 395 | if not pkgs: | 396 | if not pkgs: |
13 | 396 | return [] | 397 | return [] |
14 | 397 | ungrouped_pkgs = [] | 398 | ungrouped_pkgs = [] |
15 | @@ -401,7 +402,8 @@ class UpdateList(): | |||
16 | 401 | for pkg in pkgs: | 402 | for pkg in pkgs: |
17 | 402 | app = self._get_application_for_package(pkg) | 403 | app = self._get_application_for_package(pkg) |
18 | 403 | if app is not None: | 404 | if app is not None: |
20 | 404 | app_group = UpdateApplicationGroup(pkg, app, to_remove, sensitive) | 405 | app_group = UpdateApplicationGroup(pkg, app, to_remove, |
21 | 406 | sensitive) | ||
22 | 405 | app_groups.append(app_group) | 407 | app_groups.append(app_group) |
23 | 406 | else: | 408 | else: |
24 | 407 | ungrouped_pkgs.append(pkg) | 409 | ungrouped_pkgs.append(pkg) |
25 | @@ -440,7 +442,8 @@ class UpdateList(): | |||
26 | 440 | "linux-doc.*") | 442 | "linux-doc.*") |
27 | 441 | linux_regexp = re.compile("(" + "|".join( | 443 | linux_regexp = re.compile("(" + "|".join( |
28 | 442 | ["^" + n for n in linux_names]) + ")") | 444 | ["^" + n for n in linux_names]) + ")") |
30 | 443 | ubuntu_base_group = UpdateGroup(None, None, None, to_remove, sensitive) | 445 | ubuntu_base_group = UpdateGroup(None, None, None, to_remove, |
31 | 446 | sensitive) | ||
32 | 444 | flavor_package = utils.get_ubuntu_flavor_package(cache=cache) | 447 | flavor_package = utils.get_ubuntu_flavor_package(cache=cache) |
33 | 445 | ubuntu_base_pkgs = [flavor_package, | 448 | ubuntu_base_pkgs = [flavor_package, |
34 | 446 | "ubuntu-standard", | 449 | "ubuntu-standard", |
35 | @@ -458,10 +461,13 @@ class UpdateList(): | |||
36 | 458 | if ubuntu_base_group.is_dependency(pkg, cache, | 461 | if ubuntu_base_group.is_dependency(pkg, cache, |
37 | 459 | eventloop_callback): | 462 | eventloop_callback): |
38 | 460 | if system_group is None: | 463 | if system_group is None: |
40 | 461 | system_group = UpdateSystemGroup(cache, to_remove, sensitive) | 464 | system_group = UpdateSystemGroup(cache, to_remove, |
41 | 465 | sensitive) | ||
42 | 462 | system_group.add(pkg) | 466 | system_group.add(pkg) |
43 | 463 | else: | 467 | else: |
45 | 464 | pkg_groups.append(UpdatePackageGroup(pkg, to_remove, sensitive)) | 468 | pkg_groups.append(UpdatePackageGroup( |
46 | 469 | pkg, to_remove, sensitive) | ||
47 | 470 | ) | ||
48 | 465 | 471 | ||
49 | 466 | app_groups.sort(key=lambda a: a.name.lower()) | 472 | app_groups.sort(key=lambda a: a.name.lower()) |
50 | 467 | pkg_groups.sort(key=lambda a: a.name.lower()) | 473 | pkg_groups.sort(key=lambda a: a.name.lower()) |
51 | @@ -511,7 +517,12 @@ class UpdateList(): | |||
52 | 511 | pass | 517 | pass |
53 | 512 | fake_ua_packages = [] | 518 | fake_ua_packages = [] |
54 | 513 | ua_packages_names = [] | 519 | ua_packages_names = [] |
56 | 514 | for (package_name, version, size, downloadable) in ua_security_packages: | 520 | for ( |
57 | 521 | package_name, | ||
58 | 522 | version, | ||
59 | 523 | size, | ||
60 | 524 | downloadable | ||
61 | 525 | ) in ua_security_packages: | ||
62 | 515 | if downloadable: | 526 | if downloadable: |
63 | 516 | ua_packages_names.append(package_name) | 527 | ua_packages_names.append(package_name) |
64 | 517 | else: | 528 | else: |
65 | @@ -573,7 +584,11 @@ class UpdateList(): | |||
66 | 573 | if security_pkgs or upgrade_pkgs or pro_pkgs: | 584 | if security_pkgs or upgrade_pkgs or pro_pkgs: |
67 | 574 | # There's updates available. Initiate the desktop file cache. | 585 | # There's updates available. Initiate the desktop file cache. |
68 | 575 | pkg_names = [p.name for p in | 586 | pkg_names = [p.name for p in |
70 | 576 | pro_pkgs + security_pkgs + upgrade_pkgs + kernel_autoremove_pkgs + duplicate_pkgs] | 587 | pro_pkgs |
71 | 588 | + security_pkgs | ||
72 | 589 | + upgrade_pkgs | ||
73 | 590 | + kernel_autoremove_pkgs | ||
74 | 591 | + duplicate_pkgs] | ||
75 | 577 | self._populate_desktop_cache(pkg_names) | 592 | self._populate_desktop_cache(pkg_names) |
76 | 578 | self.oem_groups = self._make_groups(cache, oem_pkgs, | 593 | self.oem_groups = self._make_groups(cache, oem_pkgs, |
77 | 579 | eventloop_callback) | 594 | eventloop_callback) |
78 | diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py | |||
79 | index 259c0e6..2b0af65 100644 | |||
80 | --- a/UpdateManager/UpdateManager.py | |||
81 | +++ b/UpdateManager/UpdateManager.py | |||
82 | @@ -198,7 +198,7 @@ class UpdateManager(Gtk.Window): | |||
83 | 198 | self._start_pane(None) | 198 | self._start_pane(None) |
84 | 199 | sys.exit(0) | 199 | sys.exit(0) |
85 | 200 | 200 | ||
87 | 201 | def show_settings(self, page_number = SoftwarePropertiesPage.updates): | 201 | def show_settings(self, page_number=SoftwarePropertiesPage.updates): |
88 | 202 | cmd = ["/usr/bin/software-properties-gtk", | 202 | cmd = ["/usr/bin/software-properties-gtk", |
89 | 203 | "--open-tab", str(page_number)] | 203 | "--open-tab", str(page_number)] |
90 | 204 | 204 | ||
91 | @@ -284,14 +284,21 @@ class UpdateManager(Gtk.Window): | |||
92 | 284 | time.sleep(0.05) | 284 | time.sleep(0.05) |
93 | 285 | s = json.load(p.stdout) | 285 | s = json.load(p.stdout) |
94 | 286 | for package in s.get('packages', []): | 286 | for package in s.get('packages', []): |
96 | 287 | if package.get('service_name', '') == 'standard-security': continue | 287 | if package.get('service_name', '') == 'standard-security': |
97 | 288 | continue | ||
98 | 288 | status = package.get('status', '') | 289 | status = package.get('status', '') |
100 | 289 | if status == 'pending_attach' or status == 'pending_enable' or status == 'upgrade_available': | 290 | if ( |
101 | 291 | status == 'pending_attach' | ||
102 | 292 | or status == 'pending_enable' | ||
103 | 293 | or status == 'upgrade_available' | ||
104 | 294 | ): | ||
105 | 290 | name = package.get('package', '') | 295 | name = package.get('package', '') |
106 | 291 | version = package.get('version', '') | 296 | version = package.get('version', '') |
107 | 292 | size = package.get('download_size', 0) | 297 | size = package.get('download_size', 0) |
108 | 293 | downloadable = status == 'upgrade_available' | 298 | downloadable = status == 'upgrade_available' |
110 | 294 | self.ua_security_packages.append((name, version, size, downloadable)) | 299 | self.ua_security_packages.append( |
111 | 300 | (name, version, size, downloadable) | ||
112 | 301 | ) | ||
113 | 295 | 302 | ||
114 | 296 | def _make_available_pane(self, install_count, need_reboot=False, | 303 | def _make_available_pane(self, install_count, need_reboot=False, |
115 | 297 | cancelled_update=False, error_occurred=False): | 304 | cancelled_update=False, error_occurred=False): |
116 | diff --git a/UpdateManager/UpdatesAvailable.py b/UpdateManager/UpdatesAvailable.py | |||
117 | index add06fe..5d254fe 100644 | |||
118 | --- a/UpdateManager/UpdatesAvailable.py | |||
119 | +++ b/UpdateManager/UpdatesAvailable.py | |||
120 | @@ -251,7 +251,7 @@ class UpdatesAvailable(InternalDialog): | |||
121 | 251 | self.button_close = self.add_button(Gtk.STOCK_CANCEL, | 251 | self.button_close = self.add_button(Gtk.STOCK_CANCEL, |
122 | 252 | self.window_main.close) | 252 | self.window_main.close) |
123 | 253 | self.button_pro = self.add_button(_("Enable Ubuntu Pro..."), | 253 | self.button_pro = self.add_button(_("Enable Ubuntu Pro..."), |
125 | 254 | self.on_button_pro_clicked) | 254 | self.on_button_pro_clicked) |
126 | 255 | self.button_install = self.add_button(_("Install Now"), | 255 | self.button_install = self.add_button(_("Install Now"), |
127 | 256 | self.on_button_install_clicked) | 256 | self.on_button_install_clicked) |
128 | 257 | self.focus_button = self.button_install | 257 | self.focus_button = self.button_install |
129 | @@ -371,8 +371,9 @@ class UpdatesAvailable(InternalDialog): | |||
130 | 371 | from uaclient.api.u.apt_news.current_news.v1 import current_news | 371 | from uaclient.api.u.apt_news.current_news.v1 import current_news |
131 | 372 | apt_news = current_news().current_news | 372 | apt_news = current_news().current_news |
132 | 373 | except ImportError: | 373 | except ImportError: |
135 | 374 | pro_client_apt_news_api_supported = False | 374 | apt_news = self._get_apt_news( |
136 | 375 | apt_news = self._get_apt_news("/var/lib/ubuntu-advantage/messages/apt-news") | 375 | "/var/lib/ubuntu-advantage/messages/apt-news" |
137 | 376 | ) | ||
138 | 376 | if apt_news: | 377 | if apt_news: |
139 | 377 | self.news.get_buffer().set_text(apt_news) | 378 | self.news.get_buffer().set_text(apt_news) |
140 | 378 | self.expander_news.set_visible(True) | 379 | self.expander_news.set_visible(True) |
141 | @@ -522,14 +523,16 @@ class UpdatesAvailable(InternalDialog): | |||
142 | 522 | 523 | ||
143 | 523 | renderer.set_property("markup", markup) | 524 | renderer.set_property("markup", markup) |
144 | 524 | 525 | ||
147 | 525 | def set_changes_buffer(self, changes_buffer, long_desc, text, name, srcpkg): | 526 | def set_changes_buffer(self, changes_buffer, long_desc, text, name, |
148 | 526 | changes_buffer.set_text("") # Clear "downloading list of changes..." | 527 | srcpkg): |
149 | 528 | changes_buffer.set_text("") # Clear "downloading list of changes..." | ||
150 | 527 | 529 | ||
151 | 528 | # Write the technical description section | 530 | # Write the technical description section |
152 | 529 | changes_buffer.insert_with_tags_by_name(changes_buffer.get_end_iter(), | 531 | changes_buffer.insert_with_tags_by_name(changes_buffer.get_end_iter(), |
153 | 530 | "Technical description\n", | 532 | "Technical description\n", |
154 | 531 | "descriptiontag") | 533 | "descriptiontag") |
156 | 532 | changes_buffer.insert(changes_buffer.get_end_iter(), long_desc + "\n\n") | 534 | changes_buffer.insert(changes_buffer.get_end_iter(), |
157 | 535 | long_desc + "\n\n") | ||
158 | 533 | 536 | ||
159 | 534 | # Write the changes section | 537 | # Write the changes section |
160 | 535 | lines = text.split("\n") | 538 | lines = text.split("\n") |
161 | @@ -604,7 +607,8 @@ class UpdatesAvailable(InternalDialog): | |||
162 | 604 | if name in self.cache.all_changes: | 607 | if name in self.cache.all_changes: |
163 | 605 | changes = self.cache.all_changes[name] | 608 | changes = self.cache.all_changes[name] |
164 | 606 | srcpkg = self.cache[name].candidate.source_name | 609 | srcpkg = self.cache[name].candidate.source_name |
166 | 607 | self.set_changes_buffer(changes_buffer, long_desc, changes, name, srcpkg) | 610 | self.set_changes_buffer(changes_buffer, long_desc, changes, name, |
167 | 611 | srcpkg) | ||
168 | 608 | # if not connected, do not even attempt to get the changes | 612 | # if not connected, do not even attempt to get the changes |
169 | 609 | elif not self.connected: | 613 | elif not self.connected: |
170 | 610 | changes_buffer.set_text( | 614 | changes_buffer.set_text( |
171 | @@ -651,7 +655,8 @@ class UpdatesAvailable(InternalDialog): | |||
172 | 651 | changes += self.cache.all_changes[name] | 655 | changes += self.cache.all_changes[name] |
173 | 652 | 656 | ||
174 | 653 | if changes or long_desc: | 657 | if changes or long_desc: |
176 | 654 | self.set_changes_buffer(changes_buffer, long_desc, changes, name, srcpkg) | 658 | self.set_changes_buffer(changes_buffer, long_desc, changes, name, |
177 | 659 | srcpkg) | ||
178 | 655 | 660 | ||
179 | 656 | def on_treeview_button_press(self, widget, event): | 661 | def on_treeview_button_press(self, widget, event): |
180 | 657 | """ | 662 | """ |
181 | @@ -791,8 +796,10 @@ class UpdatesAvailable(InternalDialog): | |||
182 | 791 | self.button_install.set_sensitive(True) | 796 | self.button_install.set_sensitive(True) |
183 | 792 | self.unity.set_install_menuitem_visible(True) | 797 | self.unity.set_install_menuitem_visible(True) |
184 | 793 | self.button_pro.destroy() | 798 | self.button_pro.destroy() |
187 | 794 | elif self.list.ubuntu_pro_fake_groups and not self.list.ubuntu_pro_groups: | 799 | elif (self.list.ubuntu_pro_fake_groups |
188 | 795 | download_str = _("You need to enable Ubuntu Pro to install these updates.") | 800 | and not self.list.ubuntu_pro_groups): |
189 | 801 | download_str = _("You need to enable Ubuntu Pro to install" | ||
190 | 802 | "these updates.") | ||
191 | 796 | self.button_install.destroy() | 803 | self.button_install.destroy() |
192 | 797 | else: | 804 | else: |
193 | 798 | download_str = _("There are no updates to install.") | 805 | download_str = _("There are no updates to install.") |
194 | @@ -1122,18 +1129,26 @@ class UpdatesAvailable(InternalDialog): | |||
195 | 1122 | self.list.duplicate_groups) | 1129 | self.list.duplicate_groups) |
196 | 1123 | self._add_groups(self.list.duplicate_groups) | 1130 | self._add_groups(self.list.duplicate_groups) |
197 | 1124 | if self.list.ubuntu_pro_groups: | 1131 | if self.list.ubuntu_pro_groups: |
199 | 1125 | self._add_header(_("Ubuntu Pro security updates"), self.list.ubuntu_pro_groups, sensitive=True) | 1132 | self._add_header( |
200 | 1133 | _("Ubuntu Pro security updates"), | ||
201 | 1134 | self.list.ubuntu_pro_groups, | ||
202 | 1135 | sensitive=True | ||
203 | 1136 | ) | ||
204 | 1126 | self._add_groups(self.list.ubuntu_pro_groups) | 1137 | self._add_groups(self.list.ubuntu_pro_groups) |
205 | 1127 | if self.list.ubuntu_pro_fake_groups: | 1138 | if self.list.ubuntu_pro_fake_groups: |
207 | 1128 | self._add_header(_("Ubuntu Pro security updates (enable in Settingsā¦)"), self.list.ubuntu_pro_fake_groups, sensitive=False) | 1139 | self._add_header( |
208 | 1140 | _("Ubuntu Pro security updates (enable in Settingsā¦)"), | ||
209 | 1141 | self.list.ubuntu_pro_fake_groups, | ||
210 | 1142 | sensitive=False | ||
211 | 1143 | ) | ||
212 | 1129 | self._add_groups(self.list.ubuntu_pro_fake_groups) | 1144 | self._add_groups(self.list.ubuntu_pro_fake_groups) |
213 | 1130 | 1145 | ||
214 | 1131 | self.treeview_update.set_model(self.store) | 1146 | self.treeview_update.set_model(self.store) |
215 | 1132 | self.pkg_cell_area.indent_toplevel = ( | 1147 | self.pkg_cell_area.indent_toplevel = ( |
220 | 1133 | bool(self.list.ubuntu_pro_fake_groups) or | 1148 | bool(self.list.ubuntu_pro_fake_groups) |
221 | 1134 | bool(self.list.ubuntu_pro_groups) or | 1149 | or bool(self.list.ubuntu_pro_groups) |
222 | 1135 | bool(self.list.update_groups) or | 1150 | or bool(self.list.update_groups) |
223 | 1136 | bool(self.list.security_groups) | 1151 | or bool(self.list.security_groups) |
224 | 1137 | or bool(self.list.kernel_autoremove_groups) | 1152 | or bool(self.list.kernel_autoremove_groups) |
225 | 1138 | or bool(self.list.duplicate_groups)) | 1153 | or bool(self.list.duplicate_groups)) |
226 | 1139 | self.update_close_button() | 1154 | self.update_close_button() |
227 | diff --git a/debian/changelog b/debian/changelog | |||
228 | index 749da13..1bf015b 100644 | |||
229 | --- a/debian/changelog | |||
230 | +++ b/debian/changelog | |||
231 | @@ -1,3 +1,10 @@ | |||
232 | 1 | update-manager (1:22.04.15) UNRELEASED; urgency=medium | ||
233 | 2 | |||
234 | 3 | * Ubuntu Pro (LP: #1990450): | ||
235 | 4 | - Address linter errors that cause autopkgtest to fail. | ||
236 | 5 | |||
237 | 6 | -- Nathan Pratta Teodosio <nathan.teodosio@canonical.com> Wed, 04 Oct 2023 15:29:45 +0200 | ||
238 | 7 | |||
239 | 1 | update-manager (1:22.04.14) jammy; urgency=medium | 8 | update-manager (1:22.04.14) jammy; urgency=medium |
240 | 2 | 9 | ||
241 | 3 | * Ubuntu Pro (LP: #1990450): | 10 | * Ubuntu Pro (LP: #1990450): |
Thanks and sorry for not catching that before upload!