Commit Graph

18402 Commits

Author SHA1 Message Date
Jiyong Park
eadd1bdb8e Don't feed framework.jar to proguard for vendor apks
We used to add framework.jar to proguard via -systemjars option even
for the apks building againsd SDK. This was because the app might have
references to hidden APIs via static libraries, etc.

However, for vendor apks, the use of hidden API is strictly prohibited.
So it is fine to not include framework.jar. Furthermore, including
framework.jar even causes problems in some cases; if a java library
(e.g., android.hidl.base-V1.0-java) is statically linked to both the app
and the framework.jar, -systemjars frameworks.jar forcibly removes
classes in the library from the app to have references to the non-public
classes in framework.jar. This could fail some compliance tests.

Fixing the problem by not raising SDK for apks located in vendor or odm
partitions.

Bug: 128574081
Test: m
Change-Id: If2b658fead5b4bb4d8c023a37eb57a37ad9b741d
2019-04-03 22:35:34 +09:00
Anton Hansson
74a36536c3 Indent the install_jni_libs makefiles
These files are pretty dense, and are difficult to read
without indentation.

Bug: 129323707
Test: noop on presubmits
Change-Id: I5fde5429120e80a8c6329ea43d32b3ee324a2632
2019-04-03 14:24:43 +01:00
Colin Cross
e257b26059 Export more config values to Soong
Export more config values to Soong that will be use dto generate
robolectric's build.prop.

Bug: 122331577
Test: m checkbuild
Change-Id: I1e9dd165772a071cf78927b3bf1e29e01290a42e
2019-04-02 22:57:43 -07:00
joker.yang
a75c9a5079 Statements in build system such as ifeq (true,$(LOCAL_VENDOR_MODULE)) has a poor compatibility
We have developed a vendor module and set LOCAL_VENDOR_MODULE := true<space> (Added a space character at the end)
The android build system then can't installed it in the right partition until we removed the extra space character.

bug: 129725067

Change-Id: I081ffe7f39a9c850007ba304c815436500be694c
2019-04-03 01:31:43 +00:00
Vic Yang
841ab06af1 Skip checking ELF files for uninstallable soong modules
If a module is uninstallable, the shared library dependencies are not
set up and thus the ELF file check may fail incorrectly.  In this case,
there is no need to check ELF files anyway.

Test: Build walleye with no-vendor-variant VNDK enabled and does not
      see erroneous failure anymore.

Change-Id: Icd115fc82daedf11795800de5cbe87c87073586a
2019-04-02 14:06:22 -07:00
Martin Stjernholm
c712ac1001 Merge "Drop libsigchain from the system image." 2019-04-01 19:15:25 +00:00
Martin Stjernholm
f8b6fefcd1 Drop libsigchain from the system image.
It is now in the Runtime APEX and considered internal there.

Test: Flash and boot
Test: atest CtsCompilationTestCases CtsBionicTestCases
Bug: 118374951
Bug: 124293228
Change-Id: I33bb9c238d7db46795deb592c9d20fe6591c1654
2019-04-01 18:37:06 +01:00
Treehugger Robot
c2fe916233 Merge "Move super.img to obj/PACKAGING" 2019-04-01 16:21:07 +00:00
Yifan Hong
5478754cd6 Move super.img to obj/PACKAGING
To avoid the confusion. super.img isn't intended to be flashed
during day-to-day development.

Test: m superimage
Bug: 128891161
Change-Id: I9d62e5929b415343b2d890ab21e6ae51175af2ae
2019-03-29 14:47:28 -07:00
Anton Hansson
8adf501905 Merge "Access PRODUCT_ variables directly" 2019-03-29 16:54:47 +00:00
Anton Hansson
b5cec0d792 Merge "Automate the strip and assignment of PRODUCT_ vars" 2019-03-29 16:54:25 +00:00
Treehugger Robot
20ac920654 Merge "Make the APEX lib absence check optional, for local use." 2019-03-29 13:43:32 +00:00
Dan Willemsen
672e98fac8 Merge "Stop installing host packages via PRODUCT_PACKAGES" 2019-03-29 03:20:52 +00:00
Treehugger Robot
5d225276ca Merge "Fix build error on empty ramdisk" 2019-03-29 03:03:00 +00:00
Anton Hansson
8dab0a6f50 Access PRODUCT_ variables directly
This CL simplifies the PRODUCTS.$(INTERNAL_PRODUCT).X accesses of
product variables, and removes unnecessary stripping of them.

Replace: '\$\(PRODUCTS\.\$\(INTERNAL_PRODUCT\)\.([^\)]*)\)' with '$(\1)'
Replace: '\$\(strip\s*\$\(PRODUCT_([^\)]*)\)\)' with '$(PRODUCT_\1)'

A few minor manual tweaks.

Bug: 116769560
Test: presubmit
Change-Id: I70c54f1582e3cc780028535960147d99ebc2e0e1
2019-03-28 15:54:25 +00:00
Anton Hansson
13ea2a6a7d Automate the strip and assignment of PRODUCT_ vars
With this change, all PRODUCT_ variables are treated the same
when it comes to stripping and assigning them to their final
variable name. In the past, all the PRODUCT variables needed
to be listed in two places to achieve this.

The documentation previously attached to the strip/assignment
is moved to the PRODUCT_ variable list in product.mk.

Also refactor some of the default value logic to cope with
the new automation.

Many places in the build system that currently refer to
$(PRODUCTS.$(INTERNAL_PRODUCT).X) can now be modified to
use $(X) directly.

Bug: 116769560
Test: verified noop on PRODUCT_ variables on all products in the tree
Change-Id: I5677c355e81359b1d3c0db2a2232941097a05047
2019-03-28 15:26:49 +00:00
Martin Stjernholm
c9d5858f58 Make the APEX lib absence check optional, for local use.
Test: m systemimage (with and without failure)
Bug: 124293228
Bug: 129466457
Change-Id: I8bf5ba51232bb9961bdedd56d0f17ee1d8698f54
2019-03-28 15:08:32 +00:00
SzuWei Lin
29770fa2bf Fix build error on empty ramdisk
package `init_vendor` is the only content of ramdisk so far.
We would get build error if we do not include init_vendor.
The patch fix the build error for the case that ramdisk is empty.

Bug: 129386309
Test: lunch aosp_arm64_ab-userdebug; make ramdisk -j
Test: Build pass
Change-Id: I7c7c828b5f29350268d4789393b90740dd68162d
2019-03-28 13:41:01 +00:00
Colin Cross
38b48debc5 Understand the support library/androidx @Keep annotations
Copied from tools/base/build-system/gradle-core/src/main/resources/com/android/build/gradle/proguard-common.txt.

Fixes: 129311848
Test: none
Change-Id: Ie8b40b416c8772a550bb4d1f7bd6e7e944cdd166
2019-03-26 23:44:01 +00:00
Jaewoong Jung
f22997ead4 prebuilt_internal.mk refactoring.
Add cc_prebuilt_internal.mk and java_prebuilt_internal.mk. Now all
buisiness logic lives in individual per-class prebuilt mk files.

Fixes: 128609813
Test: Built and flashed a Pixel device image + TreeHugger
Change-Id: I3827f990642bb7587dc682d1a382b3a1ce22fe66
2019-03-26 15:29:20 -07:00
Treehugger Robot
d7060a50f9 Merge "Eliminate ENABLE_DEFAULT_TEST_LOCATION as it is always true" 2019-03-26 20:22:37 +00:00
Sasha Smundak
da25b691d3 Eliminate ENABLE_DEFAULT_TEST_LOCATION as it is always true
Bug: 117224272
Test: treehugger
Change-Id: Idd47ead31fcd89dbf728f140dc3353e5013ba352
2019-03-25 13:26:03 -07:00
Daniel Norman
adf8096c77 Only call make_recovery_patch when BUILDING_SYSTEM_IMAGE.
The recovery patch gets put in the SYSTEM directory. Placing the
recovery patch here doesn't make sense when not building the system
image, as is the case for merged (system + vendor) builds.

Bug: 128838154
Test: Running make droid dist for a device target that sets PRODUCT_BUILD_SYSTEM_IMAGE to false.
Change-Id: Ib5ce8c8490024199f82d0c093e9a7ae2de5f71f5
2019-03-25 18:34:30 +00:00
Anton Hansson
94fa0e75cb Merge "Put DEVICE/PRODUCT overlays in different partitions" 2019-03-25 09:25:47 +00:00
Martin Stjernholm
c62e31242d Merge "Exclude libdexfile_external.so to fix aosp_marlin-userdebug builds." 2019-03-22 15:35:09 +00:00
Martin Stjernholm
d185bb29ce Exclude libdexfile_external.so to fix aosp_marlin-userdebug builds.
Test: m systemimage
Bug: 124293228
Change-Id: I7a4744457396084ef9fd78d9c2f1efdabe0f981d
2019-03-22 14:24:08 +00:00
Anton Hansson
cb8276fa93 Put DEVICE/PRODUCT overlays in different partitions
This change changes auto-generated RROs from DEVICE_PACKAGE_OVERLAYS
to be generated in the vendor partition, as opposed to /product where
they were generated in the past.

Note that PRODUCT_PACKAGE_OVERLAYS continue generating RRO packages
to /product, which means that a single app can be overlayed from
different partitions. These RROs have been given module and package
names based on their location.

Bug: 127758779
Test: verify noop on presubmit targets
Change-Id: I5cee70e28e3969e67b2d83eaf25d9c6e3a11102d
2019-03-22 13:25:20 +00:00
Treehugger Robot
02699e40ea Merge "Check that Runtime APEX libraries don't end up in /system/${LIB}." 2019-03-22 12:34:05 +00:00
Treehugger Robot
1d38fe98d1 Merge "Follow symlink when creating symbols.zip" 2019-03-21 22:19:49 +00:00
Martin Stjernholm
f1e7c7159b Check that Runtime APEX libraries don't end up in /system/${LIB}.
This is a stop-gap measure for a proper fix enforcing library "ownership" in
Soong: b/128708192

Test: m systemimage (with and without libs that exist in /system/lib)
Test: Check that this fails:
  m systemimage
  m out/target/product/taimen/system/lib/libjdwp.so
  m systemimage-nodeps
Bug: 124293228
Change-Id: Iac0d0cec7d9e216028a0caccfbb76838514d4a7b
2019-03-21 17:52:35 +00:00
Anton Hansson
cece1e03af Merge "Read product/device RRO dirs separately from soong" 2019-03-21 11:28:19 +00:00
Jiyong Park
88e0980ddf Follow symlink when creating symbols.zip
Due to the runtime APEX, the symbols directory now contains a symlink;
./apex/com.android.runtime -> com.android.runtime.debug (or .release).

Previously, this symlink itself was included in the symbols.zip file.
And this is causing problem to the online stack tool which does not
follow the symlink in the zip file. Instead of fixing the problem in the
stack tool side, this change let the packaging routine to follow the
symlink and copy the files behind the symlink as if they were under a
directory that isn't a symlink. (i.e.
./apex/com.android.runtime/bin/dex2oat is added)

Bug: 120846816
Test: m dist with marlin (flattened) and blueline (non-flattened)
examine symbols.zip file and check that unstripped shared libraries are
found under /apex/com.android.runtime directory
Change-Id: I1d1c787a2e8ab7209410dfa2cff749a7042e21b0
2019-03-21 18:48:16 +09:00
Bowgo Tsai
8802b7119d Only build system_other.avbpubkey when AVB is enabled
/product/etc/security/avb/system_other.avbpubkey is only needed
when BOARD_AVB_ENABLE is true. This fixes the build error of
Marlin/Sailfish.

Bug: 123611926
Bug: 129029207
Test: make
Change-Id: I73f948d84f91cd6fbe49a2de7bf12e46eebe6ede
2019-03-21 14:26:33 +08:00
Vic Yang
30dda1da5e Merge changes from topic "vndk-no-vendor-variant"
* changes:
  Add support for no-vendor-variant VNDK
  Add module-target-built-files function
2019-03-21 04:30:47 +00:00
Treehugger Robot
7e87c72fb0 Merge "Moving system_other key into product.img" 2019-03-21 04:26:21 +00:00
Anton Hansson
2cad3f68c2 Merge "Fix the product-graph target" 2019-03-20 17:31:41 +00:00
Dan Willemsen
2e79dafed1 Stop installing host packages via PRODUCT_PACKAGES
Test: treehugger
Change-Id: I24ac93f3558116f4ddd96d22ef9bbd47240fdd06
2019-03-20 10:29:42 -07:00
Vic Yang
51512c558c Add support for no-vendor-variant VNDK
When TARGET_VNDK_USE_CORE_VARIANT is set to true, the vendor variant of
VNDK libraries are by default not installed.  Instead, the core variant
will be used by vendor binaries at runtime.

To ensure the core variant of VNDK libraries are installed, we also add
a flag LOCAL_VNDK_DEPEND_ON_CORE_VARIANT to indicate that the vendor
variant module depends on the core variant module.  This flag should be
set by Soong for all VNDK libraries without the vendor variant
installed.  When the flag is set, the vendor variant binary is also
compared against the core variant binary to ensure they are
functionally identical.

As we are merging the two variants for some libraries, we need a new
link type to denote a module is usable as both native:vndk and
native:platform.  We add native:platform_vndk for this.

Bug: 119423884
Test: With the corresponding Soong change, build with
      TARGET_VNDK_USE_CORE_VARIANT set to true.
Test: Add a dummy VNDK library and a dummy vendor binary that depends
      on it.  Build with no-vendor-variant VNDK and check the core
      variant is installed.
Test: Add conditional compilation based on __ANDROID_VNDK__ in the
      dummy VNDK library and check build fails.

Change-Id: I40000f2728e8193212113c1ee950e9d697f2d40d
2019-03-20 10:23:04 -07:00
Vic Yang
1b83413b5a Add module-target-built-files function
This is similar to module-built-files, except that it only returns
files built for the target, not the host.

Bug: 119423884
Test: Build with the no-vendor-variant VNDK change that uses this
      function.

Change-Id: I2a3d99003b05999eae01c0b90bb62b5263d65592
2019-03-20 10:22:21 -07:00
Anton Hansson
bec4aa868a Merge "Refactor generate_enforce_rro" 2019-03-20 15:18:19 +00:00
Anton Hansson
7c718f37f9 Merge "Refactor and further simplify the RRO logic" 2019-03-20 14:35:25 +00:00
Anton Hansson
fce4d099c3 Merge "Add comments and slight refactor auto-RRO logic" 2019-03-20 13:19:56 +00:00
Anton Hansson
4ea6474e95 Merge "System-specific product sysprops" 2019-03-20 12:40:44 +00:00
Anton Hansson
627cf057f9 Fix the product-graph target
Skips the step that invokes dot from the build, and instead
prints suitable commands to convert to image formats.

Bug: 114729998
Test: m product-graph
Change-Id: I172e1a792c32c2685d2f439f414dc66267ed6b83
2019-03-20 11:03:59 +00:00
Anton Hansson
c371f19e89 Merge "Rename DEVICE arg in common buildprops script" 2019-03-20 10:25:01 +00:00
Anton Hansson
f9b6cd6593 Merge "Fix missing modules check for dont_bother goals" 2019-03-20 10:11:50 +00:00
Bowgo Tsai
e4544b1c02 Moving system_other key into product.img
Currently system_other AVB public key is placed in system.img.
However, this makes it's harder to have a *generic* system.img
across different product configs. Moving the key to /product
partition to allow more product-specific AVB keys.

Device board config can add /product/etc/fstab.postinstall,
to mount system_other with this key in /product. It can specify
different mount options, file systems, verity settings, etc., in
this product-specific fstab as well.

Bug: 123611926
Test: `make productimage` checks the following is generated.
      $OUT/product/etc/security/avb/system_other.avbpubkey
      Also checks it's included in $OUT/installed-files-product.{json, txt}

Test: run the following command and checks that
      PRODUCT/etc/security/avb/system_other.avbpubkey is updated:
      ./build/tools/releasetools/sign_target_files_apks \
        --avb_system_other_algorithm SHA256_RSA2048 \
        --avb_system_other_key external/avb/test/data/testkey_rsa2048.pem \
        out/dist/*-target_files-*.zip signed-target_files.zip

Change-Id: I6804f29941bec54375d80bd68a5aedb5c23b842e
2019-03-20 16:18:11 +08:00
Colin Cross
88e38f01ba Merge "Add x86 AVX2 and AVX512 supported architectures" 2019-03-20 06:22:22 +00:00
Treehugger Robot
995c632cdc Merge "Add LOCAL_SOONG_SYMBOL_PATH" 2019-03-20 03:01:40 +00:00
Treehugger Robot
71ec795e47 Merge "Build: Ensuring test runtime dependencies are installed." 2019-03-20 01:17:17 +00:00