Commit Graph

115 Commits

Author SHA1 Message Date
Sundong Ahn
a9f2ef5ed1 Change the impl lib name of java_sdk_library
The impl lib name of java_sdk_library is changed to {module_name}.jar
instead of {module_name}.impl.jar

Bug: 110404779
Test: m -j
Change-Id: I275cd40e3682640b96425e56698cea770888cbb1
Merged-In: I275cd40e3682640b96425e56698cea770888cbb1
(cherry picked from commit 0372f189ac)
2019-01-17 09:42:57 +09:00
Colin Cross
723a22feea Support LOCAL_DEX_PREOPT := nostripping
Support LOCAL_DEX_PREOPT := nostripping by passing it to
dexpreopt_gen.

Bug: 122610462
Test: m
Change-Id: I05f7009d38505f995cd16cc8dbb4ecd6ecc3d71c
2019-01-09 21:27:53 -08:00
Victor Hsieh
330d21d53b Rename to LOCAL_PREFER_CODE_INTEGRITY
During code review, the name change was suggested.

Test: local CTS passed
Bug: 112037137
Change-Id: I1782c532ad6dd36ee8aad7987e47a14f5c1895ee
2019-01-03 09:48:39 -08:00
Colin Cross
cff1cee3f1 Hide unzip warning when zip file is empty
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
2018-12-19 23:47:10 +00:00
Nicolas Geoffray
c04f3126f4 Fix build time preopt with shared library uses.
- Handle hidl libraries.
- Handle new shared library encoding.

Test: no mismatch preopt during boot.
bug: 117845483
bug: 111174995
Change-Id: Ie4bca653594c72df2eb2fdd827bc73cfcb76b1d7
2018-12-18 17:33:02 +00:00
Colin Cross
6db5b0ea9a Move dexpreopting to Soong
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
2018-12-17 13:46:17 -08:00
Colin Cross
b8901d7fb8 Revert "Move dexpreopting to Soong"
This reverts commit e736c58043.

Test: none
Bug: 119412419
2018-12-14 11:49:55 -08:00
Colin Cross
24258b1fb1 Revert "Create directories before unzipping dexpreopt zip"
This reverts commit 9eaeb56c24.

Test: none
Bug: 119412419
2018-12-14 11:49:55 -08:00
Colin Cross
10846f99fb Revert "Correctly create directories before unzipping dexpreopt zip"
This reverts commit 2bb1f518fd.

Test: none
Bug: 119412419
2018-12-14 11:49:55 -08:00
Colin Cross
2bb1f518fd Correctly create directories before unzipping dexpreopt zip
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
2018-12-13 23:32:06 -08:00
Colin Cross
9eaeb56c24 Create directories before unzipping dexpreopt zip
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
2018-12-13 18:32:57 -08:00
Colin Cross
e736c58043 Move dexpreopting to Soong
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
2018-12-12 17:21:22 -08:00
Mathieu Chartier
cc4ca50cfb Change profman logging to only be for errors
Move profman logging to only be for errors. Avoids build spam.

Bug: 120907449
Test: make
Change-Id: I0707dc5c8d6516cbf95d263864bdddaf5a5990c9
2018-12-12 10:28:02 -08:00
Colin Cross
e0006c91ca Merge "Pass privileged dexpreopt module configuration to Soong" 2018-10-26 00:00:12 +00:00
Victor Hsieh
e53dd7b20b Allow target to specify LOCAL_PREFER_INTEGRITY
The option will:
 - Produce APK with uncompressed dex
 - Declare to prefer integrity in manifest

Test: unzip -vl, dex compression looks correct with the option provided
      or not.
Test: similarly, aapt dump correct attribute
Bug: None

Change-Id: I16b9a37255150c2ad84af84087dfabb536a3b07a
2018-10-24 11:40:07 -07:00
Colin Cross
3aa2f8f69b Pass privileged dexpreopt module configuration to Soong
Pass DONT_UNCOMPRESS_PRIV_APPS_DEXS, PRODUCT_LOADED_BY_PRIVILEGED_MODULES,
DEX_PREOPT_DEFAULT, and WITH_DEXPREOPT to Soong so it can determine when
to store uncompressed dex files in APKs and when to strip them.

Also convert DEXPREOPT.$(TARGET_PRODUCT).$(LOCAL_MODULE).CONFIG=disabled
to a DEXPREOPT_DISABLED_MODULES list, and export it to Soong.

Test: m checkbuild
Change-Id: I8652032d4b9f5d2e119e73acdf91b8148563eedd
2018-10-23 22:33:07 -07:00
Colin Cross
fc782ad949 Reduce the propagation of LOCAL_DEX_PREOPT := nostripping
nostripping causes confusing double negatives, allow nostripping
in LOCAL_DEX_PREOPT and DEFAULT_DEX_PREOPT, but convert to
LOCAL_STRIP_DEX outside of dex_preopt_odex_install.mk.

Test: m checkbuild
Change-Id: I996e9258ce20c394900d9fe937d638bc2ab8589d
2018-10-23 22:33:07 -07:00
Colin Cross
ff999725ac Merge changes I6a4060a7,I7743fbda,I88eb24f8
* changes:
  Unnest independent dexpreopt conditionals
  Indent dex_preopt_odex_install.mk
  Revert "Build: Do not treat org.apache.http.legacy.boot as boot classpath"
2018-10-10 22:35:49 +00:00
Colin Cross
c18757e34d Unnest independent dexpreopt conditionals
Most of the 6 nested conditionals are independent and can be
evaluated individually.  This has a slight change in behavior,
disabling preopt for a module in the product will now override
LOCAL_DEX_PREOPT, but that seems preferable.

Test: m
Change-Id: I6a4060a78df729c34bbf6978c84993859a947bf7
2018-10-10 10:12:03 -07:00
Po Hu
eaef4d8b9f Initialize variable to fix wrong odex installed
When "PRODUCT_DEX_PREOPT_GENERATE_DM_FILES := true" and
"PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER := verify" are set,
boot jar may wrongly refer to previous module's variables such as
my_generate_dm, my_built_dm and my_installed_dm. And then cause
unexpected files installed along with this boot jar.

So initialize my_generate_dm to empty at first.

Bug: 117526952
Test: make out/target/product/generic/module-info.json
Test: cat out/target/product/generic/module-info.json | grep '"apache-xml":'
Change-Id: Iaa851f4fb530b3446de3dbcb1f54e545938830ce
2018-10-10 13:40:15 +08:00
Colin Cross
0a69bb6c90 Indent dex_preopt_odex_install.mk
Test: m checkbuild
Change-Id: I7743fbda98d1f1ea1d3e8242905239ff0115b6a9
2018-10-09 21:20:21 -07:00
Paul Duffin
cb846fa6f8 Revert "Build: Do not treat org.apache.http.legacy.boot as boot classpath"
This reverts commit 039bb48f72.

This is no longer needed. Depending on the setting of REMOVE_OAHL_FROM_BCP the org.apache.http.legacy library is now either on the bootclasspath or a standalone library, it cannot be both.

Bug: 18027885
Bug: 72167111
Change-Id: I88eb24f8a4324e206fd384cd8adf79acd6fc0858
Merged-In: I88eb24f8a4324e206fd384cd8adf79acd6fc0858
Test: make with and without REMOVE_OAHL_FROM_BCP=true
(cherry picked from commit 9390268746)
2018-10-09 21:19:25 -07:00
Mathieu Chartier
7ae8bb5efa Merge "Revert "Revert "Default to nostripping for non /system preopt"""
am: 401fada3f5

Change-Id: I36025bea5e3c69e72d3dcdaa50649c73cfaf0d28
2018-07-17 11:28:04 -07:00
Mathieu Chartier
fd5dfb817c Revert "Revert "Default to nostripping for non /system preopt""
Added logic to not preopt tests. Re-enabled usage of
my_module_multilib since this is referenced in setup_one_odex.

Bug: 110156979
Test: make
Test: forrest first boot tests

This reverts commit 9234def313.

Change-Id: I6a6ea2cd0024c33c0cfbd60f3a1f4ad5b1609dc8
2018-07-16 19:36:24 -07:00
Yueming Wang
32ae3af7f5 Merge "Revert "Default to nostripping for non /system preopt""
am: 901d05469e

Change-Id: I56fa81942ef48580b503f47fd790ab4f5436b790
2018-07-12 09:42:17 -07:00
Yueming Wang
9234def313 Revert "Default to nostripping for non /system preopt"
This reverts commit 25f9aa8c4b.

Reason for revert: This CL is likely to break several targets in pi-dev-plus-aosp and oc-mr1-dev-plus-aosp.

Change-Id: I3b29cbdf54007d2043ea1d2e4fe8d56d45eced9e
2018-07-12 14:38:59 +00:00
Mathieu Chartier
69a009fd11 Merge "Default to nostripping for non /system preopt"
am: f37c37bac8

Change-Id: I3b89ee79d25a4815b2668243b4bb8abbf8ae5e56
2018-07-11 17:05:37 -07:00
Mathieu Chartier
25f9aa8c4b Default to nostripping for non /system preopt
Enables preopting of product partition apps.

Disabled secondary arch preopt for TARGET_TRANSLATE_2ND_ARCH to fix
preopt errors for some tests.

Test: test-art-host
Bug: 110156979
Change-Id: I0370a309913c8a516e01563aef451e7ab5819129
2018-07-11 14:29:16 -07:00
Mathieu Chartier
cab7408131 Merge "Add logic to preopt both archs for SDK libs"
am: f3c54cfa78

Change-Id: I1f0336118e71c7da5fa5526425121811c0faace6
2018-07-09 12:58:13 -07:00
Mathieu Chartier
502892a936 Add logic to preopt both archs for SDK libs
Update stale PRODUCT_SYSTEM_SERVER_JARS list since
com.android.location.provider was renamed to
com.android.location.provider.impl.

Added logic to preopt both archs for SDK libs that are also system
server JARS.

Bug: 110780021
Test: manual and verify speed compiled

(cherry picked from commit 4568c2d908)

Merged-In: I34e728444ffda6db3375b638028d54b6ab623209
Change-Id: If0cb68ba4808aa8716099c5447645f4baac63f30
2018-07-09 11:05:21 -07:00
Mathieu Chartier
96a8c23a73 Allow profiles for vendor modules
Allows speed-profile compiling vendor modules.

The profile will not correctly get copied during first boot, but this
is should only be a minor issue.

Bug: 78472563
Bug: 71901335
Test: make

Change-Id: I15c6f90b6bbd284ab48fd750267bed5189c9fea4
2018-05-22 13:33:10 -07:00
Mathieu Chartier
b17f384dd7 Merge "Only default LOCAL_DEX_PREOPT_APP_IMAGE if not set" into pi-dev 2018-05-02 23:13:42 +00:00
Mathieu Chartier
f16e8d0d94 Only default LOCAL_DEX_PREOPT_APP_IMAGE if not set
Allows modules to specify LOCAL_DEX_PREOPT_APP_IMAGE := false if they
have a profile.

Bug: 77342775
Test: make
Change-Id: Ied7a8099b199904638dabdb09faf879d3216e73d
2018-05-02 20:21:37 +00:00
Calin Juravle
c644651517 Pass --dex-location when processing prebuilt profiles
The apk name does not match the install location at the stage we are
processing profiles. This causes the wrong profile key to be used in the
final profile which may generate an empty app image.

Test: m; flash, dumpsys dexopt and check for speed-profile
      check that the app image is not empty
Bug: 78515726

(cherry picked from commit 60216615f4)

Merged-In: Ic5d71296583be71d96f0e7a2dd59753f1d23c350
Change-Id: Ieb7386701b631d53d452336d1ad22653e4daee42
2018-04-30 12:14:09 -07:00
Calin Juravle
62c2893849 Fix speed-profile compilation for prebuilds
We were testing the wrong variable when setting the dex2oat flags

Test: m; flash, dumpsys dexopt and check for speed-profile
Bug: 78515726

(cherry picked from commit 7d701355e9)

Merged-In: I57c0e11aab2e4879c3ba3b2851f356b5864f5da9
Change-Id: I2e2f9da1dc9ed71977ec1d698433674c731f78bc
2018-04-30 12:09:27 -07:00
Calin Juravle
8faa2ec0d8 Update profile rules to support binary profiles
Use full binary profiles instead or relying on text-based profiles. This
makes it easier to import actual profiles and do not require two rounds of
transformation.

Text based profiled probably didn't help too much anyway because if the
apps are updated the proguard names will change.

Modules are still free to define a text based profile using
LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING. This is used for frameworks jars.

Test: make
Bug: 73313191

(cherry picked from commit f99ab7580f)

Merged-In: Ifd23dde21559fbcd015020905052bc588e275356
Change-Id: I13c6b3891cbf1232f1f07d0a17f019257f7118e6
2018-04-30 12:08:51 -07:00
Calin Juravle
60216615f4 Pass --dex-location when processing prebuilt profiles
The apk name does not match the install location at the stage we are
processing profiles. This causes the wrong profile key to be used in the
final profile which may generate an empty app image.

Test: m; flash, dumpsys dexopt and check for speed-profile
      check that the app image is not empty
Bug: 78515726

Change-Id: Ic5d71296583be71d96f0e7a2dd59753f1d23c350
2018-04-26 18:54:21 -07:00
Calin Juravle
7d701355e9 Fix speed-profile compilation for prebuilds
We were testing the wrong variable when setting the dex2oat flags

Test: m; flash, dumpsys dexopt and check for speed-profile
Bug: 78515726
Change-Id: I57c0e11aab2e4879c3ba3b2851f356b5864f5da9
2018-04-25 15:28:53 -07:00
Calin Juravle
f99ab7580f Update profile rules to support binary profiles
Use full binary profiles instead or relying on text-based profiles. This
makes it easier to import actual profiles and do not require two rounds of
transformation.

Text based profiled probably didn't help too much anyway because if the
apps are updated the proguard names will change.

Modules are still free to define a text based profile using
LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING. This is used for frameworks jars.

Test: make
Bug: 73313191

Change-Id: Ifd23dde21559fbcd015020905052bc588e275356
2018-04-20 14:54:22 -07:00
Mathieu Chartier
aaca16f0f7 Only default LOCAL_DEX_PREOPT_APP_IMAGE if not set
Allows modules to specify LOCAL_DEX_PREOPT_APP_IMAGE := false if they
have a profile.

Test: make
Change-Id: Ied7a8099b199904638dabdb09faf879d3216e73d
2018-04-12 17:02:30 +00:00
Andreas Gampe
cdfe46b5a7 Build: Amend minidebug odex setup
Add PRODUCT_OTHER_JAVA_DEBUG_INFO similar to PRODUCT_SYSTEM_SERVER_DEBUG_INFO.
Use WITH_DEXPREOPT_DEBUG_INFO as global default, and allow the product
to opt out by setting the above to "false."

(cherry picked from commit c3e151954f)

Bug: 75259124
Test: m
Merged-In: Id4a2e5d00a1b73a7e7a0a65146042c0aa0c1b411
Change-Id: Id4a2e5d00a1b73a7e7a0a65146042c0aa0c1b411
2018-03-23 19:54:35 -07:00
Andreas Gampe
c3e151954f Build: Amend minidebug odex setup
Add PRODUCT_OTHER_JAVA_DEBUG_INFO similar to PRODUCT_SYSTEM_SERVER_DEBUG_INFO.
Use WITH_DEXPREOPT_DEBUG_INFO as global default, and allow the product
to opt out by setting the above to "false."

Bug: 75259124
Test: m
Change-Id: Id4a2e5d00a1b73a7e7a0a65146042c0aa0c1b411
2018-03-23 10:40:10 -07:00
Mathieu Chartier
bccd0a571b Merge "Add property for generating dm files" am: 3d2b45ad55 am: d8cb5746be
am: a6355cbc9b

Change-Id: I5e99c7753a9c0831f8ee0b9223bc1a7b6b56540d
2018-02-22 01:50:08 +00:00
Mathieu Chartier
5c658ac3a9 Add property for generating dm files
Added product property: PRODUCT_DEX_PREOPT_GENERATE_DM_FILES.
If this property is true, APKs compiled as verify will have the dex
files left compressed and the vdex put in a dm file. The vdex file
and oat files are not copied to system partition in this case.

Bug: 70934104
Test: manual

Change-Id: Ie137e14f14642b803a506162de6db8ac65a43f46
2018-02-21 13:50:21 -08:00
Mathieu Chartier
91055f89db Merge "Add a product property for changing the default compiler filter" am: 60431c098e am: d66be15c96
am: 18f0f94b01

Change-Id: I6c7eac17b86ea26d9cae2f2f525c25f3847168e8
2018-02-17 00:13:55 +00:00
Mathieu Chartier
60431c098e Merge "Add a product property for changing the default compiler filter" 2018-02-16 23:41:21 +00:00
Calin Juravle
9aaf050c76 Merge "Record the compilation reson in oat files for prebuilts" am: 87774191b3 am: 1697a9b6f0
am: 92fc421d24

Change-Id: I339f1df6878d5f16916b59816ff812f5d2b34653
2018-02-16 03:40:43 +00:00
Mathieu Chartier
e8fb7cf87b Add a product property for changing the default compiler filter
Add product property for changing default compiler filter:
PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER

Bug: 70934104
Test: Specify PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER in a device.mk

Change-Id: I264631fc3813ef44d43b802b4cd9a8e92098183e
2018-02-15 17:44:37 -08:00
Calin Juravle
55f149263c Record the compilation reson in oat files for prebuilts
Test: build
Bug: 73102540
Change-Id: Ia2ba0670f36b3eeb481bc7b2ae44a1c89777bfc1
2018-02-15 16:00:15 -08:00
Nicolas Geoffray
c218a41c20 Merge "Tighter control of stripping in dex_preopt_odex_install." am: ec1fdc8813 am: ef29a15ac4
am: aa9a2e4af9

Change-Id: I622998242a20d8f4f8ee9fb2e0856180db44efe0
2018-01-22 13:49:33 +00:00