delta_generator now has a dependency on libfec.so [1], for generating
A/B incrementals.
[1] https://android-review.googlesource.com/c/platform/system/update_engine/+/854154
Bug: 122280472
Test: `m -j otatools-package` with aosp_marlin-userdebug. Check that
`otatools.zip` contains libfec.so.
Change-Id: Ia6642bb2c7ccb0f89ad3079bdf65e4dbffee13f5
This is just a hash of the current.txt and system-current.txt right now,
though it may expand to include other API surfaces in the future.
Once prebuilts/sdk/current is populated with api_fingerprint.txt files,
we can use those for unbundled builds, but until then, just use the
PLATFORM_PREVIEW_SDK_VERSION as a placeholder.
MD5 was just the most convenient, since we don't have a sha tool that we
can use on Mac currently. I'm hoping we can get a toybox-based tool in
the future that standardizes that, but we aren't currently using sha*sum
from toybox on Linux, much less on Darwin yet.
Test: m dist out/dist/api_fingerprint.txt
Test: m out/target/product/.../system/build.prop
Change-Id: If69f270560d05135cb81a9bb2d1b208ea78f86df
Native tests (BUILD_NATIVE_TEST) use their own MODULE_CLASS.
Check for it when selecting the linker for ASAN.
Test: build a native test, readelf -l <test> | grep linker
Change-Id: I34ca8c443c792bdf8b4b1fa812806c56f13a72d0
unzip prints a warning and exits with code 1 when a zip file is empty.
Pipe the output of unzip through grep -v to hide the warning,
using PIPESTATUS to preserve the exit code of unzip, and then
filter out exit codes that are not 0 or 1.
Test: m
Change-Id: If2cf725fc3315d5996d5a7190288df46d84a59e2
If an AOSP target is built with dynamic partitions support but without
vendor.img available at build time, don't write 'vendor' to
dynamic_partitions_info.txt that will be used for building OTA packages.
We can't remove the partition from BoardConfig file, because the name
will be still needed in other places, such as generating the partition
metadata (super_empty.img). Otherwise manually flashing vendor.img at a
later point would require additional steps (e.g. `fastboot
create-logical-partition`).
Bug: 120852744
Test: `m -j dist` with and without vendor projects.
Change-Id: Ia1c3ed5bbea0255f1908958140dac97a1597586d
Mainline modules are tightly coupled to the platform, and should
build against the current SDK from source and not prebuilts. Add
a flag UNBUNDLED_BUILD_SDKS_FROM_SOURCE to specify that a
TARGET_BUILD_APPS build should build the current SDK instead of
using the prebuilts.
Bug: 121194841
Bug: 121231426
Test: no change to out/build-aosp_sailfish.ninja
Test: forrest unbundled build
Test: forrest master apps build
Test: forrest mainline modules build
Change-Id: I9ebc08745409a817d831817cb282aba1de6d81bb
Building $OUT/obj/JAVA_LIBRARIES/core-tests_intermediates/javalib.jar
is no longer updating the common intermediates:
out/target/common/obj/JAVA_LIBRARIES/core-tests_intermediates/javalib.jar
out/target/common/obj/JAVA_LIBRARIES/core-tests_intermediates/classes.jar
after I25163e91886cea6941afa25cdb529ed053278dcb. Add the missing
dependency on common javalib.jar, which already depends on common
classes.jar.
Bug: 119412419
Bug: 121194944
Test: rm out/target/common/obj/JAVA_LIBRARIES/core-tests_intermediates/classes.jar &&
m core-tests &&
ls out/target/common/obj/JAVA_LIBRARIES/core-tests_intermediates/classes.jar
Change-Id: Id463d159e46c82656c364fdb2dbe53f33ee1a103
Don't create the install rules for boot.art when WITH_DEXPREOPT
is not set to true, which will ensure there is no dependency on
boot.art in a normal build, which matches the behavior before
I25163e91886cea6941afa25cdb529ed053278dcb.
This should fix the Mac build, which never sets WITH_DEXPREOPT
and does not support running dex2oat.
Bug: 119412419
Bug: 121130576
Bug: 121183382
Test: lunch aosp_sailfish-eng && m WITH_DEXPREOPT=false
files does not depend on out/target/product/sailfish/dex_bootjars/system/framework/arm/boot.art
Change-Id: I39e96b1f35f6808d3007cf1785ec3db89e0decb6
Move the dexpreopting logic into Soong. Make modules will be
dexpreopted by executing the Soong logic in the standalone
dexpreopt_gen binary, which will generate scripts that will
perform dexpreopting for each module. Export global configuration
as JSON to $OUT/dexpreopt.config, which will be used by
dexpreopt_gen and Soong, and per-module JSON configuration that
will be used by dexpreopt_gen.
This relands I59b20c931ee3e5a8d35eb30da4148691c5095502,
I39d580999947ee54cfefe875b57a028be5333bd7,
Ie7daa94e107d53eff075ca58dbe721bd9d7fc8c2 and
Ica006a007d112c232311435aaac0c0e476232b67, with a minor
update to match the changes made to dexpreopt_gen arguments
and a fix to correctly keep dexpreopt disabled on mac builds.
Bug: 119412419
Bug: 120273280
Test: no differences to dexpreopt outputs on aosp_sailfish system/,
only expected changes to dexpreopt outputs on system_other
(.vdex files for privileged Soong modules no longer incorrectly
contain .dex contents).
Change-Id: I25163e91886cea6941afa25cdb529ed053278dcb
Ie7daa94e107d53eff075ca58dbe721bd9d7fc8c2 attempted to pre-create
the directories that unzip would unzip into, but incorrectly
created them in the top of the source tree instead of in
$(PRODUCT_OUT). Fix the directory location and add a cleanspec
to clean up the incorrect directories in the source tree.
Bug: 119412419
Test: m correctly cleans up incorrect directories in source tree
Test: extract unzip command from out/verbose.log.gz and add bash -x
Change-Id: Ica006a007d112c232311435aaac0c0e476232b67
unzip sometimes fails with:
checkdir error: cannot create out/target/product/.../system/framework/oat
File exists
I think this happens when two unzips run in parallel, see that the
parent directory is missing, race to create it, and then one of them
treats the EEXIST when creating it as an error instead of continuing.
Work around this by creating the directories with mkdir -p before
running unzip.
Test: m installclean && m
Bug: 119412419
Change-Id: Ie7daa94e107d53eff075ca58dbe721bd9d7fc8c2
uncompress-prebuilt-embedded-jni-libs uses zip2zip, add a dependency
to the rule that calls it.
Test: treehugger
Change-Id: I39d580999947ee54cfefe875b57a028be5333bd7
build_super_image.py calls `lpmake` and expects that (i.e.
HOST_OUT_EXECUTABLES) in PATH. However, we have to explicitly set up
that inside the build.
Bug: 120553014
Test: Set OUR_DIR and build blueline-userdebug.
Change-Id: I000f9d069902a902c9504a2ba31dba6dbc6917a2
Move the dexpreopting logic into Soong. Make modules will be
dexpreopted by executing the Soong logic in the standalone
dexpreopt_gen binary, which will generate scripts that will
perform dexpreopting for each module. Export global configuration
as JSON to $OUT/dexpreopt.config, which will be used by
dexpreopt_gen and Soong, and per-module JSON configuration that
will be used by dexpreopt_gen.
Bug: 119412419
Bug: 120273280
Test: no differences to dexpreopt outputs on aosp_sailfish system/,
only expected changes to dexpreopt outputs on system_other
(.vdex files for privileged Soong modules no longer incorrectly
contain .dex contents).
Change-Id: I59b20c931ee3e5a8d35eb30da4148691c5095502
Add a LOCAL_SANITIZE_NO_RECOVER variable that allows specifying which
sanitizers running in diagnostics mode shouldn't recover. This can help
debugging as we test enabling sanitizers in new libraries since it'll
cause tombstones to be generated along with the diagnostics information.
Bug: 80195448
Bug: 110791537
Test: Compiled test module with this flag, checked compiler command.
Test: Test module crashed, tombstone contained diagnostics information.
Change-Id: I441b9c873e54bf6404325f4d0ac59835350c2889
Generate the images for recovery's wipe data menu. And use the lossless
tool zopflipng to compress the generated image. This saves space
in the boot image at the cost of the increase of build time. In practice,
it adds about ~20 seconds to build the bootimage with 32 threads.
zopflipng generally runs slower. Even with a predefined filters
strategy, it runs about 3 times slower than pngcrush, e.g. ~40s vs 15s
to compress a 1.8M png file. However, zopflipng also gives a better
compression: ~1.4M vs 1.6M for the same image. So I guess the time
consumption is a price worth paying.
Bug: 74397117
Test: build the bootimage and check the resource images
Change-Id: I3e71f8bedd3c183a3374b1a9464bf05500e1aa61
We've already added new APIs in Q, so we shouldn't be claiming a
value of "0", which signals a production platform release.
Bug: 120797950
Test: manual
Change-Id: I6c9063ac4ace79b3ee6b1c67ccdf76f4063ad165
The final APK may contain compressed or uncompressed dex files,
and this affects dex2oat compilation.
Test: build sailfish, test that SystemUI.vdex and Settings.vdex
don't have the dex code.
Change-Id: Ic032f61ed67dcdf342f6eaef71d805b89d6fc99a
We used to manually generate the background text images for recovery. That
process requires opening various emulators and takes a long time. Now that
the host Java tool is ready to generate these images, we can embed the
generation step into the build of the recovery image.
Since there's currently no make variable that defines screen width of the
device, we put the commonly used values for pixels here, i.e. 1440 for
xxxhdpi and 1080 for xxhdpi. Devices with other dpi can still use this
feature if they define the screen width in their config files.
Test: build bootimage with screen with set/unset
Change-Id: Ic8389a527e6e7194de58a9c50763e841e886652b
Same as soong. This needs do match, otherwise, for example, CFI may be
disable in a static library in soong, and left enabled in a shared
library in make; that would not work as CFI only supports DSO granularity.
Bug: 120508119, 112709969
Change-Id: I00d6b1c9c373bcb6804c135407c6eeae88b375b6
Test: hwasan build of master branch boots