Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47832975 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "enforce updatable apexes to set min_sdk_version"

parents 9105fa38 548640b5
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -1021,8 +1021,10 @@ type apexBundleProperties struct {
	IsCoverageVariant bool `blueprint:"mutated"`

	// Whether this APEX is considered updatable or not. When set to true, this will enforce additional
	// rules for making sure that the APEX is truely updatable. This will also disable the size optimizations
	// like symlinking to the system libs. Default is false.
	// rules for making sure that the APEX is truly updatable.
	// - To be updatable, min_sdk_version should be set as well
	// This will also disable the size optimizations like symlinking to the system libs.
	// Default is false.
	Updatable *bool

	// The minimum SDK version that this apex must be compatibile with.
@@ -1794,6 +1796,14 @@ func (a *apexBundle) checkApexAvailability(ctx android.ModuleContext) {
	})
}

func (a *apexBundle) checkUpdatable(ctx android.ModuleContext) {
	if proptools.Bool(a.properties.Updatable) {
		if String(a.properties.Min_sdk_version) == "" {
			ctx.PropertyErrorf("updatable", "updatable APEXes should set min_sdk_version as well")
		}
	}
}

// Collects the list of module names that directly or indirectly contributes to the payload of this APEX
func (a *apexBundle) collectDepsInfo(ctx android.ModuleContext) {
	a.depInfos = make(map[string]depInfo)
@@ -1859,6 +1869,7 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
	}

	a.checkApexAvailability(ctx)
	a.checkUpdatable(ctx)

	a.collectDepsInfo(ctx)

+19 −0
Original line number Diff line number Diff line
@@ -4099,6 +4099,7 @@ func TestSymlinksFromApexToSystem(t *testing.T) {
			native_shared_libs: ["mylib"],
			java_libs: ["myjar"],
			updatable: true,
			min_sdk_version: "current",
		}

		apex_key {
@@ -4396,6 +4397,22 @@ func testNoUpdatableJarsInBootImage(t *testing.T, errmsg, bp string, transformDe
	}
}

func TestUpdatable_should_set_min_sdk_version(t *testing.T) {
	testApexError(t, `"myapex" .*: updatable: updatable APEXes should set min_sdk_version`, `
		apex {
			name: "myapex",
			key: "myapex.key",
			updatable: true,
		}

		apex_key {
			name: "myapex.key",
			public_key: "testkey.avbpubkey",
			private_key: "testkey.pem",
		}
	`)
}

func TestNoUpdatableJarsInBootImage(t *testing.T) {
	bp := `
		java_library {
@@ -4434,6 +4451,7 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) {
			key: "some-updatable-apex.key",
			java_libs: ["some-updatable-apex-lib"],
			updatable: true,
			min_sdk_version: "current",
		}

		apex {
@@ -4455,6 +4473,7 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) {
			key: "com.android.art.something.key",
			java_libs: ["some-art-lib"],
			updatable: true,
			min_sdk_version: "current",
		}

		apex_key {