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

Commit 9fd56471 authored by Paul Duffin's avatar Paul Duffin
Browse files

bootclasspath_fragment: Require at least one hidden_api package property

Previously, the split_packages, single_packages and package_prefixes
properties were all optional and the split_packages defaulted to ["*"].
As that value conflicted with the other package properties that meant
that split_packages always had to be specified even if it was to just
set it to an empty array.

This change requires at least one of them to be specified and defaults
split_packages to an empty list which means it is not required,
although it can be helpful to make that explicit.

Bug: 194063708
Test: m nothing
Change-Id: I5a4c2d68e72e39f5c4a2441326dfce8685fc8ff2
parent ff9b6fab
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -6227,6 +6227,9 @@ func TestOverrideApex(t *testing.T) {
			name: "mybootclasspath_fragment",
			contents: ["bcplib"],
			apex_available: ["myapex"],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		java_library {
@@ -6241,6 +6244,9 @@ func TestOverrideApex(t *testing.T) {
			name: "override_bootclasspath_fragment",
			contents: ["override_bcplib"],
			apex_available: ["myapex"],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		java_library {
@@ -7294,6 +7300,9 @@ func testNoUpdatableJarsInBootImage(t *testing.T, errmsg string, preparer androi
			apex_available: [
				"some-non-updatable-apex",
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		java_library {
@@ -7352,6 +7361,9 @@ func testNoUpdatableJarsInBootImage(t *testing.T, errmsg string, preparer androi
			apex_available: [
				"com.android.art.debug",
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		apex_key {
@@ -8695,6 +8707,9 @@ func TestApexJavaCoverage(t *testing.T) {
			name: "mybootclasspathfragment",
			contents: ["mybootclasspathlib"],
			apex_available: ["myapex"],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		java_library {
@@ -9015,6 +9030,9 @@ func TestSdkLibraryCanHaveHigherMinSdkVersion(t *testing.T) {
				name: "mybootclasspathfragment",
				contents: ["mybootclasspathlib"],
				apex_available: ["myapex"],
				hidden_api: {
					split_packages: ["*"],
				},
			}

			java_sdk_library {
@@ -9115,6 +9133,9 @@ func TestSdkLibraryCanHaveHigherMinSdkVersion(t *testing.T) {
					name: "mybootclasspathfragment",
					contents: ["mybootclasspathlib"],
					apex_available: ["myapex"],
					hidden_api: {
						split_packages: ["*"],
					},
				}

				java_sdk_library {
@@ -9334,6 +9355,9 @@ func TestApexStrictUpdtabilityLintBcpFragmentDeps(t *testing.T) {
			name: "mybootclasspathfragment",
			contents: ["myjavalib"],
			apex_available: ["myapex"],
			hidden_api: {
				split_packages: ["*"],
			},
		}
		java_library {
			name: "myjavalib",
+33 −0
Original line number Diff line number Diff line
@@ -110,6 +110,9 @@ func TestBootclasspathFragments(t *testing.T) {
			apex_available: [
				"com.android.art",
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}
`,
	)
@@ -209,6 +212,9 @@ func TestBootclasspathFragments_FragmentDependency(t *testing.T) {
			apex_available: [
				"com.android.art",
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		bootclasspath_fragment {
@@ -220,6 +226,9 @@ func TestBootclasspathFragments_FragmentDependency(t *testing.T) {
							module: "art-bootclasspath-fragment",
					},
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}
`,
	)
@@ -361,6 +370,9 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) {
				apex_available: [
					"com.android.art",
				],
				hidden_api: {
					split_packages: ["*"],
				},
			}
		`, contentsInsert(contents))

@@ -853,6 +865,9 @@ func TestBootclasspathFragmentContentsNoName(t *testing.T) {
			apex_available: [
				"myapex",
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}
	`)

@@ -959,6 +974,9 @@ func TestBootclasspathFragment_HiddenAPIList(t *testing.T) {
			apex_available: [
				"com.android.art",
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		apex {
@@ -1010,6 +1028,9 @@ func TestBootclasspathFragment_HiddenAPIList(t *testing.T) {
					module: "art-bootclasspath-fragment",
				},
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}
	`)

@@ -1123,6 +1144,9 @@ func TestBootclasspathFragment_AndroidNonUpdatable(t *testing.T) {
			apex_available: [
				"com.android.art",
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		apex {
@@ -1175,6 +1199,9 @@ func TestBootclasspathFragment_AndroidNonUpdatable(t *testing.T) {
					module: "art-bootclasspath-fragment",
				},
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}
	`)

@@ -1282,6 +1309,9 @@ func TestBootclasspathFragment_AndroidNonUpdatable_AlwaysUsePrebuiltSdks(t *test
			apex_available: [
				"com.android.art",
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		apex {
@@ -1334,6 +1364,9 @@ func TestBootclasspathFragment_AndroidNonUpdatable_AlwaysUsePrebuiltSdks(t *test
					module: "art-bootclasspath-fragment",
				},
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}
	`)

+6 −0
Original line number Diff line number Diff line
@@ -88,6 +88,9 @@ func TestCreateClasspathElements(t *testing.T) {
				"baz",
				"quuz",
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		java_library {
@@ -134,6 +137,9 @@ func TestCreateClasspathElements(t *testing.T) {
			contents: [
				"bar",
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		java_library {
+22 −0
Original line number Diff line number Diff line
@@ -125,6 +125,7 @@ func TestPlatformBootclasspath_Fragments(t *testing.T) {
					unsupported_packages: [
							"bar-unsupported-packages.txt",
					],
					split_packages: ["*"],
				},
			}

@@ -274,6 +275,9 @@ func TestPlatformBootclasspathDependencies(t *testing.T) {
				"baz",
				"quuz",
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		java_library {
@@ -317,6 +321,9 @@ func TestPlatformBootclasspathDependencies(t *testing.T) {
			name: "my-bootclasspath-fragment",
			contents: ["bar"],
			apex_available: ["myapex"],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		apex_key {
@@ -482,6 +489,9 @@ func TestPlatformBootclasspath_AlwaysUsePrebuiltSdks(t *testing.T) {
			contents: [
				"foo", "bar",
			],
			hidden_api: {
				split_packages: ["*"],
			},
		}

		prebuilt_bootclasspath_fragment {
@@ -599,6 +609,9 @@ func TestPlatformBootclasspath_IncludesRemainingApexJars(t *testing.T) {
				generate_classpaths_proto: false,
				contents: ["foo"],
				apex_available: ["myapex"],
				hidden_api: {
					split_packages: ["*"],
				},
			}

			java_library {
@@ -656,6 +669,9 @@ func TestBootJarNotInApex(t *testing.T) {
				contents: [
					"foo",
				],
				hidden_api: {
					split_packages: ["*"],
				},
			}

			platform_bootclasspath {
@@ -696,6 +712,9 @@ func TestBootFragmentNotInApex(t *testing.T) {
			bootclasspath_fragment {
				name: "not-in-apex-fragment",
				contents: ["foo"],
				hidden_api: {
					split_packages: ["*"],
				},
			}

			platform_bootclasspath {
@@ -746,6 +765,9 @@ func TestNonBootJarInFragment(t *testing.T) {
				name: "apex-fragment",
				contents: ["foo", "bar"],
				apex_available:[ "myapex" ],
				hidden_api: {
					split_packages: ["*"],
				},
			}

			platform_bootclasspath {
+10 −3
Original line number Diff line number Diff line
@@ -858,11 +858,18 @@ func (b *BootclasspathFragmentModule) produceHiddenAPIOutput(ctx android.ModuleC
	packagePrefixes := b.sourceOnlyProperties.Hidden_api.Package_prefixes
	singlePackages := b.sourceOnlyProperties.Hidden_api.Single_packages
	if splitPackages != nil || packagePrefixes != nil || singlePackages != nil {
		if splitPackages == nil {
			splitPackages = []string{"*"}
		}
		output.SignaturePatternsPath = buildRuleSignaturePatternsFile(
			ctx, output.AllFlagsPath, splitPackages, packagePrefixes, singlePackages)
	} else if !b.isTestFragment() {
		ctx.ModuleErrorf(`Must specify at least one of the split_packages, package_prefixes and single_packages properties
  If this is a new bootclasspath_fragment or you are unsure what to do add the
  the following to the bootclasspath_fragment:
      hidden_api: {split_packages: ["*"]},
  and then run the following:
      m analyze_bcpf && analyze_bcpf --bcpf %q
  it will analyze the bootclasspath_fragment and provide hints as to what you
  should specify here. If you are happy with its suggestions then you can add
  the --fix option and it will fix them for you.`, b.BaseModuleName())
	}

	return output
Loading