* changes:
page load perfomance improvements... remove the lists.js file from the <head>, which slows down page load a lot (over 300K), and instead load it dynamically on page load. also remove navtree_data.js from the <head>, which also slows the load and is only used in the reference when in tree view. This file is now loaded during the initialization of the nav tree.
Instead of storing the whole recovery image in system in order to
flash it on first boot, we instead use an imgdiff patch from the boot
image to create the recovery image. This is substantially smaller
since it effectively only stores the recovery binary and UI images
(the kernel and the init binary are identical to that of the boot
image).
This change modifies the OTA-building script to create and install
these patches, and changes the calculation of the system image size in
the Makefile to reflect the new scheme.
Make some changes needed to applypatch in order to store the recovery
image in the system partition as a binary patch relative to the boot
image:
- make applypatch use shared libraries, so it's smaller. It will
need to be on the main system so it can install the recovery
image. Make an applypatch_static binary for use in recovery
packages (still needed for updating cupcake devices to donut).
- output the results of patching to an in-memory buffer and write
that to the partition; there's no convenient /tmp for us to us.
(This should be basically a no-op in recovery, since /tmp is a
ramdisk anyway.)
@since tags in the code, it's pulled from the API XML files also used by
apicheck.
The code now reads the apicheck XML, and applies it's versions to the DroidDoc
class models. The models output the version to HDF, and that's picked up by
the CS templates.
The clearsilver templates will be changed to be pretty in a follow up change.
Conflicts:
tools/droiddoc/src/DroidDoc.java
Adds a zip mode ("-z") to imgdiff to construct efficient patches for
zip files (including jars and apks). We identify the regions within
the zip file containing deflated data, and when a corresponding file
can be found in the source zip, a patch is generated for the
uncompressed version of the data.
The GZIP chunk type is replaced with a DEFLATE chunk type that handles
a raw deflated data stream. This new DEFLATE chunk can be used for
both gzipped pieces (as found within boot and recovery images) and zip
files (apks, etc.) The gzip header and footer are handled by NORMAL
chunks on either side of the main DEFLATE chunks. (Typically these
tiny NORMAL chunks will get merged with adjacent chunks, so the number
of output chunks is unaffected.)
Add a test script that tests the generate-apply cycle on all the zips
and images within a pair of full OTA packages.
Improve the speed of incremental OTA install by treating unchanging
gzip chunks as normal chunks, avoiding a decompress/recompress cycle.
This reduces the time needed to apply a patch to a boot image where
the kernel has not changed from ~30 seconds to ~2 seconds, on an opal.
SignApk fixes the timestamp of the signature files it adds. Use that
same timestamp for all the files, so that the modtime doesn't vary
from build to build. (Incremental OTAs currently spend significant
time rewriting every .apk to do nothing but patch in timestamp
changes.)
If the source target-files zip omits files needed to build the
recovery and/or boot images, leave them out instead of dying with an
error. This lets build like "generic-userdebug" work.
Generic targets don't have a list of defined bootloaders. Instead of
failing to build an OTA package, just omit the constraint.
Fix bad references to ExternalError.
Split the details of generating script syntax into a generator class:
one for amend (whose output should be equivalent to the current
output), and one for edify.
Fix 'otatools' build rule to build imgdiff.
The ota and img building scripts contained some hardcoded 'linux-x86'
paths. Remove and replace with a slightly redefined -p option.
Modify Makefile to pass correct -p when building.
In python 2.5 and earlier, ZipFile.writestr(filename, data) results in
the file being added to the archive with permissions 000. (See
http://svn.python.org/view?view=rev&revision=65235.) Work around this
by creating a ZipInfo object and setting the permissions explicitly.
Merge commit '5eb5832751cad87021b9f1ad77f1c26952030884' into donut
* commit '5eb5832751cad87021b9f1ad77f1c26952030884':
AI 149839: make the home page's announcement block expandable...
primarily, this is to handle various lengths of text due to translations,
but also allows us to be more flexible WRT the content for the top section.
Automated import of CL 149839
Turn the bulk of applypatch into a static library so it can be used
from the updater. Also build it as a standalone executable for use by
the existing OTA mechanism.
Change signapk to not propagate other signatures to the output
archive. Multiple signatures seem to confuse the package manager, as
we saw with Maps, and other partners are checking in prebuilt APKs for
google experience devices signed with random other things.
remove the lists.js file from the <head>, which slows down page
load a lot (over 300K), and instead load it dynamically on page load.
also remove navtree_data.js from the <head>, which also slows the load
and is only used in the reference when in tree view. This file is now
loaded during the initialization of the nav tree.
Modify applypatch to be able to write MTD partitions as well as read
them. Make applypatch save a backup copy of the contents of an MTD
partition it reads in cache, to be used in case an update is
interrupted while writing back to MTD. Modify OTA package creation
script to send boot image updates in patch form.
* changes:
Implements the basic structure for providing localized documentation; the site tabs are now in a separate file to ease the translation process, the language selection menu has been added to the header, scripts have been added to dynamically switch the language of the site tabs and dev guide side navigation and save the language preference in a browser cookie, and some of the functions in macro.cs have moved into customization.cs.
the site tabs are now in a separate file to ease the translation process,
the language selection menu has been added to the header,
scripts have been added to dynamically switch the language of the
site tabs and dev guide side navigation and save the language
preference in a browser cookie,
and some of the functions in macro.cs have moved into customization.cs.
patch 2:
revised the logic for changing tab and nav languages so that,
in the event that a SPAN node exists for the newly selected language
but the translation has not actually been put there, it will not be selected
and the previously selected language will remain for that node.
patch 3:
revised the logic introduced in patch 2, which, when loading a new page
would actually reveal all languages if the selected language had no
translation. Now, we must loop through each occurance and check whether
a translation is available. If not, then we hide it and show English.
patch 4:
small error fix
Allow an MTD partition so serve as a source "file" in applypatch,
using a magically-formatted 'filename' that specifies the partition
name, size of data to read, and expected hash. Build incremental OTAs
that update the recovery image via a patch.
Use minigzip (from the zlib distribution, built in the android tree)
to compress images rather than the system install of gzip. This will
let us send useful patches for images since we can make zlib available
in the applypatch program.
Images (like boot and recovery) consist of large sections of gzipped
data interspersed with other data. To do effective binary patching of
these files, we need to apply patches to the gzipped parts in
'uncompressed space', that is, we decompress, apply a patch, then
recompress to obtain the desired output.
This change defines a new format with these patches, which is
basically a description of how the source and target files are to be
divided up into chunks and a bsdiff patch for each chunk. We add a
new host executable, "imgdiff", for generating these patches from
source and target images, and add support in applypatch for
recognizing this format and applying it on the device.