New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 898711 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Nov 26
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug

Blocking:
issue 879313



Sign in to add a comment

update_engine: support update DLC modules

Project Member Reported by xiaochu@chromium.org, Oct 24

Issue description

update_engine supports installing DLC modules by AttemptInstall API. The disruption to Android side is contained since DLC code path is triggered by a Chrome OS API. And Android has the ability to support DLC relatively simply by adding their own API to trigger the shared DLC code path. However, such a methodology is no longer clearly valid for DLC modules update:

1) update_engine needs to depend on dlcservice which is not present for Android.
2) This changes the platform update flow (modifies existing code path) which has a bigger disruption to platform update.

A proposed solution:
a) Adding a common interface (DlcServiceInterface, names TBD) along with platform-dependent (DlcServiceAndroid and DlcServiceChromeOS) implementations.
b) OmahaRequestAction calls DlcServiceInterface to get a list of DLC modules installed. Failure of this API call should not block the platform update flow. And Android side is expected to fail.

This should address both 1) and 2). Later Android side can relatively easily support DLC module update by implementing their own DlcServiceAndroid.

Can you please take a look and see if this makes sense?
 
Well, that's how we usually separate the two platforms. But it depends what are the changes you are proposing that is causing platform conflicts. For example If it is just a blocking dbus call before the update check starts to get the list of dlcs, you can just #ifdef __ANDROID__ it out for android.
Cool if #ifdef is the way to go. The change could be as simple as this:

bool UpdateAttempter::CheckForUpdate(const string& app_version,
                                     const string& omaha_url,
                                     UpdateAttemptFlags flags) {
  dlc_ids_.clear();
  ...
-->
bool UpdateAttempter::CheckForUpdate(const string& app_version,
                                     const string& omaha_url,
                                     UpdateAttemptFlags flags) {
  #ifdef __ANDROID__
  // call dlcservice to get a list of DLC modules.
  ...
  #endif  // __ANDROID__
  ...

Blocking: 879313
Project Member

Comment 4 by bugdroid1@chromium.org, Nov 7

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/171c438f797b8482a31dad17364e79e1eb6b5497

commit 171c438f797b8482a31dad17364e79e1eb6b5497
Author: Xiaochu Liu <xiaochu@chromium.org>
Date: Wed Nov 07 14:34:12 2018

dlcservice-client: add a 9999 ebuild file

The ebuild file is to build the D-Bus client library for DlcService.

The library is used by UpdateEngine for now.

BUG= chromium:898711 
TEST=emerge-kefka dlcservice-client
CQ-DEPEND=CL:1318196

Change-Id: I00940578282620ab1ba5efbef032342299c88ad5
Reviewed-on: https://chromium-review.googlesource.com/1318685
Commit-Ready: Xiaochu Liu <xiaochu@chromium.org>
Tested-by: Xiaochu Liu <xiaochu@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>

[add] https://crrev.com/171c438f797b8482a31dad17364e79e1eb6b5497/chromeos-base/dlcservice-client/dlcservice-client-9999.ebuild

Project Member

Comment 5 by bugdroid1@chromium.org, Nov 7

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/632a51afe63fdbe590ac0d33b93394bc76b056d1

commit 632a51afe63fdbe590ac0d33b93394bc76b056d1
Author: Xiaochu Liu <xiaochu@chromium.org>
Date: Wed Nov 07 14:34:12 2018

dlcservice: add dlcservice D-Bus client library

Add build-related files. The client library will be used by
update_engine etc. to make D-Bus calls directly to dlcservice.

BUG= chromium:898711 
TEST=emerge-kefka dlcservice-client

Change-Id: I0f2041e6e5d35bb8545b853159514371af14f3e4
Reviewed-on: https://chromium-review.googlesource.com/1318196
Commit-Ready: Xiaochu Liu <xiaochu@chromium.org>
Tested-by: Xiaochu Liu <xiaochu@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Xiaochu Liu <xiaochu@chromium.org>

[modify] https://crrev.com/632a51afe63fdbe590ac0d33b93394bc76b056d1/dlcservice/README.md
[add] https://crrev.com/632a51afe63fdbe590ac0d33b93394bc76b056d1/dlcservice/client/BUILD.gn
[add] https://crrev.com/632a51afe63fdbe590ac0d33b93394bc76b056d1/dlcservice/client/libdlcservice-client-test.pc.in
[add] https://crrev.com/632a51afe63fdbe590ac0d33b93394bc76b056d1/dlcservice/client/libdlcservice-client.pc.in

Project Member

Comment 6 by bugdroid1@chromium.org, Nov 7

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/f6be7e32b6d2bbd2631619d8de56841be9806320

commit f6be7e32b6d2bbd2631619d8de56841be9806320
Author: Xiaochu Liu <xiaochu@chromium.org>
Date: Wed Nov 07 19:40:46 2018

common-mk: add dlc USE flag in common.gypi

update_engine ebuild uses 'dlc' USE flag to selectively import libraries
and compile source code that are DLC update specific. We do this since
we want to avoid activate DLC code path when platform is doing an
update.

BUG= chromium:898711 
TEST=USE="dlc" emerge-kefka update_engine
CQ-DEPEND=CL:1318685

Change-Id: I7bb62a0e7f42f04fcbbcd112a48fdb77fb7bc5aa
Reviewed-on: https://chromium-review.googlesource.com/1320550
Commit-Ready: Xiaochu Liu <xiaochu@chromium.org>
Tested-by: Xiaochu Liu <xiaochu@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>

[modify] https://crrev.com/f6be7e32b6d2bbd2631619d8de56841be9806320/common-mk/common.gypi

Project Member

Comment 7 by bugdroid1@chromium.org, Nov 7

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/38fcd55e18303132bc1657471d27f900381144e3

commit 38fcd55e18303132bc1657471d27f900381144e3
Author: Xiaochu Liu <xiaochu@chromium.org>
Date: Wed Nov 07 19:40:46 2018

update_engine: selectively depends dlcservice-client

We depends on dlcservice-client only when USE="dlc" is used to compile
update_engine.

BUG= chromium:898711 
TEST=USE="dlc" emerge-kefka update_engine
CQ-DEPEND=CL:1320550

Change-Id: I2959bf07513da0620cd234791e979aaa031fc3ea
Reviewed-on: https://chromium-review.googlesource.com/1320513
Commit-Ready: Xiaochu Liu <xiaochu@chromium.org>
Tested-by: Xiaochu Liu <xiaochu@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>

[modify] https://crrev.com/38fcd55e18303132bc1657471d27f900381144e3/chromeos-base/update_engine/update_engine-9999.ebuild

Labels: Pri-2
Status: Fixed (was: Untriaged)

Sign in to add a comment