Loading rust/testing.go +0 −1 Original line number Diff line number Diff line Loading @@ -75,7 +75,6 @@ func GatherRequiredDepsForTest() string { apex_available: ["//apex_available:platform", "//apex_available:anyapex"], min_sdk_version: "29", vendor_available: true, host_supported: true, recovery_available: true, llndk: { symbol_file: "liblog.map.txt", Loading sysprop/Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,6 @@ bootstrap_go_package { "soong-android", "soong-cc", "soong-java", "soong-rust", ], srcs: [ "sysprop_library.go", Loading sysprop/sysprop_library.go +0 −125 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import ( "io" "os" "path" "strings" "sync" "github.com/google/blueprint" Loading @@ -30,7 +29,6 @@ import ( "android/soong/android" "android/soong/cc" "android/soong/java" "android/soong/rust" ) type dependencyTag struct { Loading @@ -53,16 +51,7 @@ type syspropJavaGenRule struct { genSrcjars android.Paths } type syspropRustGenRule struct { android.ModuleBase properties syspropGenProperties genSrcs android.Paths } var _ android.OutputFileProducer = (*syspropJavaGenRule)(nil) var _ android.OutputFileProducer = (*syspropRustGenRule)(nil) var ( syspropJava = pctx.AndroidStaticRule("syspropJava", Loading @@ -75,20 +64,11 @@ var ( "$soongZipCmd", }, }, "scope") syspropRust = pctx.AndroidStaticRule("syspropRust", blueprint.RuleParams{ Command: `rm -rf $out_dir && mkdir -p $out_dir && ` + `$syspropRustCmd --scope $scope --rust-output-dir $out_dir $in`, CommandDeps: []string{ "$syspropRustCmd", }, }, "scope", "out_dir") ) func init() { pctx.HostBinToolVariable("soongZipCmd", "soong_zip") pctx.HostBinToolVariable("syspropJavaCmd", "sysprop_java") pctx.HostBinToolVariable("syspropRustCmd", "sysprop_rust") } // syspropJavaGenRule module generates srcjar containing generated java APIs. Loading Loading @@ -142,56 +122,6 @@ func syspropJavaGenFactory() android.Module { return g } // syspropRustGenRule module generates rust source files containing generated rust APIs. // It also depends on check api rule, so api check has to pass to use sysprop_library. func (g *syspropRustGenRule) GenerateAndroidBuildActions(ctx android.ModuleContext) { var checkApiFileTimeStamp android.WritablePath ctx.VisitDirectDeps(func(dep android.Module) { if m, ok := dep.(*syspropLibrary); ok { checkApiFileTimeStamp = m.checkApiFileTimeStamp } }) for _, syspropFile := range android.PathsForModuleSrc(ctx, g.properties.Srcs) { syspropDir := strings.TrimSuffix(syspropFile.String(), syspropFile.Ext()) outputDir := android.PathForModuleGen(ctx, syspropDir, "src") libPath := android.PathForModuleGen(ctx, syspropDir, "src", "lib.rs") parsersPath := android.PathForModuleGen(ctx, syspropDir, "src", "gen_parsers_and_formatters.rs") ctx.Build(pctx, android.BuildParams{ Rule: syspropRust, Description: "sysprop_rust " + syspropFile.Rel(), Outputs: android.WritablePaths{libPath, parsersPath}, Input: syspropFile, Implicit: checkApiFileTimeStamp, Args: map[string]string{ "scope": g.properties.Scope, "out_dir": outputDir.String(), }, }) g.genSrcs = append(g.genSrcs, libPath, parsersPath) } } func (g *syspropRustGenRule) DepsMutator(ctx android.BottomUpMutatorContext) { // Add a dependency from the stubs to sysprop library so that the generator rule can depend on // the check API rule of the sysprop library. ctx.AddFarVariationDependencies(nil, nil, proptools.String(g.properties.Check_api)) } func (g *syspropRustGenRule) OutputFiles(_ string) (android.Paths, error) { return g.genSrcs, nil } func syspropRustGenFactory() android.Module { g := &syspropRustGenRule{} g.AddProperties(&g.properties) android.InitAndroidModule(g) return g } type syspropLibrary struct { android.ModuleBase android.ApexModuleBase Loading Loading @@ -250,12 +180,6 @@ type syspropLibraryProperties struct { // Forwarded to java_library.min_sdk_version Min_sdk_version *string } Rust struct { // Minimum sdk version that the artifact should support when it runs as part of mainline modules(APEX). // Forwarded to rust_library.min_sdk_version Min_sdk_version *string } } var ( Loading Loading @@ -309,21 +233,6 @@ func (m *syspropLibrary) javaGenPublicStubName() string { return m.BaseModuleName() + "_java_gen_public" } func (m *syspropLibrary) rustGenModuleName() string { return m.rustCrateName() + "_rust_gen" } func (m *syspropLibrary) rustGenStubName() string { return "lib" + m.rustCrateName() + "_rust" } func (m *syspropLibrary) rustCrateName() string { moduleName := strings.ToLower(m.BaseModuleName()) moduleName = strings.ReplaceAll(moduleName, "-", "_") moduleName = strings.ReplaceAll(moduleName, ".", "_") return moduleName } func (m *syspropLibrary) BaseModuleName() string { return m.ModuleBase.Name() } Loading Loading @@ -527,18 +436,6 @@ type javaLibraryProperties struct { Min_sdk_version *string } type rustLibraryProperties struct { Name *string Srcs []string Installable *bool Crate_name string Rustlibs []string Vendor_available *bool Product_available *bool Apex_available []string Min_sdk_version *string } func syspropLibraryHook(ctx android.LoadHookContext, m *syspropLibrary) { if len(m.properties.Srcs) == 0 { ctx.PropertyErrorf("srcs", "sysprop_library must specify srcs") Loading Loading @@ -667,28 +564,6 @@ func syspropLibraryHook(ctx android.LoadHookContext, m *syspropLibrary) { }) } // Generate a Rust implementation library. ctx.CreateModule(syspropRustGenFactory, &syspropGenProperties{ Srcs: m.properties.Srcs, Scope: scope, Name: proptools.StringPtr(m.rustGenModuleName()), Check_api: proptools.StringPtr(ctx.ModuleName()), }) rustProps := rustLibraryProperties{ Name: proptools.StringPtr(m.rustGenStubName()), Srcs: []string{":" + m.rustGenModuleName()}, Installable: proptools.BoolPtr(false), Crate_name: m.rustCrateName(), Rustlibs: []string{ "librustutils", }, Vendor_available: m.properties.Vendor_available, Product_available: m.properties.Product_available, Apex_available: m.ApexProperties.Apex_available, Min_sdk_version: proptools.StringPtr("29"), } ctx.CreateModule(rust.RustLibraryFactory, &rustProps) // syspropLibraries will be used by property_contexts to check types. // Record absolute paths of sysprop_library to prevent soong_namespace problem. if m.ExportedToMake() { Loading sysprop/sysprop_test.go +12 −24 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import ( "android/soong/android" "android/soong/cc" "android/soong/java" "android/soong/rust" "github.com/google/blueprint/proptools" ) Loading @@ -47,6 +46,18 @@ func test(t *testing.T, bp string) *android.TestResult { recovery_available: true, } cc_library { name: "liblog", no_libcrt: true, nocrt: true, system_shared_libs: [], recovery_available: true, host_supported: true, llndk: { symbol_file: "liblog.map.txt", } } java_library { name: "sysprop-library-stub-platform", sdk_version: "core_current", Loading @@ -63,15 +74,6 @@ func test(t *testing.T, bp string) *android.TestResult { product_specific: true, sdk_version: "core_current", } rust_library { name: "librustutils", crate_name: "rustutils", srcs: ["librustutils/lib.rs"], product_available: true, vendor_available: true, min_sdk_version: "29", } ` mockFS := android.MockFS{ Loading Loading @@ -113,14 +115,11 @@ func test(t *testing.T, bp string) *android.TestResult { "android/sysprop/PlatformProperties.sysprop": nil, "com/android/VendorProperties.sysprop": nil, "com/android2/OdmProperties.sysprop": nil, "librustutils/lib.rs": nil, } result := android.GroupFixturePreparers( cc.PrepareForTestWithCcDefaultModules, java.PrepareForTestWithJavaDefaultModules, rust.PrepareForTestWithRustDefaultModules, PrepareForTestWithSyspropBuildComponents, android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { variables.DeviceSystemSdkVersions = []string{"28"} Loading Loading @@ -357,10 +356,6 @@ func TestApexAvailabilityIsForwarded(t *testing.T) { javaModule := result.ModuleForTests("sysprop-platform", "android_common").Module().(*java.Library) propFromJava := javaModule.ApexProperties.Apex_available android.AssertDeepEquals(t, "apex_available forwarding to java module", expected, propFromJava) rustModule := result.ModuleForTests("libsysprop_platform_rust", "android_arm64_armv8-a_rlib_rlib-std").Module().(*rust.Module) propFromRust := rustModule.ApexProperties.Apex_available android.AssertDeepEquals(t, "apex_available forwarding to rust module", expected, propFromRust) } func TestMinSdkVersionIsForwarded(t *testing.T) { Loading @@ -376,9 +371,6 @@ func TestMinSdkVersionIsForwarded(t *testing.T) { java: { min_sdk_version: "30", }, rust: { min_sdk_version: "29", } } `) Loading @@ -389,8 +381,4 @@ func TestMinSdkVersionIsForwarded(t *testing.T) { javaModule := result.ModuleForTests("sysprop-platform", "android_common").Module().(*java.Library) propFromJava := javaModule.MinSdkVersionString() android.AssertStringEquals(t, "min_sdk_version forwarding to java module", "30", propFromJava) rustModule := result.ModuleForTests("libsysprop_platform_rust", "android_arm64_armv8-a_rlib_rlib-std").Module().(*rust.Module) propFromRust := proptools.String(rustModule.Properties.Min_sdk_version) android.AssertStringEquals(t, "min_sdk_version forwarding to rust module", "29", propFromRust) } Loading
rust/testing.go +0 −1 Original line number Diff line number Diff line Loading @@ -75,7 +75,6 @@ func GatherRequiredDepsForTest() string { apex_available: ["//apex_available:platform", "//apex_available:anyapex"], min_sdk_version: "29", vendor_available: true, host_supported: true, recovery_available: true, llndk: { symbol_file: "liblog.map.txt", Loading
sysprop/Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,6 @@ bootstrap_go_package { "soong-android", "soong-cc", "soong-java", "soong-rust", ], srcs: [ "sysprop_library.go", Loading
sysprop/sysprop_library.go +0 −125 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import ( "io" "os" "path" "strings" "sync" "github.com/google/blueprint" Loading @@ -30,7 +29,6 @@ import ( "android/soong/android" "android/soong/cc" "android/soong/java" "android/soong/rust" ) type dependencyTag struct { Loading @@ -53,16 +51,7 @@ type syspropJavaGenRule struct { genSrcjars android.Paths } type syspropRustGenRule struct { android.ModuleBase properties syspropGenProperties genSrcs android.Paths } var _ android.OutputFileProducer = (*syspropJavaGenRule)(nil) var _ android.OutputFileProducer = (*syspropRustGenRule)(nil) var ( syspropJava = pctx.AndroidStaticRule("syspropJava", Loading @@ -75,20 +64,11 @@ var ( "$soongZipCmd", }, }, "scope") syspropRust = pctx.AndroidStaticRule("syspropRust", blueprint.RuleParams{ Command: `rm -rf $out_dir && mkdir -p $out_dir && ` + `$syspropRustCmd --scope $scope --rust-output-dir $out_dir $in`, CommandDeps: []string{ "$syspropRustCmd", }, }, "scope", "out_dir") ) func init() { pctx.HostBinToolVariable("soongZipCmd", "soong_zip") pctx.HostBinToolVariable("syspropJavaCmd", "sysprop_java") pctx.HostBinToolVariable("syspropRustCmd", "sysprop_rust") } // syspropJavaGenRule module generates srcjar containing generated java APIs. Loading Loading @@ -142,56 +122,6 @@ func syspropJavaGenFactory() android.Module { return g } // syspropRustGenRule module generates rust source files containing generated rust APIs. // It also depends on check api rule, so api check has to pass to use sysprop_library. func (g *syspropRustGenRule) GenerateAndroidBuildActions(ctx android.ModuleContext) { var checkApiFileTimeStamp android.WritablePath ctx.VisitDirectDeps(func(dep android.Module) { if m, ok := dep.(*syspropLibrary); ok { checkApiFileTimeStamp = m.checkApiFileTimeStamp } }) for _, syspropFile := range android.PathsForModuleSrc(ctx, g.properties.Srcs) { syspropDir := strings.TrimSuffix(syspropFile.String(), syspropFile.Ext()) outputDir := android.PathForModuleGen(ctx, syspropDir, "src") libPath := android.PathForModuleGen(ctx, syspropDir, "src", "lib.rs") parsersPath := android.PathForModuleGen(ctx, syspropDir, "src", "gen_parsers_and_formatters.rs") ctx.Build(pctx, android.BuildParams{ Rule: syspropRust, Description: "sysprop_rust " + syspropFile.Rel(), Outputs: android.WritablePaths{libPath, parsersPath}, Input: syspropFile, Implicit: checkApiFileTimeStamp, Args: map[string]string{ "scope": g.properties.Scope, "out_dir": outputDir.String(), }, }) g.genSrcs = append(g.genSrcs, libPath, parsersPath) } } func (g *syspropRustGenRule) DepsMutator(ctx android.BottomUpMutatorContext) { // Add a dependency from the stubs to sysprop library so that the generator rule can depend on // the check API rule of the sysprop library. ctx.AddFarVariationDependencies(nil, nil, proptools.String(g.properties.Check_api)) } func (g *syspropRustGenRule) OutputFiles(_ string) (android.Paths, error) { return g.genSrcs, nil } func syspropRustGenFactory() android.Module { g := &syspropRustGenRule{} g.AddProperties(&g.properties) android.InitAndroidModule(g) return g } type syspropLibrary struct { android.ModuleBase android.ApexModuleBase Loading Loading @@ -250,12 +180,6 @@ type syspropLibraryProperties struct { // Forwarded to java_library.min_sdk_version Min_sdk_version *string } Rust struct { // Minimum sdk version that the artifact should support when it runs as part of mainline modules(APEX). // Forwarded to rust_library.min_sdk_version Min_sdk_version *string } } var ( Loading Loading @@ -309,21 +233,6 @@ func (m *syspropLibrary) javaGenPublicStubName() string { return m.BaseModuleName() + "_java_gen_public" } func (m *syspropLibrary) rustGenModuleName() string { return m.rustCrateName() + "_rust_gen" } func (m *syspropLibrary) rustGenStubName() string { return "lib" + m.rustCrateName() + "_rust" } func (m *syspropLibrary) rustCrateName() string { moduleName := strings.ToLower(m.BaseModuleName()) moduleName = strings.ReplaceAll(moduleName, "-", "_") moduleName = strings.ReplaceAll(moduleName, ".", "_") return moduleName } func (m *syspropLibrary) BaseModuleName() string { return m.ModuleBase.Name() } Loading Loading @@ -527,18 +436,6 @@ type javaLibraryProperties struct { Min_sdk_version *string } type rustLibraryProperties struct { Name *string Srcs []string Installable *bool Crate_name string Rustlibs []string Vendor_available *bool Product_available *bool Apex_available []string Min_sdk_version *string } func syspropLibraryHook(ctx android.LoadHookContext, m *syspropLibrary) { if len(m.properties.Srcs) == 0 { ctx.PropertyErrorf("srcs", "sysprop_library must specify srcs") Loading Loading @@ -667,28 +564,6 @@ func syspropLibraryHook(ctx android.LoadHookContext, m *syspropLibrary) { }) } // Generate a Rust implementation library. ctx.CreateModule(syspropRustGenFactory, &syspropGenProperties{ Srcs: m.properties.Srcs, Scope: scope, Name: proptools.StringPtr(m.rustGenModuleName()), Check_api: proptools.StringPtr(ctx.ModuleName()), }) rustProps := rustLibraryProperties{ Name: proptools.StringPtr(m.rustGenStubName()), Srcs: []string{":" + m.rustGenModuleName()}, Installable: proptools.BoolPtr(false), Crate_name: m.rustCrateName(), Rustlibs: []string{ "librustutils", }, Vendor_available: m.properties.Vendor_available, Product_available: m.properties.Product_available, Apex_available: m.ApexProperties.Apex_available, Min_sdk_version: proptools.StringPtr("29"), } ctx.CreateModule(rust.RustLibraryFactory, &rustProps) // syspropLibraries will be used by property_contexts to check types. // Record absolute paths of sysprop_library to prevent soong_namespace problem. if m.ExportedToMake() { Loading
sysprop/sysprop_test.go +12 −24 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import ( "android/soong/android" "android/soong/cc" "android/soong/java" "android/soong/rust" "github.com/google/blueprint/proptools" ) Loading @@ -47,6 +46,18 @@ func test(t *testing.T, bp string) *android.TestResult { recovery_available: true, } cc_library { name: "liblog", no_libcrt: true, nocrt: true, system_shared_libs: [], recovery_available: true, host_supported: true, llndk: { symbol_file: "liblog.map.txt", } } java_library { name: "sysprop-library-stub-platform", sdk_version: "core_current", Loading @@ -63,15 +74,6 @@ func test(t *testing.T, bp string) *android.TestResult { product_specific: true, sdk_version: "core_current", } rust_library { name: "librustutils", crate_name: "rustutils", srcs: ["librustutils/lib.rs"], product_available: true, vendor_available: true, min_sdk_version: "29", } ` mockFS := android.MockFS{ Loading Loading @@ -113,14 +115,11 @@ func test(t *testing.T, bp string) *android.TestResult { "android/sysprop/PlatformProperties.sysprop": nil, "com/android/VendorProperties.sysprop": nil, "com/android2/OdmProperties.sysprop": nil, "librustutils/lib.rs": nil, } result := android.GroupFixturePreparers( cc.PrepareForTestWithCcDefaultModules, java.PrepareForTestWithJavaDefaultModules, rust.PrepareForTestWithRustDefaultModules, PrepareForTestWithSyspropBuildComponents, android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { variables.DeviceSystemSdkVersions = []string{"28"} Loading Loading @@ -357,10 +356,6 @@ func TestApexAvailabilityIsForwarded(t *testing.T) { javaModule := result.ModuleForTests("sysprop-platform", "android_common").Module().(*java.Library) propFromJava := javaModule.ApexProperties.Apex_available android.AssertDeepEquals(t, "apex_available forwarding to java module", expected, propFromJava) rustModule := result.ModuleForTests("libsysprop_platform_rust", "android_arm64_armv8-a_rlib_rlib-std").Module().(*rust.Module) propFromRust := rustModule.ApexProperties.Apex_available android.AssertDeepEquals(t, "apex_available forwarding to rust module", expected, propFromRust) } func TestMinSdkVersionIsForwarded(t *testing.T) { Loading @@ -376,9 +371,6 @@ func TestMinSdkVersionIsForwarded(t *testing.T) { java: { min_sdk_version: "30", }, rust: { min_sdk_version: "29", } } `) Loading @@ -389,8 +381,4 @@ func TestMinSdkVersionIsForwarded(t *testing.T) { javaModule := result.ModuleForTests("sysprop-platform", "android_common").Module().(*java.Library) propFromJava := javaModule.MinSdkVersionString() android.AssertStringEquals(t, "min_sdk_version forwarding to java module", "30", propFromJava) rustModule := result.ModuleForTests("libsysprop_platform_rust", "android_arm64_armv8-a_rlib_rlib-std").Module().(*rust.Module) propFromRust := proptools.String(rustModule.Properties.Min_sdk_version) android.AssertStringEquals(t, "min_sdk_version forwarding to rust module", "29", propFromRust) }