Loading etc/prebuilt_etc.go +30 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ func RegisterPrebuiltEtcBuildComponents(ctx android.RegistrationContext) { ctx.RegisterModuleType("prebuilt_etc", PrebuiltEtcFactory) ctx.RegisterModuleType("prebuilt_etc_host", PrebuiltEtcHostFactory) ctx.RegisterModuleType("prebuilt_etc_cacerts", PrebuiltEtcCaCertsFactory) ctx.RegisterModuleType("prebuilt_avb", PrebuiltAvbFactory) ctx.RegisterModuleType("prebuilt_root", PrebuiltRootFactory) ctx.RegisterModuleType("prebuilt_root_host", PrebuiltRootHostFactory) ctx.RegisterModuleType("prebuilt_usr_share", PrebuiltUserShareFactory) Loading Loading @@ -155,6 +156,9 @@ type PrebuiltEtc struct { additionalDependencies *android.Paths usedSrcsProperty bool // installInRoot is used to return the value of the InstallInRoot() method. The default value is false. // Currently, only prebuilt_avb can be set to true. installInRoot bool makeClass string } Loading Loading @@ -241,6 +245,10 @@ func (p *PrebuiltEtc) DebugRamdiskVariantNeeded(ctx android.BaseModuleContext) b return proptools.Bool(p.properties.Debug_ramdisk_available) || p.ModuleBase.InstallInDebugRamdisk() } func (p *PrebuiltEtc) InstallInRoot() bool { return p.installInRoot } func (p *PrebuiltEtc) RecoveryVariantNeeded(ctx android.BaseModuleContext) bool { return proptools.Bool(p.properties.Recovery_available) || p.ModuleBase.InstallInRecovery() } Loading Loading @@ -494,12 +502,20 @@ func (p *PrebuiltEtc) AndroidModuleBase() *android.ModuleBase { func InitPrebuiltEtcModule(p *PrebuiltEtc, dirBase string) { p.installDirBase = dirBase p.installInRoot = false p.AddProperties(&p.properties) p.AddProperties(&p.subdirProperties) } func InitPrebuiltRootModule(p *PrebuiltEtc) { p.installDirBase = "." p.installInRoot = false p.AddProperties(&p.properties) } func InitPrebuiltAvbModule(p *PrebuiltEtc) { p.installDirBase = "avb" p.installInRoot = true p.AddProperties(&p.properties) } Loading Loading @@ -553,6 +569,20 @@ func PrebuiltEtcCaCertsFactory() android.Module { return module } // Generally, a <partition> directory will contain a `system` subdirectory, but the <partition> of // `prebuilt_avb` will not have a `system` subdirectory. // Ultimately, prebuilt_avb will install the prebuilt artifact to the `avb` subdirectory under the // root directory of the partition: <partition_root>/avb. // prebuilt_avb does not allow adding any other subdirectories. func PrebuiltAvbFactory() android.Module { module := &PrebuiltEtc{} InitPrebuiltAvbModule(module) // This module is device-only android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibFirst) android.InitDefaultableModule(module) return module } // prebuilt_root is for a prebuilt artifact that is installed in // <partition>/ directory. Can't have any sub directories. func PrebuiltRootFactory() android.Module { Loading etc/prebuilt_etc_test.go +25 −0 Original line number Diff line number Diff line Loading @@ -244,6 +244,31 @@ func TestPrebuiltRootInstallDirPathValidate(t *testing.T) { `) } func TestPrebuiltAvbInstallDirPath(t *testing.T) { result := prepareForPrebuiltEtcTest.RunTestWithBp(t, ` prebuilt_avb { name: "foo.conf", src: "foo.conf", filename: "foo.conf", //recovery: true, } `) p := result.Module("foo.conf", "android_arm64_armv8-a").(*PrebuiltEtc) expected := "out/soong/target/product/test_device/root/avb" android.AssertPathRelativeToTopEquals(t, "install dir", expected, p.installDirPath) } func TestPrebuiltAvdInstallDirPathValidate(t *testing.T) { prepareForPrebuiltEtcTest.ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern("filename cannot contain separator")).RunTestWithBp(t, ` prebuilt_avb { name: "foo.conf", src: "foo.conf", filename: "foo/bar.conf", } `) } func TestPrebuiltUserShareInstallDirPath(t *testing.T) { result := prepareForPrebuiltEtcTest.RunTestWithBp(t, ` prebuilt_usr_share { Loading Loading
etc/prebuilt_etc.go +30 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ func RegisterPrebuiltEtcBuildComponents(ctx android.RegistrationContext) { ctx.RegisterModuleType("prebuilt_etc", PrebuiltEtcFactory) ctx.RegisterModuleType("prebuilt_etc_host", PrebuiltEtcHostFactory) ctx.RegisterModuleType("prebuilt_etc_cacerts", PrebuiltEtcCaCertsFactory) ctx.RegisterModuleType("prebuilt_avb", PrebuiltAvbFactory) ctx.RegisterModuleType("prebuilt_root", PrebuiltRootFactory) ctx.RegisterModuleType("prebuilt_root_host", PrebuiltRootHostFactory) ctx.RegisterModuleType("prebuilt_usr_share", PrebuiltUserShareFactory) Loading Loading @@ -155,6 +156,9 @@ type PrebuiltEtc struct { additionalDependencies *android.Paths usedSrcsProperty bool // installInRoot is used to return the value of the InstallInRoot() method. The default value is false. // Currently, only prebuilt_avb can be set to true. installInRoot bool makeClass string } Loading Loading @@ -241,6 +245,10 @@ func (p *PrebuiltEtc) DebugRamdiskVariantNeeded(ctx android.BaseModuleContext) b return proptools.Bool(p.properties.Debug_ramdisk_available) || p.ModuleBase.InstallInDebugRamdisk() } func (p *PrebuiltEtc) InstallInRoot() bool { return p.installInRoot } func (p *PrebuiltEtc) RecoveryVariantNeeded(ctx android.BaseModuleContext) bool { return proptools.Bool(p.properties.Recovery_available) || p.ModuleBase.InstallInRecovery() } Loading Loading @@ -494,12 +502,20 @@ func (p *PrebuiltEtc) AndroidModuleBase() *android.ModuleBase { func InitPrebuiltEtcModule(p *PrebuiltEtc, dirBase string) { p.installDirBase = dirBase p.installInRoot = false p.AddProperties(&p.properties) p.AddProperties(&p.subdirProperties) } func InitPrebuiltRootModule(p *PrebuiltEtc) { p.installDirBase = "." p.installInRoot = false p.AddProperties(&p.properties) } func InitPrebuiltAvbModule(p *PrebuiltEtc) { p.installDirBase = "avb" p.installInRoot = true p.AddProperties(&p.properties) } Loading Loading @@ -553,6 +569,20 @@ func PrebuiltEtcCaCertsFactory() android.Module { return module } // Generally, a <partition> directory will contain a `system` subdirectory, but the <partition> of // `prebuilt_avb` will not have a `system` subdirectory. // Ultimately, prebuilt_avb will install the prebuilt artifact to the `avb` subdirectory under the // root directory of the partition: <partition_root>/avb. // prebuilt_avb does not allow adding any other subdirectories. func PrebuiltAvbFactory() android.Module { module := &PrebuiltEtc{} InitPrebuiltAvbModule(module) // This module is device-only android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibFirst) android.InitDefaultableModule(module) return module } // prebuilt_root is for a prebuilt artifact that is installed in // <partition>/ directory. Can't have any sub directories. func PrebuiltRootFactory() android.Module { Loading
etc/prebuilt_etc_test.go +25 −0 Original line number Diff line number Diff line Loading @@ -244,6 +244,31 @@ func TestPrebuiltRootInstallDirPathValidate(t *testing.T) { `) } func TestPrebuiltAvbInstallDirPath(t *testing.T) { result := prepareForPrebuiltEtcTest.RunTestWithBp(t, ` prebuilt_avb { name: "foo.conf", src: "foo.conf", filename: "foo.conf", //recovery: true, } `) p := result.Module("foo.conf", "android_arm64_armv8-a").(*PrebuiltEtc) expected := "out/soong/target/product/test_device/root/avb" android.AssertPathRelativeToTopEquals(t, "install dir", expected, p.installDirPath) } func TestPrebuiltAvdInstallDirPathValidate(t *testing.T) { prepareForPrebuiltEtcTest.ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern("filename cannot contain separator")).RunTestWithBp(t, ` prebuilt_avb { name: "foo.conf", src: "foo.conf", filename: "foo/bar.conf", } `) } func TestPrebuiltUserShareInstallDirPath(t *testing.T) { result := prepareForPrebuiltEtcTest.RunTestWithBp(t, ` prebuilt_usr_share { Loading