With this change it is possible for vendors to create rules that depend on
targets defined in Android.mk files.
This makes it easier to decouple functionality from the core buildsystem.
Very much as is done within the build git for tasks like creating SDK addon,
Generating eclipse .classpath file etc can then be done for vendors as well.
You can add targets that could perform poststeps on produced modules.
E.g. Do static verification or documentation on modules of a certain type.
You can e.g. create a target that would resign and upload all apks to a
binary repository.
Change-Id: Ic0fa7b60b919ede3c59fa2885d1fd4be1e928c04
Merge commit '4038bbc426776d8adc57d7c3c8123357b50b1615'
* commit '4038bbc426776d8adc57d7c3c8123357b50b1615':
Don't build update zip package if there is no kernel, or it's generic device.
Merge commit '09a00a672bb18dccc97af6090739ea275c39d8a3' into gingerbread-plus-aosp
* commit '09a00a672bb18dccc97af6090739ea275c39d8a3':
Don't build update zip package if there is no kernel, or it's generic device.
Move the update package code block forward to be side by side with the ota package code,
so that they are built under the same condition.
Bug: 3116070
Change-Id: I8055909cc614bfbeee215d1b770a80f728e326ee
As the sdk.git project is branched differently from the rest
of the platform, it's important to be able to control what
goes in the tools folder of the SDK on a per-branch basis.
Right now development/build/sdk.atree control what goes in
the tools folder (coming almost only from sdk.git) which causes
problems when the development.git and sdk.git branches are not
in sync.
Change-Id: I9158501cd68783d593e49e5fdea7f17d19b0120f
Merge commit 'ffd5087ec81a281b1299048b4282dad593ccd703' into gingerbread-plus-aosp
* commit 'ffd5087ec81a281b1299048b4282dad593ccd703':
Use the new sdk/build/tools.atree.
Merge commit 'bb2b82bd557b157fea5e280ef50ee782d15ac032' into gingerbread-plus-aosp
* commit 'bb2b82bd557b157fea5e280ef50ee782d15ac032':
Fix userdata partition's ext4 mount point to data.
As the sdk.git project is branched differently from the rest
of the platform, it's important to be able to control what
goes in the tools folder of the SDK on a per-branch basis.
Right now development/build/sdk.atree control what goes in
the tools folder (coming almost only from sdk.git) which causes
problems when the development.git and sdk.git branches are not
in sync.
Change-Id: Ia0b0ea37f8a4904b3a7f7805a552eeb499a2c0ee
Merge commit 'e7874c430895b9a4e631c89f1e7729da9264d167' into gingerbread-plus-aosp
* commit 'e7874c430895b9a4e631c89f1e7729da9264d167':
Integrate dexpreopt into the build system.
Merge commit 'c0434ac8b504df8a2f2a2828dc9b3f804c3dda72' into gingerbread-plus-aosp
* commit 'c0434ac8b504df8a2f2a2828dc9b3f804c3dda72':
add recovery.fstab as dependency so it triggers rebuild (do not merge)
Make recovery image depend on the fstab file so it gets rebuilt when
fstab changes. Add support for "emmc" fstab partition type to
edify_generator.
Change-Id: Ic5df4e86c24321bf7d82a644e3e4770352e4f64b
Include the recovery.fstab file in the recovery image. Remove the
global fs_type and partition_type values from the target-files
key/value dict, and parse the recovery.fstab file instead to find
types for each partition.
(Cherrypicked from gingerbread w/some edits to resolve conflicts.)
Change-Id: Ic3ed85ac5672d8fe20280dacf43d5b82053311bb
Merge commit '258bf46ea6bb4f25d01fab1b783238589e5bbec4' into gingerbread-plus-aosp
* commit '258bf46ea6bb4f25d01fab1b783238589e5bbec4':
support for per-partition fs_type (do not merge)
Include the recovery.fstab file in the recovery image. Remove the
global fs_type and partition_type values from the target-files
key/value dict, and parse the recovery.fstab file instead to find
types for each partition.
Change-Id: I35ee2dd0989441dc2a704b63c1b32e598049acb5
Merge commit '918ccff37260270d0eef3a3a7bfc2410c46d931a' into gingerbread-plus-aosp
* commit '918ccff37260270d0eef3a3a7bfc2410c46d931a':
consolidate target_files metadata into one key-value file
Instead of separate files for recovery api version, tool extensions,
and mkyaffs2 options, put those all in the generic key-value file.
Change-Id: Ib642311632844d52e4895fd4747093fc7e86232d
Merge commit 'c77a9ad444d49e2ad777678cf5671f0a94f44ffb' into gingerbread-plus-aosp
* commit 'c77a9ad444d49e2ad777678cf5671f0a94f44ffb':
store user-visible image sizes in target-files
Do the yaffs-specific adjustments to image sizes in common.CheckSize,
instead of baking it into the image size stored in the target-files
package. Remove the special fs_type flag and fold it into the
"info_dict" we have for saving key-value pairs from the build system.
Change-Id: I6e63f3330f6277d9a946b22e66cadeb51203ba14
Merge commit '8e8ff4cad905a5b4eed7659152f075f9a5c038b1' into gingerbread-plus-aosp
* commit '8e8ff4cad905a5b4eed7659152f075f9a5c038b1':
support for ext4/EMMC in target_files and OTA generation
Move the image sizes into a more generic key-value file. Make them
optional. Add additional key/value pairs describing what kind of
filesystem the device uses. Pass new fs-type-related arguments in
edify scripts when mounting and reformatting partitions.
Don't include all the init.*.rc files from the regular system in
recovery -- they aren't needed, and break recovery on some devices.
Change-Id: Ic1c651f754ed00ba1cffe8cf56c43f7f3b0ebfd7
Merge commit '671f5fb09f3510c16f73049cad9d8d6d652eaad8' into gingerbread-plus-aosp
* commit '671f5fb09f3510c16f73049cad9d8d6d652eaad8':
Don't increase partition size for ext4 user images. [DO NOT MERGE]
Merge commit 'bc84329757c6b79e1f10c418057e599ee106135c'
* commit 'bc84329757c6b79e1f10c418057e599ee106135c':
remove the system board name from the build fingerprint
Merge commit '135a120e3904d782623e4a3fc958ed098e8de384' into gingerbread-plus-aosp
* commit '135a120e3904d782623e4a3fc958ed098e8de384':
remove the system board name from the build fingerprint
Merge commit '659adc0b54e40b3b194c84ad4ac8d2e775276e60' into gingerbread-plus-aosp
* commit '659adc0b54e40b3b194c84ad4ac8d2e775276e60':
Change "make PRODUCT-XXX-tests" to build only tests-build-target
So that the build server can run the following command to build and dist only the two packages:
make -j16 tests-zip-package userdataimage-nodeps dist showcommands TARGET_BUILD_VARIANT=tests TARGET_PRODUCT=passion
Change-Id: I03d7049582ec8537a389e80b7ecdcae6625222ea
Merge commit '570a0eeffb4c06084f21a058efb25271bb0cd1f6' into gingerbread-plus-aosp
* commit '570a0eeffb4c06084f21a058efb25271bb0cd1f6':
Dist userdataimg and tests-zip-package for tests builds
So that the build server can run the following command to build and dist only the two packages:
make -j16 tests-zip-package userdataimage-nodeps dist showcommands TARGET_BUILD_VARIANT=tests TARGET_PRODUCT=passion
Change-Id: I03d7049582ec8537a389e80b7ecdcae6625222ea
Merge commit '8f731bb2720475f652cc8c5849d564246b234bef'
* commit '8f731bb2720475f652cc8c5849d564246b234bef':
Revert "Allow properties with spaces in their values"
Merge commit '0545c9160d0d3dde4675184609cc7656de5558b0' into gingerbread-plus-aosp
* commit '0545c9160d0d3dde4675184609cc7656de5558b0':
Revert "Allow properties with spaces in their values"
Remove the remaining (unused and untested) support for generating
amend scripts. This means that you won't be able to OTA directly from
cupcake to gingerbread.
Change-Id: Iaf5295db92a42b336960d05295f48b67cb729337
Merge commit '54b8b436a380b053772110796642c7e5e6ba8e64'
* commit '54b8b436a380b053772110796642c7e5e6ba8e64':
Allow properties with spaces in their values
Merge commit 'de3bfade571033b01fbaccac2f0fdf7193e8d3ee' into gingerbread-plus-aosp
* commit 'de3bfade571033b01fbaccac2f0fdf7193e8d3ee':
Allow properties with spaces in their values
This way, such properties can be set in product definition files
instead of having to live in system.prop, which eliminates the need
for system.prop
Change-Id: I25d9665f65436df8215940e46380deb31b8161ba
Merge commit '485bd44d0d78f9f612075e17db1adb281741c84f'
* commit '485bd44d0d78f9f612075e17db1adb281741c84f':
Fix mkyaffs2image extra flags in the release tools.
Merge commit 'd421f57d22009e4d9ce71298c2f93636ff9e7d9d' into gingerbread-plus-aosp
* commit 'd421f57d22009e4d9ce71298c2f93636ff9e7d9d':
Fix mkyaffs2image extra flags in the release tools.
Merge commit 'f11fc5f098ab8481887cbbbbb4246f63837b61c9'
* commit 'f11fc5f098ab8481887cbbbbb4246f63837b61c9':
Disable building OTA package if there is no kernel.
Merge commit 'fb0a347b747a91173c8a9f845a0362e3f8a9701f' into gingerbread-plus-aosp
* commit 'fb0a347b747a91173c8a9f845a0362e3f8a9701f':
Disable building OTA package if there is no kernel.
Merge commit '68bb65177cc6839e985c0a54343f44494de61d62' into gingerbread-plus-aosp
* commit '68bb65177cc6839e985c0a54343f44494de61d62':
Show command lines run by releasetools.
Merge commit '065521be4fd6965058fbd599bb43fe13101fee7c' into gingerbread-plus-aosp
* commit '065521be4fd6965058fbd599bb43fe13101fee7c':
Backport ext4 support from master [DO NOT MERGE]
Merge commit 'ad3cf5f868fc36de0a4fa501f074d35a94496b27' into gingerbread-plus-aosp
* commit 'ad3cf5f868fc36de0a4fa501f074d35a94496b27':
Restore OTA for crespo. [DO NOT MERGE]
Merge commit '60d1ee3e539e02ba701b9ff647fd23aca18f890d' into gingerbread-plus-aosp
* commit '60d1ee3e539e02ba701b9ff647fd23aca18f890d':
Better way to disable OTAs for crespo - DO NOT MERGE
Merge commit '7daa91323139fa7c0435a07b0e3fad6056d0954b' into gingerbread-plus-aosp
* commit '7daa91323139fa7c0435a07b0e3fad6056d0954b':
Disable OTA for crespo [DO NOT MERGE]
Change-Id: I5147d687750a50cfc186e99a9a8c88d3b2eb1692
If PRODUCT_PROPERTY_OVERRIDES has set default locale, buildinfo.sh skips setting them.
http://b/issue?id=2243115
Merge commit '84843e6843f0429f0729deb5670c22da0dcc5507'
* commit '84843e6843f0429f0729deb5670c22da0dcc5507':
Fix event-log-tags so we don't rebuild framework.jar because of an installclean.
Merge commit 'd7324cc356e9c67d878d156ca81928ab2ef220f5' into gingerbread-plus-aosp
* commit 'd7324cc356e9c67d878d156ca81928ab2ef220f5':
Fix event-log-tags so we don't rebuild framework.jar because of an installclean.
Produce an event logs tag file for everything we know about, in order
to properly allocate numbers. Then produce a file that's filtered
for what's going to be installed.
Change-Id: Id0778aec0b4d045e8ff91ba2c9c8265e860eaba5
Merge commit '0fd96df49ccecbf3628c95dabf3b94dfc27323e5'
* commit '0fd96df49ccecbf3628c95dabf3b94dfc27323e5':
Refactor Stripper. Allow a stripper other than SOSLIM to be specified
Merge commit '39a6a64471b28032d2037d9472d58dc0a77ef313'
* commit '39a6a64471b28032d2037d9472d58dc0a77ef313':
Create systemtarball either with bz2 or gz
Merge commit 'd05a47c00ec3595b25ef9f46cd8b825cd35a8dca'
* commit 'd05a47c00ec3595b25ef9f46cd8b825cd35a8dca':
Add $(TARGET_DEVICE_DIR)/system.prop to be a prerequisite
If $(TARGET_DEVICE_DIR)/system.prop exists, it should be
a prerequisite of $(INSTALLED_BUILD_PROP_TARGET),
as the following rules state.
Change-Id: Ie395b6f08cef198c3f5c733a5b6ae5a458335a9c
Move the image sizes into a more generic key-value file. Make them
optional. Add additional key/value pairs describing what kind of
filesystem the device uses. Pass new fs-type-related arguments in
edify scripts when mounting and reformatting partitions.
Don't include all the init.*.rc files from the regular system in
recovery -- they aren't needed, and break recovery on some devices.
Change-Id: I40e49e65f0d76f735259e4b4fef882322cd739da
Merge commit '068986605b2afcd5e044b62f22ac6ecd5c15b519' into gingerbread
* commit '068986605b2afcd5e044b62f22ac6ecd5c15b519':
A nothing-to-do build should do nothing.
commit 7401608f3b9b52b3348e32ec9fefe7583d6c2fa4
Author: Guang Zhu <guangzhu@google.com>
Date: Fri Apr 23 11:54:37 2010 -0700
collect emm meta files for emma instrumented build
when doing 'make dist', with EMMA_INSTRUMENT on the coverage.em files
generated for each module will be collected into one emma_meta.zip file
Change-Id: I382c39a97005e6cae5c79ad7eaef1c8857f658af
commit 8376d70938f6507d54b66fe5832a637aa883974e
Author: Guang Zhu <guangzhu@google.com>
Date: Wed Mar 10 15:48:03 2010 -0800
enhancement for building app with emma code coverage
* global filter to avoid applying instrumentation on emma classes
* remove local variable information at dex step instead of compile time
Change-Id: If04c27bc717f34816077a98ead9ceb0dbcbb0d2f
Change-Id: I971bd0f291bede2568b21347247d37a7d035c661
when doing 'make dist', with EMMA_INSTRUMENT on the coverage.em files
generated for each module will be collected into one emma_meta.zip file
Change-Id: I382c39a97005e6cae5c79ad7eaef1c8857f658af
- envsetup.mk & config.mk: we define a new BUILD_OS and a minimal set
of things like BUILD_OUT to be able to use some local tools when
doing cross-compilation. This allows us to use the Linux version of
ACP when cross-compiling the tools to Windows.
- Makfile: include windows_sdk.mk when needed to build a Windows SDK.
- main.mk: support a win_sdk target (e.g. PRODUCT-sdk-win_sdk)
(Merge master Change I9d08d0df)
- envsetup.mk & config.mk: we define a new BUILD_OS and a minimal set
of things like BUILD_OUT to be able to use some local tools when
doing cross-compilation. This allows us to use the Linux version of
ACP when cross-compiling the tools to Windows.
- Makfile: include windows_sdk.mk when needed to build a Windows SDK.
- main.mk: support a win_sdk target (e.g. PRODUCT-sdk-win_sdk)
Change-Id: I9d08d0df598b8a7292532d23c55f48101a95a240
Store a dump of the desired uid/gid/mode for every system file in the
target_files zip. Modify ota_from_target_files to use this stored
information when it is available, instead of running fs_config from
the current client (which might be out of sync from the one where the
target_files zip was built).
b/2516887 - New android_filesystem_config.h needed
Change-Id: I8409a0265d1d50daad9c2bc033c99b74b8931b20
This allows to explicitly deal with situations where we
want to use PRODUCT_COPY_FILES to manage overrides.
Change-Id: I2f87862e19b973f090099f335e9bdeb0c9f3bfe9
This allows "make dist" to work on that configuration.
A better fix would be to allow each product to specify
whether it's an emulator target or a device target, and
to adapt to that, but that'd be a lot more intrusive.
Change-Id: I47708025204a4991466abceb1708a3020a543238
Setting LOCAL_CERTIFICATE to "EXTERNAL" now marks an apk (either a
prebuilt or otherwise) as needing the default test key within the
system, but one that should be signed after the target_files is
produced but before sign_target_files_apks does the rest of the
signing. (We use this to ship apps on the system that are signed by
third parties, like Facebook.)
Construct the /system/etc/event-log-tags file by unioning together any
*.logtags files included in LOCAL_SRC_FILES throughout the system (with
appropriate error checking for dup tag numbers, etc.)
For java packages, generate a java source file from the logtags file for
that package that contains static integer constants for each tag name.
Merge commit '1ae988040777f88f766fc421af79a61175e917af' into eclair
* commit '1ae988040777f88f766fc421af79a61175e917af':
Change where makefile looks for sdk_clean.sh
BoardConfig.mk typically defines TARGET_CPU_ABI to the name of the
native machine code CPU ABI supported by the target device. For example,
existing devices today use the value 'armeabi' corresponding to an
ARMv5TE instruction set with soft-float implementation.
This patch allows this file to also define TARGET_CPU_ABI2 to name
a secondary (minor) CPU ABI also supported by the device. This is useful
when the main ABI is ARMv7-A (identified as 'armeabi-v7a') which also
supports ARMv5TE. Such devices should have TARGET_CPU_ABI defined to
'armeabi-v7a' and TARGET_CPU_ABI2 defined to 'armeabi'.
TARGET_CPU_ABI2 will be translated into the ro.product.cpu.abi2 property
in build.prop. This value will be used by the PackageManager to handle
"fat-binaries" generated with the NDK.
Store the location of the releasetools extensions in the target-files
zip, and make ota_from_target_files use that stored location by
default (though it can still be overridden with -s if desired).
Make BoardConfig.mk store the size of the partition rather than the
maximum size of the image that can be flashed there, because the
function used to do the conversion isn't available when BoardConfig.mk
is read any more.
Merge commit '1e96ac8430da922332e4c85e7eed0e95442ff2ce'
* commit '1e96ac8430da922332e4c85e7eed0e95442ff2ce':
Make the recovery.img construction (from boot.img) logic depend on whether recovery.img was installed.
The SDK build doesn't have recovery, don't try to generate a patch or
include it in the system image size calculation. Also there's a
dependency on bsdiff that was omitted.
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.)
When I moved the building of the recovery image upwards in the file, I
moved an 'endif' surrounding it but not the matching 'if'. How did
this ever work?
There are currently two errors in the way we test the size of built
images against the size of the partition on the hardware:
- the limits in BoardConfig.mk are set with the data size only, but
images contain an extra 64 bytes per 2048-byte page. This means we
think the partition is about 1/32 smaller than it really is.
- when we deliver a build via OTA, the system partition ends up with
one more file than when it's flashed via fastboot. That file is a
copy of the recovery image. In order to be able to OTA a build, we
need to make sure the system partition has enough room for all the
system files plus the recovery image as well.
For the kila system partition, these errors are roughly the same order
of magnitude -- about 2MB, one in the "safe" direction, one in the
"unsafe" direction. This change fixes both to give us a more accurate
notion of how close we are to the limit.
Make the build emit a warning (but not fail) when the size is within
32kb of the limit.
Also, include the values of the partition size limits in an info file
in the target-files package, so post-processing tools can use them
without parsing the BoardConfig.mk file.
When building an OTA package, TARGET_RELEASETOOLS_EXTENSIONS can be
set (in BoardConfig.mk) to specify where the device-specific
releasetools code is located. (The default location is the common
directory for the device's vendor.) The TARGET_OTA_SCRIPT_MODE can be
used to override the default script mode ("auto") for a particular
device.
Non-HTC devices may have multiple files constituting their "radio
image". Generalize the INSTALLED_RADIOIMAGE_TARGET variable a bit:
initially define it as empty, then let AndroidBoard.mk files add to
it. Provide a convenience function add-radio-image for them to call
to add files. Put all those files into the target_files zip for use
in OTA and fastboot package construction.
Note that for HTC devices, this changes the name of the radio image in
the target_files zip: instead of "RADIO/image" it will be
"RADIO/radio.img". Tools that use the target_files zip will need to
be changed.
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.
Merge commit '1a28c1a4c1ad0c4adf0c63bb36f47394e9509360'
* commit '1a28c1a4c1ad0c4adf0c63bb36f47394e9509360':
remember in the target-files package what version of the API recovery uses
Some devices define a BOARD_KERNEL_BASE argument which must be given
as an argument to mkbootimg when building a bootable image. Store the
value of this var (if any) in the target-files zip and use it when
building images.
The SDK build used to have the update package as a dependency, in
order to force various image files to be built. Now the the update
package can't be built for sdk-eng, list the individual images needed
instead.
Merge commit 'cf348b97bdb52b7ffe7be0d17318b1fda425a211'
* commit 'cf348b97bdb52b7ffe7be0d17318b1fda425a211':
use releasetools scripts to build update and OTA packages
Merge commit '0347423753fb5d7207aa1ea93a8429f59468eb41'
* commit '0347423753fb5d7207aa1ea93a8429f59468eb41':
build 'updater' binary for use in OTA packages
Add VpnServices to PRODUCT_PACKAGES.
Merge commit '8b70e8c6574e6e6e80aaa84fe1a9426995fa0a78'
* commit '8b70e8c6574e6e6e80aaa84fe1a9426995fa0a78':
use minigzip instead of system gzip in the build
Use zlib's minigzip utility, built as part of our source tree, instead of
whatever installation of GNU gzip happens to be on the user's machine.
Using zlib's deflater, which is nicely available as a library (unlike
GNU gzip's deflater) will ultimately let us do binary patches to the
boot and recovery images.
- rename the directory and zip file
- make it build to the dist directory
Original author: joeo
Merged from: //branches/cupcake/...
Automated import of CL 145850
Original change by joeo@abreu on 2009/04/06 19:54:13.
Implement SDK add-ons in the build system.
- Add an option to use the standard javadoc doclet instead
of droiddoc, since droiddocs non-sdk templates aren't
ready for prime time.
- Add the notion of a stubs for a library. It's only
implemented for java libraries, but when we do native
libraries in the NDK or sdk-addons, it will work there too.
Original author: joeo
Merged from: //branches/cupcake/...
Automated import of CL 145618