summaryrefslogtreecommitdiff
path: root/scripts/construct_context_test.py
diff options
context:
space:
mode:
authorUlya Trafimovich <skvadrik@google.com>2020-10-07 15:17:13 +0100
committerUlya Trafimovich <skvadrik@google.com>2020-10-27 17:05:30 +0000
commit8130c482abf16bb1fdb34250ece258ccd7423780 (patch)
tree72168a57d9ecd8d32cac4b5b7a6120d33d91d12f /scripts/construct_context_test.py
parentb521811d7bd3b69039f05b1d7fd0599a33254ab8 (diff)
Move part of logic from construct_context.py to Soong.
construct_context.py is a script that runs at Ninja stage and constructs class loader context arguments for dex2oat. Previously it accepted lists of library paths and concatenated them into one class loader context string. The script also handled the dependency of "android.hidl.manager" on "android.hidl.base" that is not tracked by the build system and must be handled in a special way. Now that class loader context representation is going to change from flat lists to trees, passing paths to individual libraries as script arguments is no longer possible, because a list of paths cannot represent a class loader context tree. Passing the trees in a serialized form is also inconvenient, because the script would have to parse them, which would complicate it a lot. Therefore this patch ports all the concatenation and "android.hidl.base" handling to Soong. It is not possible to port the remaining script to Soong because Soong has no information about the targetSdkVersiion of the dexpreopted apps (it is in the manifest and sometimes in an APK, and has to be extracted at Ninja time). Test: construct_context_test.py Test: new subtests in TestUsesLibs Test: lunch aosp_cf_x86_phone-userdebug && m Bug: 132357300 Change-Id: Icdb03cf00d1e27e4cff3844b89bfaec4de502dd7
Diffstat (limited to 'scripts/construct_context_test.py')
-rwxr-xr-xscripts/construct_context_test.py26
1 files changed, 10 insertions, 16 deletions
diff --git a/scripts/construct_context_test.py b/scripts/construct_context_test.py
index 0b0b0a315..3b05f9013 100755
--- a/scripts/construct_context_test.py
+++ b/scripts/construct_context_test.py
@@ -27,53 +27,47 @@ def construct_contexts(arglist):
args = cc.parse_args(arglist)
return cc.construct_contexts(args)
-classpaths = [
- '--host-classpath-for-sdk', '28', 'out/zdir/z.jar',
- '--target-classpath-for-sdk', '28', '/system/z.jar',
- '--host-classpath-for-sdk', '29', 'out/xdir/x.jar:out/ydir/y.jar',
- '--target-classpath-for-sdk', '29', '/system/x.jar:/product/y.jar',
- '--host-classpath-for-sdk', 'any', 'out/adir/a.jar:out/android.hidl.manager-V1.0-java.jar:out/bdir/b.jar',
- '--target-classpath-for-sdk', 'any', '/system/a.jar:/system/android.hidl.manager-V1.0-java.jar:/product/b.jar',
+contexts = [
+ '--host-context-for-sdk', '28', 'PCL[out/zdir/z.jar]',
+ '--target-context-for-sdk', '28', 'PCL[/system/z.jar]',
+ '--host-context-for-sdk', '29', 'PCL[out/xdir/x.jar]#PCL[out/ydir/y.jar]',
+ '--target-context-for-sdk', '29', 'PCL[/system/x.jar]#PCL[/product/y.jar]',
+ '--host-context-for-sdk', 'any', 'PCL[out/adir/a.jar]#PCL[out/bdir/b.jar]',
+ '--target-context-for-sdk', 'any', 'PCL[/system/a.jar]#PCL[/product/b.jar]',
]
class ConstructContextTest(unittest.TestCase):
def test_construct_context_28(self):
- args = ['--target-sdk-version', '28'] + classpaths
+ args = ['--target-sdk-version', '28'] + contexts
result = construct_contexts(args)
expect = ('class_loader_context_arg=--class-loader-context=PCL[]{PCL[out/xdir/x.jar]'
'#PCL[out/ydir/y.jar]'
'#PCL[out/adir/a.jar]'
- '#PCL[out/android.hidl.manager-V1.0-java.jar]{PCL[out/android.hidl.base-V1.0-java.jar]}'
'#PCL[out/bdir/b.jar]}'
' ; '
'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{PCL[/system/x.jar]'
'#PCL[/product/y.jar]'
'#PCL[/system/a.jar]'
- '#PCL[/system/android.hidl.manager-V1.0-java.jar]{PCL[/system/android.hidl.base-V1.0-java.jar]}'
'#PCL[/product/b.jar]}')
self.assertEqual(result, expect)
def test_construct_context_29(self):
- args = ['--target-sdk-version', '29'] + classpaths
+ args = ['--target-sdk-version', '29'] + contexts
result = construct_contexts(args)
expect = ('class_loader_context_arg=--class-loader-context=PCL[]{PCL[out/adir/a.jar]'
- '#PCL[out/android.hidl.manager-V1.0-java.jar]{PCL[out/android.hidl.base-V1.0-java.jar]}'
'#PCL[out/bdir/b.jar]}'
' ; '
'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{PCL[/system/a.jar]'
- '#PCL[/system/android.hidl.manager-V1.0-java.jar]{PCL[/system/android.hidl.base-V1.0-java.jar]}'
'#PCL[/product/b.jar]}')
self.assertEqual(result, expect)
def test_construct_context_S(self):
- args = ['--target-sdk-version', 'S'] + classpaths
+ args = ['--target-sdk-version', 'S'] + contexts
result = construct_contexts(args)
expect = ('class_loader_context_arg=--class-loader-context=PCL[]{PCL[out/adir/a.jar]'
- '#PCL[out/android.hidl.manager-V1.0-java.jar]{PCL[out/android.hidl.base-V1.0-java.jar]}'
'#PCL[out/bdir/b.jar]}'
' ; '
'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{PCL[/system/a.jar]'
- '#PCL[/system/android.hidl.manager-V1.0-java.jar]{PCL[/system/android.hidl.base-V1.0-java.jar]}'
'#PCL[/product/b.jar]}')
self.assertEqual(result, expect)