B2G updates can be of multiple types:
- OTA, applied without rebooting the device,
- FOTA with only Gecko/Gaia,
- FOTA with whole system partition files,
- FOTA dumping partitions images.
Each type of updates has its advantages and drawbacks. There is an
extensive documentation maintained on MDN about each and the options:
https://developer.mozilla.org/en-US/Firefox_OS/Building_and_installing_Firefox_OS/Firefox_OS_update_packages
All those updates are being packaged as a MAR file that gets injected
into the classical Firefox update mechanism, submitted to Balrog and
downloaded by the client. The content of the MAR will however depend on
the type of update: an OTA update will packate a Gecko and Gaia set of
files to update those parts; while any FOTA package is just an
update.zip that will get applied in recovery mode on the device.
So one fundamental difference is that OTA will not reboot your device
(just Gecko) while FOTA requires a working recovery mode and will reboot
your device. But OTA needs more system partition space to get applied,
and it can only update files that are within the /system/b2g/ directory.
FOTA on the other hand can update anything since the payload will
contain an update script written in Edify (Android recovery update
scripting language).
For each device we might need to produce several types of updates that
will be pushed to users depending on the context: for some users we want
to push just a Gecko/Gaia update, for some we know that we need to
update more content and thus we need to send some partitions.
Previously, the b2g_build.py script would only allow one kind of update
payload to be produced for each device available: we would need to have
a device "flame-kk-ota" and "flame-kk-fota" just to produce the OTA and
FOTA packages for the same device, thus resulting in a waste of
computing power and storage.
This commit introduces a new field "update_types" that can take an array
of values:
- ota, to produce an OTA package as before
- fota, to produce a FOTA package with only Gecko/Gaia
- fota:full, to produce a FOTA package of all files of the system
partition
- fota:fullimg, to produce a FOTA package dumping partitions
The old "update_type" will be used in the absence of "update_types". And
if none are present, we will keep defaulting to generating OTA as
previously.
This adds test configs for desktop linux64 unittests, including: mochitest-plain,
mochitest-browser-chrome, mochitest-devtools-chrome, reftest and xpcshell. It
also does a minor refactor of the b2g configs to remove some b2g-specific logic
from the base 'test.yml' config.
This does *not* schedule these tests anywhere just yet.
--HG--
extra : commitid : HdWat17LZNb
extra : rebase_source : 456b0261fc06131e22d8d5a37adf12f090abe5bd
This adds test configs for desktop linux64 unittests, including: mochitest-plain,
mochitest-browser-chrome, mochitest-devtools-chrome, reftest and xpcshell. It
also does a minor refactor of the b2g configs to remove some b2g-specific logic
from the base 'test.yml' config.
This does *not* schedule these tests anywhere just yet.
--HG--
extra : commitid : 3wjUmgfi1se
extra : rebase_source : 1369d5b3fcfb5e6e351c8384187772dae52f341f
extra : amend_source : 47f9574b013bfb892713a52d9377655eb9040608
We don't run free commands from tasks, we now allow only scripts shipped
in the phone-builder image.
We also added support to an allowed whitelist of github and bitbucket
users to run tasks from their respective private repositories.
--HG--
extra : commitid : 6NA1M4JKjCQ
This generally makes the approach look more like that for desktop-build. The
major difference is that `bin/test.sh` takes arguments which are passed on to
the mzoharness script (MOZHARNESS_SCRIPT) with the addition of config
arguments (MOZHARNESS_CONFIG)
--HG--
rename : testing/docker/desktop-build/bin/build.sh => testing/docker/desktop-test/bin/test.sh
rename : testing/docker/desktop-test/mozharness_configs/remove_executables.py => testing/mozharness/remove_executables.py
extra : commitid : GyMeTBpCwm8
extra : rebase_source : 1a61f9bc32066ad6f9fce504d3e8ac67e39b105d
RELENGAPI_TOKEN is no longer needed, with the advent of the relengapi proxy.
TOOLTOOL_CACHE has a reasonable default (and why would you want to change
that, anyway?)
--HG--
extra : commitid : 9Gn9KVVehsc
extra : rebase_source : edb6e3ec5a14baeab8146d890595cafcacdb4d03
As the aws command line tool call is piped, its status is lost, but the
net result is an empty variable assigment. We take advantage of this to
detect errors in the aws tool.
--HG--
extra : commitid : 8eTLV5FXxdp
Messing up with shared cached object directories for different branches
often triggers build bustage. Make the object directory unique for each
branch.
Messing up with shared cached object directories for different branches
often triggers build bustage. Make the object directory unique for each
branch.
--HG--
extra : rebase_source : cf9b2f774133b17731c0bd125eccd1dbe8295d4e
This requires doing some cleanup of permissions on the cache mounts first;
eventually, this should be done by the docker-worker.
--HG--
extra : commitid : 6pnyoQeGrRX
extra : rebase_source : caa1dc4df3f0fc9ab26a55088749d85f5a52145a
This required moving the custom mozharness configs out of the builder image
(which puts them in ~, where mozharness no longer looks) and moving them into
mozharness itself.
--HG--
rename : testing/docker/desktop-build/configs/disable_signing.py => testing/mozharness/configs/disable_signing.py
rename : testing/docker/desktop-build/configs/platform_supports_post_upload_to_latest.py => testing/mozharness/configs/platform_supports_post_upload_to_latest.py
extra : commitid : 8FSj0uwFfbE
extra : rebase_source : 949bb94ca58324444981b81e9e9640ab00d63196
extra : amend_source : 40152e06e587728500800de02a437389038fe6ea
extra : source : e3c15b9f89b3c331805b4f1a83f62805f32bbb9a
When we ./build.sh blobfree, we have a new zip file called
<target>.blobfree-dist.zip which contains a blobfree image. We copy this
file to public artifact.
We also refactor the build scripts a little bit to deduplicate the post
build code.
--HG--
extra : commitid : JU2n5YDGBfa
checkout-gecko already clones gecko, tell mozharness to clone from it.
--HG--
extra : commitid : w0KlGHRSpF
extra : rebase_source : 2a80c203120085271a3bdfe4f7a1fa38d0eb1d30
Mozharness now lives inside gecko tree, so switch B2G builds to use it.
--HG--
extra : commitid : JZLuGcu0RRM
extra : rebase_source : 06dbe78a6ad86e77f52f2f19f7c1be9133ea4f9d