History log of /system/update_engine/Android.mk
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
5ee71ba372ddef9bc2b5e12f55f0b449d320282c 23-Mar-2016 Alex Deymo <deymo@google.com> Implement Xz compressor functions.

The new XzCompress() function is similar to BzipCompress() function but
uses the Xz compression algorithm.

This patch simplifies the unittests of the compressors and reuses the
client-side decompresor implementation instead of repeating the
implementation in the delta generator. This patch removes the unused
compression/decompression functions.

Bug: 24578399
TEST=Added unittests.

(cherry picked from commit 246bf21fd0074a1897c28a7c4703c2223e6224b6)

Change-Id: I20cc3035d36c1041cc67fe88435c720d9dbc8733
/system/update_engine/Android.mk
3a92aa2fe6aafd1007b6427795dfe8711b6cb094 01-Mar-2016 Sen Jiang <senj@google.com> Check if zlib is compatible.

Add a --zlib_fingerprint flag in delta_generator to check if the zlib of
source image is compatible, and only enable IMGDIFF operation if it is.

Test: Added unittest to check /etc/zlib_fingerprint
Bug: 27156099

(cherry picked from commit e0d04282910d423ddc950dd38224c001efc41d42)

Change-Id: Ic5dd14abaa4e7b6644bfcb5d73cfc42cc39195c2
/system/update_engine/Android.mk
c4db97bfa6f24e987c8298f721a6c99f5febb599 14-Mar-2016 Sen Jiang <senj@google.com> Fix PayloadSignerTest.* in Brillo.

Added modules to install missing private and public keys.
There's no openssl binary in target device, rewrote SignHash() using
openssl library functions.

Test: GTEST_FILTER="PayloadSignerTest.*" ./update_engine_unittests
Bug: 26955860

(cherry picked from commit 923886a86013fbba05d00dd64d4ddc9b9a6dffe4)

Change-Id: I9952409480cc1e70b90999f3dda7dfab5cc413f1
/system/update_engine/Android.mk
bb0c067bf37c98cc55b6c79c1174084b1e0c9b0b 10-Mar-2016 Alex Deymo <deymo@google.com> Implement susped, resume and cancel for the Postinstall action.

This patch sends SIGSTOP/SIGCONT to the running postinstall program to
suspend/resume the child process, and SIGKILL when cancelling it.

Bug: 27272144
TEST=Added unittest to check the signal being sent.

(cherry picked from commit d15c546ed794293d0a63770467a0f3c4c84c6214)

Change-Id: Ie99b406b4d7f73dda4189b7a5a7d627c866055d6
/system/update_engine/Android.mk
3275606278533a27f61263e39718acc8d77afebb 05-Mar-2016 Alex Deymo <deymo@google.com> sample_images: Support sparse files.

The sample images are mostly sparse space. This patch stores those
files as sparse files in the .tar.bz2 files and simplifies the rules
to extract them directly onto the destination directory.

acp still doesn't support sparse files, so when these files get copied
to the /data partition, they won't be sparse files. Nevertheless, this
patch is still required.

Bug: 26955860
TEST=mmma showcommands system/update_engine; `du -hs` the intermediate files.

(cherry picked from commit a3553e42ce7255034044f364f72516b29417bbdc)

Change-Id: I6abe3456d412248b5df13129936463a4efc120ba
/system/update_engine/Android.mk
dc873fa24a49165c6eacc7628713066adb028e60 04-Mar-2016 Alex Deymo <deymo@google.com> Fix test_http_server location.

The test_http_server is not a gtest executable, but a test helper used
by the unittests. It is expected to be in the same directory.

Bug: 26955860
TEST=Ran HttpFetcher unittests.

Change-Id: I8d05212089d6c774c59c85dc8299984757bbb29d
/system/update_engine/Android.mk
63bdd876ff81cf93d945c7e473ff7fa17655a8f8 25-Feb-2016 Alex Deymo <deymo@google.com> Don't rebuild .img files on incremental builds.

The sample image files are extracted from a .tar.bz2 file. The images
were generated at some point in the past and this date is stored in the
tarball file, so the rule that extracts them from the tarball keeps
this date, making the .img file have an older date than the file that
generates it (the .tar.bz2). This casues the build system to rebuild
those .img files every time unnecesarily.

This patch updates the date on the extracted .img while extracting it
fixing this problem.

Bug: None
TEST=Running `mmma system/update_engine` twice doesn't regenerate the .img files.

Change-Id: I76dc536c5ee45898ad5c43fd005fcf30e4311cd1
/system/update_engine/Android.mk
c90be63117cdad2622694b6f9ac2aec65fa80bf0 18-Feb-2016 Alex Deymo <deymo@google.com> Fix Ext2FilesystemTest unittests on Brillo.

The Ext2FilesystemTest tests use a set of pre-generated filesystems
stored in sample_images.tar.bz2 and attempt to parse those. This patch
installs the used filesystems in the same directory as the Chrome OS
test environment would generate those files, relative to the unittest
program executed: in a gen/ subdirectory.

Also, an empty filesystem that was previously created from the unittests
is now pre-generated.

The update_engine_unittests program now depends on those modules being
installed and those unittests pass.

Bug: 26955860
TEST=/data/nativetest/update_engine_unittests/update_engine_unittests --gtest_filter=Ext2FilesystemTest.*

Change-Id: I40082e328cec89a7ef4f06d3b8125a953b29efad
/system/update_engine/Android.mk
80f70ff45f8ea9a679c0c3ed0dc143dd2fe2b63e 11-Feb-2016 Alex Deymo <deymo@google.com> Build unittests in Brillo.

Many unittests do not pass for simple reasons that will be addressed
later. This CL includes all the changes to make the unittests build.
In particular, the generated DBus mocks, required to build several
unittests are now included here.

The dbus-constants.h files were moved to the system_api repo, so they
can be removed from here.

The unittest build is only enabled for Brillo targets, since non-Brillo
targets don't even build DBus.

Bug: 26955860
TEST=`mmma` on edison-eng (and aosp_arm-eng).

Change-Id: Ib38241f0a6eb99b1d60d72db6bcfd125d38e3fad
/system/update_engine/Android.mk
0cd976de289c9f17d2c10814720fbd6d62d7432d 12-Feb-2016 Alex Deymo <deymo@google.com> Disable ChromeBrowserProxyResolver behind a flag.

In Brillo and Android targets, there isn't a Chrome instance running
to resolve the proxies for a given URL. While this is not a fatal error
it logs abundant error messages on each request, confusing developers.

This patch compiles the ChromeBrowserProxyResolver only when the
USE_LIBCROS flag is set. This is now disabled by default in Brillo and
Android, but enabled in Chrome OS.

Bug: 24277309
TEST=`mma` on edison-eng. Applied an update, no more proxy error logs.

Change-Id: I27779572bf2fc810cb7846d63e123643d0386b0a
/system/update_engine/Android.mk
a96ddc18f0d52c5a73864ee1e7135478cc873c78 11-Feb-2016 Alex Deymo <deymo@google.com> Define libupdate_engine_client before using it.

This CL simmply move the libupdate_engine_client definition up before
it is used locally, to be consistent with its usage and the
update_engine.gyp defintion.

Bug: None
TEST=`mma` on edison-eng

Change-Id: Ieb5a17dd25c48d5eba1c9c1f8e2579873a38469e
/system/update_engine/Android.mk
2997173235e88c5e4cb13d2844f74afc7b25d6e2 05-Feb-2016 Shuqian Zhao <shuqianz@google.com> Add a feature to get the last UpdateAttempt ErrorCode from update_engine

For autotest, update_engine test failures are always hard to debug,
since the error message is not clear. Add a new flag 'last_attempt_error'
to get the last UpdateAttempt ErrorCode from update_engine.

Bug:25598547
Test:emerge-peppy update_engine
emerge-peppy update_engine_client
cros flash a test image to DUT.
(on the DUT):update_engine_client --last_attempt_error
Compare the results with the update_engine logs, matched.

Change-Id: Id12681097ed30b0826cad68809f17f934a07e5b2
/system/update_engine/Android.mk
3b678db2e7fd4baa38c6d6b8bb8334f7d88b8682 09-Feb-2016 Alex Deymo <deymo@google.com> Implement a new resetStatus() method in Android interface.

When an alredy applied update is deleted from the server (normally
because is was detected to be a bad update), we need to go back to
the idle state and remove the update to prevent it from breaking
more devices.

This patch allows the application side to reset the applied update
back to idle.

Bug: 27081760
TEST=Deployed on a non-Brillo device, sent resetStatus.

Change-Id: I1bf5a141388250d225515e40f13bc3564fa5d957
/system/update_engine/Android.mk
e88e9feb5a64c1358baeb1c8547e82aa08e1cd83 04-Feb-2016 Alex Deymo <deymo@google.com> Android: Print the error code string from the client.

The update_engine_client needs to translate the numeric ErrorCode to a
string name that can be printed on the output. This patch moves the
ErrorCodeToString() function to a new error_code_utils.{h,cc} pair of
files so it can be included easily from the client binary and uses it
in the Android update_engine_client.

Bug: 25631767
Bug: 25598547
TEST=`update_engine_client --update` prints the error message in a non-Brillo device.

Change-Id: Ib40813924ec676f3e703412de90d389b2596177e
/system/update_engine/Android.mk
5e3ea278d9e771be3b51bd72985ad582678baddc 28-Jan-2016 Alex Deymo <deymo@google.com> Android: Implement the update attempter for Android.

This patch implements the update workflow for non-Brillo targets. Only
the applyPayload() method is implemented here with a minimal subset of
functionally implemented in it. This new class acts as the service
delegate, handling all the binder service method calls for non-Brillo
targets.

Bug: 25631949
TEST=FEATURES=test emerge-link update_engine
TEST=`mmma system/update_engine` on aosp_arm-eng and edison-eng
TEST=Deployed on a non-Brillo device and tested with update_engine_client

Change-Id: I678cd141633bc2c0920a09ef27a02d53682d5330
/system/update_engine/Android.mk
2130ee03a1b05c923e3ad44b4beef9849ff939e5 03-Feb-2016 Alex Deymo <deymo@google.com> Android: Exit from update_engine_client when daemon dies.

When the update_engine daemon dies or is not running,
update_engine_client now exists with an error code and prints a message
stating a daemon-side failure.

Bug: 25631767
TEST=`update_engine_client --follow` and killed update_engine

Change-Id: I7c13df56bd384d2bdbc5df402f730b2797753a10
/system/update_engine/Android.mk
ab0d976fa47844870d55c87ab530072cea0c8c53 02-Feb-2016 Alex Deymo <deymo@google.com> CPULimiter: Refactor class to manage the CPU limitation.

This new class replaces the functionality embedded in UpdateAttempter
that limits the max CPU usage allowed by update_engine. This refactor
helps reusing this class outside of the brillo UpdateAttempter.

Bug: None
TEST=FEATURES=test emerge-link update_engine

Change-Id: Ib5487d314846b497a44bb78a3b94609571e0fe38
/system/update_engine/Android.mk
fa78f14d818e8e0b8ed5d05ebc389bf833342e7a 27-Jan-2016 Alex Deymo <deymo@google.com> Refactor daemon state and service async notification.

There are three supported IPC mechanism in this code: DBus, binder and
weave (over binder); which are mostly supported by all three platforms
Chrome OS, Brillo and Android. The exceptions are that Brillo and
Chrome OS still *require* DBus and support the others, while the new
Android daemon requires and supports only Binder.

This CL introduces two new interfaces: the ServiceObserverInterface and
the DaemonStateInterface.

The first one abstracts a service (or IPC service) into an interfcae
from the point of view of the daemon initialization and async
notifications of status changes. The second interface encapsulates the
state and main functionality of the update_engine daemon while leaving
the shared initialization in the main.cc and daemon.cc classes.

Bug: 25631949
TEST=`mmma system/update_engine` on edison-eng and aosp_arm-eng
TEST=FEATURES=test emerge-link update_engine

Change-Id: Ic15621031a153e14bdc4df8fcedbca1032e82c21
/system/update_engine/Android.mk
5f52811e5afda03e374a28233500e151f1e706f4 28-Jan-2016 Alex Deymo <deymo@google.com> Compile update_engine_client for non-Brillo targets.

The non-Brillo Android targets use the reduced binder interface. This
patch creates a similar update_engine_client command line tool to use
with the non-Brillo interface and compiles it for those targets.

Bug: 25631767
TEST=`mmma system/update_engine` on edison-eng and aosp_arm-eng.

Change-Id: I598144db2b703322c8469fa0982a70dc62572936
/system/update_engine/Android.mk
ce90f4462dda5b15ec8abeb949a95d99e2f51f08 26-Jan-2016 Casey Dahlin <sadmac@google.com> Remove unused dependencies in the client.

The update_engine_client binary doesn't depend on a particular backend
anymore, since the client library hides all the IPC. This CL removes
the backend-scpecific dependencies from update_engine_client and
relies on the ones specified in the libupdate_engine_client.

Bug: 25908638
TEST=`mmma system/update_engine` on brillo-eng and aosp_arm-eng.
TEST=emerge-link update_engine

Change-Id: Idffb9393eefadeb89eff8e44d07209dac4078035
/system/update_engine/Android.mk
50e24f437da9f47f97315dc9e11b2ba20a3dd829 28-Jan-2016 Alex Deymo <deymo@google.com> Remove warning about update-payload-key redefined.

Android defines a rule for installing the file
/etc/update_engine/update-payload-key.pub.pem for non-Brillo targets in
the build/core/Makefile, which overrides the rule defined here but
generates a warning. This CL restricts the brillo-update-payload-key to
BRILLO targets only, avoiding the double definition.

Bug: None
TEST=`make dist` doesn't show the warning anymore.

Change-Id: I42fa8970767858af12325e65a4ea418f8c1fcc11
/system/update_engine/Android.mk
40892497a9b1ea124058baf09f5f2873a15cb696 26-Jan-2016 Casey Dahlin <sadmac@google.com> Make client use binder interface on brillo

TEST=Verified status and update commands
Bug: 25908638

Change-Id: I7994de41001b4e116bffa539f23f1344ab1deae9
/system/update_engine/Android.mk
aabd81eaaf49c4f20d16e4404162e129a4fc4b1c 27-Jan-2016 Alex Deymo <deymo@google.com> Remove duplicate dependencies in Android.mk.

This section of the Android.mk was added twice due to rebases in the
daemon CLs.

Bug: None
TEST=`mma` with USE_WEAVE=0 and 1.

Change-Id: I6a634d0d251cfb2cabcdef9d37420e9a3e0ba914
/system/update_engine/Android.mk
71d7c214a3944cfa28a5358558d18269d25c11c7 22-Jan-2016 Alex Deymo <deymo@google.com> Re-land: Compile libupdate_engine_client even when dbus is disabled.

This patch enables libupdate_engine_client with the right backend
even when dbus is disabled.

Bug: 25908638
TEST=`m` on edison-eng and aosp_arm-eng

Change-Id: I929d9bfce0392d1663a569f47cf08ce83030354b
/system/update_engine/Android.mk
e97b39c4140af015f5a2939808cf8ee39bde43a2 20-Jan-2016 Alex Deymo <deymo@google.com> Implement Android UE daemon using brillo::Daemon.

The setup logic for Brillo and Android devices is very similar despite
the differences in the daemon logic and exposed service interface.
This patch reuses the brillo::Daemon derived class and the main()
function from Brillo to implement the daemon and service setup in
Android as well.

In addition, the Chromium OS build now defines the __CHROMEOS__ macro
to make the code behave the same way as in the Brillo case.

Bug: 25631949
TEST=`mmma system/update_engine` on edison-eng and aosp_arm-eng

Change-Id: I0f9690264e0822ef7e71318c73c2f16eda99e07c
/system/update_engine/Android.mk
c003790a466ef06f82af3ebff67da7fcd019f967 24-Jan-2016 Alex Deymo <deymo@google.com> Fix missing dependencies when weave is disabled.

When compiling binder (but now weave) we were missing some
dependencies. This patch adds those to the right place and propagates
them to the executables using those.

Bug: 25908638
TEST=`m` on edison-eng with BRILLO_USE_BINDER=0

Change-Id: I2ddf86dc2f33ff87f079e7776da8256454f36ca2
/system/update_engine/Android.mk
7ff02cf06d1167ca4fa3deb1fb6379acc4e51b0d 22-Jan-2016 Alex Deymo <deymo@google.com> Add back weaved dependencies accidentally removed.

Weave support requires libbinderwrapper and libbrillo-binder,
accidentally removed in CL:197821.

Bug: None
TEST=`mma` with "binder" disabled.

Change-Id: I41c997e95d38f2b70ab322c3ffe9fa3e27a203fa
/system/update_engine/Android.mk
7067445ffbfb87e7b6b07c0a84528f915141e147 23-Jan-2016 Alex Vakulenko <avakulenko@google.com> Revert "Compile libupdate_engine_client even when dbus is disabled."

This reverts commit e66cb48c5f2d141e22d9b5942e85cc35e7b0c636.

Change-Id: I2d9d8b98b8af68016fb7b5383dd71cbb285096a2
/system/update_engine/Android.mk
bdd765e3157a2b04265dcdab0d7a55e747924555 23-Jan-2016 Alex Vakulenko <avakulenko@google.com> Revert "Implement Android UE daemon using brillo::Daemon."

This reverts commit c180400937eac75e8b7119f68d44593713dd4557.

This breaks both AOSP and Chrome OS

Change-Id: Ie9686a4d03a8fd53a614ed1706e3268918c414fb
/system/update_engine/Android.mk
e66cb48c5f2d141e22d9b5942e85cc35e7b0c636 22-Jan-2016 Alex Deymo <deymo@google.com> Compile libupdate_engine_client even when dbus is disabled.

This patch enables libupdate_engine_client with the right backend
even when dbus is disabled.

Bug: None
TEST=`m` on edison-eng and aosp_arm-eng

Change-Id: Ifc6293cc748575800c923f5537c0865463101f32
/system/update_engine/Android.mk
c180400937eac75e8b7119f68d44593713dd4557 20-Jan-2016 Alex Deymo <deymo@google.com> Implement Android UE daemon using brillo::Daemon.

The setup logic for Brillo and Android devices is very similar despite
the differences in the daemon logic and exposed service interface.
This patch reuses the brillo::Daemon derived class and the main()
function from Brillo to implement the daemon and service setup in
Android as well.

Bug: 25631949
TEST=`mmma system/update_engine` on edison-eng and aosp_arm-eng

Change-Id: I15b2c2990a8055619dd407b2996ea92216c602a2
/system/update_engine/Android.mk
78a954ffae03c486324331a016160c8d9b6481d0 22-Jan-2016 Alex Deymo <deymo@google.com> Set default USE flags values as local variables.

Setting variables such as BRILLO_USE_FOO can leak to other makefiles,
so the local default value set by another project can affect the
default behavior. This patch defines local variables with the local
default value for the USE flags.

Also, minor fix to the default value for "binder" in the Chromium OS
side.

Bug: None
TEST=mmma system/update_engine

Change-Id: I47e1300efa1d93ed91c78bef41481a327753483c
/system/update_engine/Android.mk
a93cd53c4f8ab8cb926ed9223373567ebbf45cb6 15-Jan-2016 Casey Dahlin <sadmac@google.com> Introduce brillo binder interface

This is more or less an exact analogue of the DBus interface, but
available over binder. We also add support to the client library and let
update_engine_client build with binder. We don't yet support an
equivalent of the status signal/the HandleStatusUpdate method. That will
come in a future CL.

Bug: 25908638
TEST=Verified update_engine_client functionality

Change-Id: Ic793619c8019b0d50aa184e0f592b6a9ab71e0b0
/system/update_engine/Android.mk
e78e3fb71d9b1586482aa43514c0d6625c0ae197 05-Jan-2016 Tao Bao <tbao@google.com> Add bind() function to the binder interface.

Update engine may have started and done some work before we call
applyPayload(). Add a new binder function bind() to register a
callback function that communicates with the update engine.

Bug: None
Test: 'mmma system/update_engine'.
Change-Id: Iafcdb250904b44f9526be15f0381690df50805a2
/system/update_engine/Android.mk
e119e6ab7edb7226508d49a43b196b44f0c54111 07-Jan-2016 Alex Vakulenko <avakulenko@google.com> update_engine: Switch to use Binder interface to weaved

Now that weaved provides a binder interface for its IPC, switch
to using it instead.

Bug: 23782171
Change-Id: I0b981b366a7dc42aabc9b61c4e9f90e26a2d74b4
/system/update_engine/Android.mk
042f8a1df59750921598394bd145c17950782247 08-Jan-2016 Tao Bao <tbao@google.com> Add a rule for brillo_update_payload.

With the changes to build/core/Makefile, the script will be installed to
$(HOST_OUT_EXECUTABLES) to generate the payload for A/B update.

Bug: 25715402
Test: `mmma system/update_engine` on an Android target on Linux.
Change-Id: Ia3fadae1d4c4b7ba65dc40f68440728e50a2d984
/system/update_engine/Android.mk
f7ead8100211e7a285b48b52f4a235647274ab6e 24-Oct-2015 Alex Deymo <deymo@google.com> Implement update_engine weave commands

The new WeaveServiceInterface abstracs the registration and interaction
with weave whenever present. The compilation and usage of weave is
based on the BRILLO_USE_WEAVE flag.

When enabled, update_engine registers the "_updater" component with
methods to force-check for an update and change channels.

Bug: 24386758
Bug: 24386768
Test: Deployed on edison, weave commands and state available online.

Change-Id: Ic49111772e123b8a2b1971da92fe65785f186ccd
/system/update_engine/Android.mk
ab5bd668f6be600a8cceb8772e426c0aa902a5e1 21-Dec-2015 Alex Vakulenko <avakulenko@google.com> update_engine: Disable RTTI

There is no longer a reliance on RTTI in libbrillo, so disable RTTI
in the rest of Brillo codebase.

Bug: 26292405
Change-Id: Ice1a5787335182ad2aa9d16e393f104128331a2c
/system/update_engine/Android.mk
dbd1711ad6dbd94f7dfd88a78caa5d5b69d61ed7 17-Dec-2015 Ying Wang <wangying@google.com> Fix use of local-generated-sources-dir.

For a host module, you need to specify LOCAL_IS_HOST_MODULE (as well as
LOCAL_MODULE and LOCAL_MODULE_CLASS) before
$(call local-generated-sources-dir).

Bug: 26239768
Change-Id: Ia164f8d0b99b64e21dc3f96fe55e34f2bdb33d23
/system/update_engine/Android.mk
e844c1a5604765bbddafa7e05f1143a27f136747 16-Dec-2015 Casey Dahlin <sadmac@google.com> Port update_engine_client ResetStatus command to lib

This is the first step in getting update_engine_client completely off of
direct DBus calls

Test: Ran --reset_status command and verified update_engine received the
signal.
Bug: 26233663
Signed-off-by: Casey Dahlin <sadmac@google.com>

Change-Id: Iac54d890fd796f91a7813755d6061cf468255347
/system/update_engine/Android.mk
05e0e38c30824b727f3582c90258d9bb19cc3f47 08-Dec-2015 Alex Deymo <deymo@google.com> Compile delta_generator for the host.

Bug: 24619596
TEST=mma on linux.

Change-Id: Icccae2b938b4fdd698b177beee96ffb62e9f63ae
/system/update_engine/Android.mk
1b03f9f983a22fabb8d53e036abf1b192e7d5811 09-Dec-2015 Alex Deymo <deymo@google.com> Move hardware and boot_control implementation to libupdate_engine.

The implementations of the BootControlInterface and HardwareInterface
are specific to the platform and use case. The delta_generator uses the
DeltaPerformer in the libpayload_consumer to apply a payload to a set
of partitions defined as local files, for example.

This patch move the platform implementations, not available when
building for the host back to the libupdate_engine.

Bug: 24619596
TEST=mma

Change-Id: I16ab06c2e53dfd046e693bdb7310ec26a2d69054
/system/update_engine/Android.mk
b09305e7e55d5375647ddf07538dc1a539923e3f 02-Dec-2015 Alex Deymo <deymo@google.com> Compile delta_generator and payload_consumer when "dbus" is disabled.

delta_generator and payload_consumer should not depend on any DBus
library. This patch now builds those even when "dbus" is disabled.

Bug: 25773375
TEST=`mma` on a target with DBus disabled.

Change-Id: Ia44cb9eed847e6d2eeb43a12373929128ae67d1c
/system/update_engine/Android.mk
ab49446e3d08dc8cf8928c3d3b6f292513af5566 30-Nov-2015 Alex Deymo <deymo@google.com> Restrict update_engine SSL certs.

update_engine connects over SSL only with Google servers, so we
restrict the list of SSL certificates to a smaller list, used by
Google.

Bug: 25089263
Test: mma
Change-Id: I73dbbd18dd99a61fa3bd66dbb57d0ff1ab78160d
/system/update_engine/Android.mk
c1c17b4ed6a3896b6343e737fd89682fa0c8436b 23-Nov-2015 Alex Deymo <deymo@google.com> Report Enum metrics from CertificateChecker.

The certificate checker was reporting a "user action" whenever an
update check HTTPS connection or HTTPS payload download had an invalid
HTTPS certificate or a valid one that was changed since the last
connection to the same server.

This patch sends an Enum metric for every HTTPS connection to check for
and update or download the payload with one of the three options: an
invalid certificate, a valid one already seen or a valid but different
certificate.

This patch also moves these metrics to the metrics.{h,cc} module, where
all the other metrics are reported, using an observer pattern in the
CertificateChecker, needed to remove the dependency on the metrics
library from the libpayload_consumer.

Bug: 25818567
TEST=FEATURES=test emerge-link update_engine; mma;

Change-Id: Ia1b6eb799e13b439b520ba14549d8973e18bcbfa
/system/update_engine/Android.mk
560927706bb5f66167a5aee4476822d1cc5232fe 23-Nov-2015 Sen Jiang <senj@google.com> Add bspatch as a dependency of update_engine deamon.

bspatch is used by update_engine for delta update.

Bug: 24478450
TEST=make dist

Change-Id: I448d3d7f64c8ca58ebf9689dfd06a595e9149da1
/system/update_engine/Android.mk
5bdc61b2d899e5f46aa0a89e9cd874d49caf77ba 23-Nov-2015 Tao Bao <tbao@google.com> Revert "Conditionally set dbus group in init rc."

We have dbus group added in commit f7b8cae2ef4fb79473aeede542c9d79a6b5b81c7.

This reverts commit 5029dbb61238eebbd2f94cd946afc2a6bd93bf69.

Change-Id: Ib5c2dfa558c23525a6cfc45726cd3aa9dd6396da
/system/update_engine/Android.mk
5029dbb61238eebbd2f94cd946afc2a6bd93bf69 19-Nov-2015 Tao Bao <tbao@google.com> Conditionally set dbus group in init rc.

Change-Id: I9958b56502ee5eecdb3ca279779c6a66774b88f5
/system/update_engine/Android.mk
cd60dcaab418204aa4c82218d08f0ed2091795f8 18-Nov-2015 Alex Deymo <deymo@google.com> Fix update_engine build for non-Brillo targets.

This patch fixes the build for non-Brillo targets that have dbus
enabled (the default for AOSP).

Bug: None
Change-Id: I8225a25bfd73a1c8bc55a784dcc0624213e61d47
Test: mmma system/update_engine on aosp_arm-eng and brillo targets
/system/update_engine/Android.mk
4218b7ec834a69cf1ad105848a9c4ff6edb9384f 18-Nov-2015 Alex Deymo <deymo@google.com> Disable DBus dependent targets when "dbus" USE flag is not set.

Some targets should not be build when DBus is not enabled, such as the
update_engine_client, the generated DBus proxies and the DBus daemon.

This patch disables those headers and also temporary disables
libpayload_consumer and delta_generator on Android when the "dbus" USE
flag is not set, since they depend on headers that still depend on
DBus.

Bug: 25197634
Test: `mmma system/update_engine` on an android target without dbus.

Change-Id: Ic33dc52c2f910bd526b06663cdbd119a0b8cdfd9
/system/update_engine/Android.mk
9e1eda984560c8aadd394f3c7c40d17b4dfe22ed 17-Nov-2015 Christopher Wiley <wiley@google.com> Add Binder service for update_engine

Bug: 25632204
Test: Compiles, registers with the service manager on aosp_arm-eng

Change-Id: Iaf67a37193958f0a11d9f3d320cd6e93cf6afbef
/system/update_engine/Android.mk
38429cf76aaac8c499004b6f537229a26b381602 12-Nov-2015 Alex Deymo <deymo@google.com> common: Split out metrics utils from utils.cc.

The utility functions to convert error codes and network settings to
the types defined by the metrics framework are split out the utils.cc
file. These tools are only used by the update_engine daemon to report
back metrics on an update check.

Bug: 25197634
Test: FEATURES=test emerge-link update_engine; mma

Change-Id: I589dc9f6056fb1399fa84ca4f44076ed3a6b5365
/system/update_engine/Android.mk
39910dcd1d68987ccee7c3031dc269233a8490bb 10-Nov-2015 Alex Deymo <deymo@google.com> Split payload application code into a subdirectory.

This patch splits from the main libupdate_engine code the part that
is strictly used to download and apply a payload into a new static
library, moving the code to subdirectories. The new library is divided
in two subdirectories: common/ and payload_consumer/, and should not
depend on other update_engine files outside those two subdirectories.
The main difference between those two is that the common/ tools are more
generic and not tied to the payload consumer process, but otherwise they
are both compiled together.

There are still dependencies from the new libpayload_consumer library
into the main directory files and DBus generated files. Those will be
addressed in follow up CLs.

Bug: 25197634
Test: FEATURES=test emerge-link update_engine; `mm` on Brillo.

Change-Id: Id8d0204ea573627e6e26ca9ea17b9592ca95bc23
/system/update_engine/Android.mk
787dc4139768a065cfb5da34dd8c9f6d76fc23df 29-Oct-2015 Alex Deymo <deymo@google.com> Add USE flags to the Android.mk

To help conditionally building parts of update_engine based on
per-product settings, this patch ports the USE flags used in the gyp
to make variables in Android.mk

Change-Id: I4cf5295f812d87c251c32947f0ca6abcc7b10ad6
/system/update_engine/Android.mk
c372ab694cd45c226454037ff8df4b7ff85177e2 29-Oct-2015 Alex Deymo <deymo@google.com> Android.mk: Remove makefile macro and let make resolve transitive dependencies.

The automatic tool to translate android makefiles to the new build
system doesn't handle macros so we remove them here and follow the
Android style of declaring local make variables.

Because of this change, instead of resolving the transitive dependencies
on each gyp target, we create local variables with the "exported" build
settings and include them from the depending targets. This maps more
closely the gyp targets to the Android.mk targets and allow us to make
conditional changes (based on global make variables) to these variables
in a single place. This will be used to compile weave support
conditionally.

Bug: 24386768
Test: mmma system/update_engine

Change-Id: I9cb44b0e1d4e9f7c061e1b1f154d51c04375aaa0
/system/update_engine/Android.mk
4cf1402b6245f1606788b1850b1a9c3571b0d27b 28-Oct-2015 Alex Vakulenko <avakulenko@google.com> update_engine: Fix Android.mk typo.

Missing \ was breaking build.

Change-Id: I5f8f3d6dd04d40fb4a909f608ab2524514854998
/system/update_engine/Android.mk
1bab5a8a47f8e83f4798b0f45d555ad0ffd8e481 27-Oct-2015 Alex Vakulenko <avakulenko@google.com> update_engine: Rename libchromeos into libbrillo

BUG: 24872993
Change-Id: I4cdbec7089552f5c9a0461c09a62e34e055a46bf
/system/update_engine/Android.mk
0bc2611b49aba30202fdb9c23871430eb67e4738 20-Oct-2015 Alex Deymo <deymo@google.com> Move bzip.h to payload_generator.

The in-memory bzip compression and decompression functions are only
used during payload generation and testing. This patch moves those
functions to the payload_generator/ directory and keeps the streamed
version (bzip_extent_writter.h) in the update_engine daemon.

Bug: None
Test: FEATURES=test emerge-link update_engine; `mm` on Brillo.

Change-Id: I78227fdac15df6461b23debb41c72207b22fb5db
/system/update_engine/Android.mk
6eddf26ce30989c0f4812b3b9de17760a40fdea7 16-Oct-2015 David Zeuthen <zeuthen@google.com> BootControlStub: New class used if CreateBootControl() fail.

This can happen if running update_engine on Brillo in the emulator or
other device lacking a boot_control HAL implementation. With this
change, the update_engine process continues to run but updates won't
work.

Bug: 25012817
Change-Id: I03d516c5e9a53c893c376885cd48068cd359e902
Test: update_engine no longer crashes on brilloemulator_arm.
/system/update_engine/Android.mk
856166594771c61973856f563e622ccb7dd48aa1 16-Oct-2015 Alex Deymo <deymo@google.com> Read ProductId, ProductVersion and Channel setting in Brillo.

The ProductId, ProductVersion and current/target channels are specified
in a very different way in Brillo compared to Chrome OS. This patch
moves the logic to read and parse /etc/lsb-release in Chrome OS to a
new image_properties module and implements the equivalent module in
Brillo.

This new module replaces some of the logic previously in the
OmahaRequestParams class, both for parsing the read-only properties
from the rootfs and parsing and storing the target channel in the
stateful partition. The Chrome OS version of the new module keeps the
same behavior, except that it falls back to "stable-channel" if the
the current channel is missing in the rootfs (unlikely in Chrome OS).

On the other hand, the new Brillo implementation reads these settings
from the /etc/osrelease file and /etc/osrelease.d directory and doesn't
allow to override those setting during development. The persisted
target_channel and powerwash_allowed settings are stored in Prefs
as many other settings. Finally, since Brillo images don't contain
a channel name baked in the image, we store the channel name where we
got the image from at the time of the update. The first boot after
provisioning will default to "stable-channel".

Bug: 25013069
Test: unittest in Chrome OS; `mm` and tested on a Brillo device.

Change-Id: Icc114b8098af3edaaba715c9c2e3ebe9f417c876
/system/update_engine/Android.mk
7eb230544109ba53193f0630e3687df3bc91b79d 10-Oct-2015 Alex Deymo <deymo@google.com> Link against libshill-client library.

We had a copy of the generated headers since the tools to generate them
were not ready at the time. This cleanup CL now uses the libshill-client
target to generate these headers.

Bug: None
Test: mmma system/update_engine

Change-Id: I4fe7c418c739349eadfd8d65213850dbdbebd6ca
/system/update_engine/Android.mk
eadab7d02e5815121b0db480ee7c0347800dc4ca 09-Oct-2015 Alex Deymo <deymo@google.com> Android.mk: Sort library dependencies.

The order of the library dependencies in the makefile is important,
since the dependencies should be listed after the libraries using them
are listed.

This patch sorts the libraries in the Android.mk to match the order in
which their equivalent library dependencies are included in the .gyp
file. It also completes the transitive dependencies between targets as
described by the exported deps in the .gyp file.

Bug: None
Test: mmma system/update_engine

Change-Id: Iaa5bd471919902de9c2646502ff9f918bc9a144a
/system/update_engine/Android.mk
16daa08470beb5021b85618f1b3ee214d89e59a1 02-Oct-2015 Christopher Wiley <wiley@google.com> Add DBus hiding client library

This library hides update_engine's legacy DBus dependencies until we
can remove them completely.

Bug: 24547247
Test: mmm system/update_engine; emerge-panther update_engine

Change-Id: I7f87f2a7c31d0940c376ef43368e53b0f3bc3407
/system/update_engine/Android.mk
cc8ce0e3b11ac76412c26c687d11140cbe18ad91 02-Oct-2015 Christopher Wiley <wiley@google.com> Move UpdateStatus and helpers to dedicated files

This allows us to easily share it between the update_engine proper
and a forthcoming client library.

Bug: 24547247
Test: mmm system/update_engine; emerge-panther update_engine

Change-Id: I8c0db7a0f95dd6368bfc886f1b0d1a9d2efb461f
/system/update_engine/Android.mk
2e71f90d6af955a5359853132085931f1e0479e0 30-Sep-2015 Alex Deymo <deymo@google.com> Implement XzExtentWriter.

The new XzExtentWriter class is an ExtentWriter that uses xz-embedded
to decompress an xz stream and write it to the underlying extent
writer. This will be used to implement REPLACE_XZ in a follow up CL.

Bug: 23604708
Test: Added unittests.

Change-Id: Ifd2ba0c917b66ab33e5cff1d6069da833ad54882
/system/update_engine/Android.mk
7599e6cd37cba44d63b3adb278499ced01c81ef0 29-Sep-2015 Scott James Remnant <keybuk@google.com> update_engine: build on non-Linux hosts

BUG=24073089
TEST=mm on Mac host

Change-Id: Ib62bbf48f38be238b73781461b33c301bc08400e
/system/update_engine/Android.mk
263614fbe36363fa7575088e33532d7e98901852 24-Sep-2015 Gaurav Shah <gauravsh@google.com> update_engine: Install payload signing public key

BUG: 23937688
Change-Id: I931a196e207643077185b7bc904744cd42f82c32
/system/update_engine/Android.mk
70141f26d936f40297d7a8483040f1d2f4dc50c0 17-Sep-2015 Gilad Arnold <garnold@google.com> Rename init.update_engine.rc into update_engine.rc.

This follows the current convention for init script naming in Brillo.

Bug: 23186405
Change-Id: If803f6a48bd670a768a6062c88e823c2f81c7ba8
/system/update_engine/Android.mk
92da84d5abf94b1ea04b17769b6978db970f957b 17-Sep-2015 Gilad Arnold <garnold@google.com> Add init.update_engine.rc.

* Creates a directory for persistent data (/data/misc/update_engine).

* Uses --logtostderr to ensure logging to syslog.

Bug: 23186405, 24078351
Change-Id: Id10770274cc6b6084672412e4dcb42528d8fac06
/system/update_engine/Android.mk
ac41a82e4be1be43913292d13d58b5eb2c572f53 16-Sep-2015 Alex Deymo <deymo@google.com> Set default updater URL and version per platform.

Chrome OS and Brillo devices require different production update URL
and updater string ID sent to Omaha. This patch moves these constants
to a platform-dependent file with the definition of the constants.

Bug: brillo:587,brillo:588
Test: FEATURES=test emerge-link update_engine; `mma`; deployed on a dragonboard.

Change-Id: Ibe3b30c32c2fb2caf3ed10a4198272dc13a44d12
/system/update_engine/Android.mk
753fadc8805f662e5af3a66f694207b04fbef8bb 15-Sep-2015 David Zeuthen <zeuthen@google.com> BootControlAndroid: Implement using libhardware.

This simply calls into the a boot_control HAL implementation loaded with
libhardware. I've tested it with the implementation located in
system/extras/boot_control_copy.

The only non-trivial routine here is GetPartitionDevice() which I've
hand-tested on a device using the following snippet of code:

string names[] = {"boot", "system", "nope_enoent"};
for (string name : names) {
for (int slot = 0; slot <= 2; slot++) {
string device;
if (!GetPartitionDevice(name, slot, &device))
device = "NOTHERE";
LOG(INFO) << "slot:" << slot << " part:" << name << " -> " << device;
}
}

Change-Id: I1280325bd7cd4cf1cc9a33ef13c2f46f215da6e6
/system/update_engine/Android.mk
0290c1fb9cf11a8eeecb1520cb86ae7eecf859c1 15-Sep-2015 Alex Deymo <deymo@google.com> Disable update_engine targets for non-linux hosts.

The dependencies of this Android.mk are not defined in mac, even for
the target build, so we can't build update_engine on mac.

Bug: 23084776
Test: `mma` on linux.

Change-Id: I0813d900932155ea5648a60d28350baf9f12771b
/system/update_engine/Android.mk
d5561a5fd2d1a463a6679683897c03da1125b4ac 04-Sep-2015 Alex Deymo <deymo@google.com> Add Android.mk for update_engine targets.

The new Android.mk includes all the targets in update_engine.gyp
defined when not building tests. The targets in the Android.mk file
match what we have in update_engine.gyp. The transitive dependencies
are resolved and made explicit in the Android.mk.

This patch includes the generated DBus headers required to compile
update_engine in AOSP. Some of these headers should be generated by
other daemons once they move to AOSP (in the case of shill) or
their usage should be gated with a define symbol based on USE flags if
they are not meant to be ported over AOSP.

Bug: 23084776
Test: mma

Change-Id: Ic7c2d6d46a36f17f5f45152e4cd773ff2444e787
/system/update_engine/Android.mk