Move filesystem into Config
The filesystem object was available through ModuleContext.Fs(), but gives too much access to the filesystem without enforicing correct dependencies. In order to support sandboxing the soong_build process move the filesystem into the Config. The next change will make it private. Bug: 146437378 Test: all Soong tests Change-Id: I5d3ae9108f120fd335b21efd612aefa078378813
This commit is contained in:
@@ -93,69 +93,6 @@ func withBinder32bit(fs map[string][]byte, config android.Config) {
|
||||
|
||||
func testApexContext(t *testing.T, bp string, handlers ...testCustomizer) (*android.TestContext, android.Config) {
|
||||
android.ClearApexDependency()
|
||||
config := android.TestArchConfig(buildDir, nil)
|
||||
config.TestProductVariables.DeviceVndkVersion = proptools.StringPtr("current")
|
||||
config.TestProductVariables.DefaultAppCertificate = proptools.StringPtr("vendor/foo/devkeys/test")
|
||||
config.TestProductVariables.CertificateOverrides = []string{"myapex_keytest:myapex.certificate.override"}
|
||||
config.TestProductVariables.Platform_sdk_codename = proptools.StringPtr("Q")
|
||||
config.TestProductVariables.Platform_sdk_final = proptools.BoolPtr(false)
|
||||
config.TestProductVariables.Platform_vndk_version = proptools.StringPtr("VER")
|
||||
|
||||
ctx := android.NewTestArchContext()
|
||||
ctx.RegisterModuleType("apex", BundleFactory)
|
||||
ctx.RegisterModuleType("apex_test", testApexBundleFactory)
|
||||
ctx.RegisterModuleType("apex_vndk", vndkApexBundleFactory)
|
||||
ctx.RegisterModuleType("apex_key", ApexKeyFactory)
|
||||
ctx.RegisterModuleType("apex_defaults", defaultsFactory)
|
||||
ctx.RegisterModuleType("prebuilt_apex", PrebuiltFactory)
|
||||
ctx.RegisterModuleType("override_apex", overrideApexFactory)
|
||||
|
||||
ctx.RegisterModuleType("cc_library", cc.LibraryFactory)
|
||||
ctx.RegisterModuleType("cc_library_shared", cc.LibrarySharedFactory)
|
||||
ctx.RegisterModuleType("cc_library_headers", cc.LibraryHeaderFactory)
|
||||
ctx.RegisterModuleType("cc_prebuilt_library_shared", cc.PrebuiltSharedLibraryFactory)
|
||||
ctx.RegisterModuleType("cc_prebuilt_library_static", cc.PrebuiltStaticLibraryFactory)
|
||||
ctx.RegisterModuleType("cc_binary", cc.BinaryFactory)
|
||||
ctx.RegisterModuleType("cc_object", cc.ObjectFactory)
|
||||
ctx.RegisterModuleType("cc_defaults", func() android.Module {
|
||||
return cc.DefaultsFactory()
|
||||
})
|
||||
ctx.RegisterModuleType("cc_test", cc.TestFactory)
|
||||
ctx.RegisterModuleType("llndk_library", cc.LlndkLibraryFactory)
|
||||
ctx.RegisterModuleType("vndk_prebuilt_shared", cc.VndkPrebuiltSharedFactory)
|
||||
ctx.RegisterModuleType("vndk_libraries_txt", cc.VndkLibrariesTxtFactory)
|
||||
ctx.RegisterModuleType("toolchain_library", cc.ToolchainLibraryFactory)
|
||||
ctx.RegisterModuleType("prebuilt_etc", android.PrebuiltEtcFactory)
|
||||
ctx.RegisterModuleType("sh_binary", android.ShBinaryFactory)
|
||||
ctx.RegisterModuleType("android_app_certificate", java.AndroidAppCertificateFactory)
|
||||
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
|
||||
ctx.RegisterModuleType("java_library", java.LibraryFactory)
|
||||
ctx.RegisterModuleType("java_import", java.ImportFactory)
|
||||
ctx.RegisterModuleType("java_system_modules", java.SystemModulesFactory)
|
||||
ctx.RegisterModuleType("android_app", java.AndroidAppFactory)
|
||||
ctx.RegisterModuleType("android_app_import", java.AndroidAppImportFactory)
|
||||
ctx.RegisterModuleType("override_android_app", java.OverrideAndroidAppModuleFactory)
|
||||
|
||||
ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
|
||||
ctx.PreArchMutators(func(ctx android.RegisterMutatorsContext) {
|
||||
ctx.BottomUp("prebuilts", android.PrebuiltMutator).Parallel()
|
||||
})
|
||||
ctx.PreDepsMutators(func(ctx android.RegisterMutatorsContext) {
|
||||
ctx.BottomUp("vndk", cc.VndkMutator).Parallel()
|
||||
ctx.BottomUp("link", cc.LinkageMutator).Parallel()
|
||||
ctx.BottomUp("test_per_src", cc.TestPerSrcMutator).Parallel()
|
||||
ctx.BottomUp("version", cc.VersionMutator).Parallel()
|
||||
ctx.BottomUp("begin", cc.BeginMutator).Parallel()
|
||||
})
|
||||
ctx.PreDepsMutators(RegisterPreDepsMutators)
|
||||
ctx.PostDepsMutators(android.RegisterOverridePostDepsMutators)
|
||||
ctx.PostDepsMutators(RegisterPostDepsMutators)
|
||||
ctx.PostDepsMutators(func(ctx android.RegisterMutatorsContext) {
|
||||
ctx.TopDown("prebuilt_select", android.PrebuiltSelectModuleMutator).Parallel()
|
||||
ctx.BottomUp("prebuilt_postdeps", android.PrebuiltPostDepsMutator).Parallel()
|
||||
})
|
||||
|
||||
ctx.Register()
|
||||
|
||||
bp = bp + `
|
||||
toolchain_library {
|
||||
@@ -271,10 +208,10 @@ func testApexContext(t *testing.T, bp string, handlers ...testCustomizer) (*andr
|
||||
],
|
||||
}
|
||||
`
|
||||
|
||||
bp = bp + java.GatherRequiredDepsForTest()
|
||||
|
||||
fs := map[string][]byte{
|
||||
"Android.bp": []byte(bp),
|
||||
"a.java": nil,
|
||||
"PrebuiltAppFoo.apk": nil,
|
||||
"PrebuiltAppFooPriv.apk": nil,
|
||||
@@ -285,42 +222,116 @@ func testApexContext(t *testing.T, bp string, handlers ...testCustomizer) (*andr
|
||||
"system/sepolicy/apex/otherapex-file_contexts": nil,
|
||||
"system/sepolicy/apex/commonapex-file_contexts": nil,
|
||||
"system/sepolicy/apex/com.android.vndk-file_contexts": nil,
|
||||
"mylib.cpp": nil,
|
||||
"mylib_common.cpp": nil,
|
||||
"mytest.cpp": nil,
|
||||
"mytest1.cpp": nil,
|
||||
"mytest2.cpp": nil,
|
||||
"mytest3.cpp": nil,
|
||||
"myprebuilt": nil,
|
||||
"my_include": nil,
|
||||
"foo/bar/MyClass.java": nil,
|
||||
"prebuilt.jar": nil,
|
||||
"vendor/foo/devkeys/test.x509.pem": nil,
|
||||
"vendor/foo/devkeys/test.pk8": nil,
|
||||
"testkey.x509.pem": nil,
|
||||
"testkey.pk8": nil,
|
||||
"testkey.override.x509.pem": nil,
|
||||
"testkey.override.pk8": nil,
|
||||
"vendor/foo/devkeys/testkey.avbpubkey": nil,
|
||||
"vendor/foo/devkeys/testkey.pem": nil,
|
||||
"NOTICE": nil,
|
||||
"custom_notice": nil,
|
||||
"testkey2.avbpubkey": nil,
|
||||
"testkey2.pem": nil,
|
||||
"myapex-arm64.apex": nil,
|
||||
"myapex-arm.apex": nil,
|
||||
"frameworks/base/api/current.txt": nil,
|
||||
"framework/aidl/a.aidl": nil,
|
||||
"build/make/core/proguard.flags": nil,
|
||||
"build/make/core/proguard_basic_keeps.flags": nil,
|
||||
"dummy.txt": nil,
|
||||
"mylib.cpp": nil,
|
||||
"mylib_common.cpp": nil,
|
||||
"mytest.cpp": nil,
|
||||
"mytest1.cpp": nil,
|
||||
"mytest2.cpp": nil,
|
||||
"mytest3.cpp": nil,
|
||||
"myprebuilt": nil,
|
||||
"my_include": nil,
|
||||
"foo/bar/MyClass.java": nil,
|
||||
"prebuilt.jar": nil,
|
||||
"vendor/foo/devkeys/test.x509.pem": nil,
|
||||
"vendor/foo/devkeys/test.pk8": nil,
|
||||
"testkey.x509.pem": nil,
|
||||
"testkey.pk8": nil,
|
||||
"testkey.override.x509.pem": nil,
|
||||
"testkey.override.pk8": nil,
|
||||
"vendor/foo/devkeys/testkey.avbpubkey": nil,
|
||||
"vendor/foo/devkeys/testkey.pem": nil,
|
||||
"NOTICE": nil,
|
||||
"custom_notice": nil,
|
||||
"testkey2.avbpubkey": nil,
|
||||
"testkey2.pem": nil,
|
||||
"myapex-arm64.apex": nil,
|
||||
"myapex-arm.apex": nil,
|
||||
"frameworks/base/api/current.txt": nil,
|
||||
"framework/aidl/a.aidl": nil,
|
||||
"build/make/core/proguard.flags": nil,
|
||||
"build/make/core/proguard_basic_keeps.flags": nil,
|
||||
"dummy.txt": nil,
|
||||
}
|
||||
|
||||
for _, handler := range handlers {
|
||||
handler(fs, config)
|
||||
// The fs now needs to be populated before creating the config, call handlers twice
|
||||
// for now, once to get any fs changes, and later after the config was created to
|
||||
// set product variables or targets.
|
||||
tempConfig := android.TestArchConfig(buildDir, nil, bp, fs)
|
||||
handler(fs, tempConfig)
|
||||
}
|
||||
|
||||
ctx.MockFileSystem(fs)
|
||||
config := android.TestArchConfig(buildDir, nil, bp, fs)
|
||||
config.TestProductVariables.DeviceVndkVersion = proptools.StringPtr("current")
|
||||
config.TestProductVariables.DefaultAppCertificate = proptools.StringPtr("vendor/foo/devkeys/test")
|
||||
config.TestProductVariables.CertificateOverrides = []string{"myapex_keytest:myapex.certificate.override"}
|
||||
config.TestProductVariables.Platform_sdk_codename = proptools.StringPtr("Q")
|
||||
config.TestProductVariables.Platform_sdk_final = proptools.BoolPtr(false)
|
||||
config.TestProductVariables.Platform_vndk_version = proptools.StringPtr("VER")
|
||||
|
||||
for _, handler := range handlers {
|
||||
// The fs now needs to be populated before creating the config, call handlers twice
|
||||
// for now, earlier to get any fs changes, and now after the config was created to
|
||||
// set product variables or targets.
|
||||
tempFS := map[string][]byte{}
|
||||
handler(tempFS, config)
|
||||
}
|
||||
|
||||
ctx := android.NewTestArchContext()
|
||||
ctx.RegisterModuleType("apex", BundleFactory)
|
||||
ctx.RegisterModuleType("apex_test", testApexBundleFactory)
|
||||
ctx.RegisterModuleType("apex_vndk", vndkApexBundleFactory)
|
||||
ctx.RegisterModuleType("apex_key", ApexKeyFactory)
|
||||
ctx.RegisterModuleType("apex_defaults", defaultsFactory)
|
||||
ctx.RegisterModuleType("prebuilt_apex", PrebuiltFactory)
|
||||
ctx.RegisterModuleType("override_apex", overrideApexFactory)
|
||||
|
||||
ctx.RegisterModuleType("cc_library", cc.LibraryFactory)
|
||||
ctx.RegisterModuleType("cc_library_shared", cc.LibrarySharedFactory)
|
||||
ctx.RegisterModuleType("cc_library_headers", cc.LibraryHeaderFactory)
|
||||
ctx.RegisterModuleType("cc_prebuilt_library_shared", cc.PrebuiltSharedLibraryFactory)
|
||||
ctx.RegisterModuleType("cc_prebuilt_library_static", cc.PrebuiltStaticLibraryFactory)
|
||||
ctx.RegisterModuleType("cc_binary", cc.BinaryFactory)
|
||||
ctx.RegisterModuleType("cc_object", cc.ObjectFactory)
|
||||
ctx.RegisterModuleType("cc_defaults", func() android.Module {
|
||||
return cc.DefaultsFactory()
|
||||
})
|
||||
ctx.RegisterModuleType("cc_test", cc.TestFactory)
|
||||
ctx.RegisterModuleType("llndk_library", cc.LlndkLibraryFactory)
|
||||
ctx.RegisterModuleType("vndk_prebuilt_shared", cc.VndkPrebuiltSharedFactory)
|
||||
ctx.RegisterModuleType("vndk_libraries_txt", cc.VndkLibrariesTxtFactory)
|
||||
ctx.RegisterModuleType("toolchain_library", cc.ToolchainLibraryFactory)
|
||||
ctx.RegisterModuleType("prebuilt_etc", android.PrebuiltEtcFactory)
|
||||
ctx.RegisterModuleType("sh_binary", android.ShBinaryFactory)
|
||||
ctx.RegisterModuleType("android_app_certificate", java.AndroidAppCertificateFactory)
|
||||
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
|
||||
ctx.RegisterModuleType("java_library", java.LibraryFactory)
|
||||
ctx.RegisterModuleType("java_import", java.ImportFactory)
|
||||
ctx.RegisterModuleType("java_system_modules", java.SystemModulesFactory)
|
||||
ctx.RegisterModuleType("android_app", java.AndroidAppFactory)
|
||||
ctx.RegisterModuleType("android_app_import", java.AndroidAppImportFactory)
|
||||
ctx.RegisterModuleType("override_android_app", java.OverrideAndroidAppModuleFactory)
|
||||
|
||||
ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
|
||||
ctx.PreArchMutators(func(ctx android.RegisterMutatorsContext) {
|
||||
ctx.BottomUp("prebuilts", android.PrebuiltMutator).Parallel()
|
||||
})
|
||||
ctx.PreDepsMutators(func(ctx android.RegisterMutatorsContext) {
|
||||
ctx.BottomUp("vndk", cc.VndkMutator).Parallel()
|
||||
ctx.BottomUp("link", cc.LinkageMutator).Parallel()
|
||||
ctx.BottomUp("test_per_src", cc.TestPerSrcMutator).Parallel()
|
||||
ctx.BottomUp("version", cc.VersionMutator).Parallel()
|
||||
ctx.BottomUp("begin", cc.BeginMutator).Parallel()
|
||||
})
|
||||
ctx.PreDepsMutators(RegisterPreDepsMutators)
|
||||
ctx.PostDepsMutators(android.RegisterOverridePostDepsMutators)
|
||||
ctx.PostDepsMutators(RegisterPostDepsMutators)
|
||||
ctx.PostDepsMutators(func(ctx android.RegisterMutatorsContext) {
|
||||
ctx.TopDown("prebuilt_select", android.PrebuiltSelectModuleMutator).Parallel()
|
||||
ctx.BottomUp("prebuilt_postdeps", android.PrebuiltPostDepsMutator).Parallel()
|
||||
})
|
||||
|
||||
ctx.Register(config)
|
||||
|
||||
return ctx, config
|
||||
}
|
||||
|
Reference in New Issue
Block a user