HACK: allow apps with pre-release SDK RESTRICT AUTOMERGE

Revert before releasing
Let the apps built with pre-release Tiramisu SDK parse
+ fix a test that didn't expect REL builds to throw
  when checking for lettered versions

Bug: 275409981
Test: build
Change-Id: I59aa3ff00105e9934e983670a851d0e475df787e
Merged-In: I59aa3ff00105e9934e983670a851d0e475df787e
This commit is contained in:
Alex Buynytskyy
2023-04-13 20:22:24 +00:00
parent fa88b4502d
commit 5690b602c2
3 changed files with 45 additions and 10 deletions

View File

@@ -2628,6 +2628,15 @@ public class PackageParser {
return Build.VERSION_CODES.CUR_DEVELOPMENT;
}
// STOPSHIP: hack for the pre-release SDK
if (platformSdkCodenames.length == 0
&& Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals(
targetCode)) {
Slog.w(TAG, "Package requires development platform " + targetCode
+ ", returning current version " + Build.VERSION.SDK_INT);
return Build.VERSION.SDK_INT;
}
// Otherwise, we're looking at an incompatible pre-release SDK.
if (platformSdkCodenames.length > 0) {
outError[0] = "Requires development platform " + targetCode
@@ -2699,6 +2708,15 @@ public class PackageParser {
return Build.VERSION_CODES.CUR_DEVELOPMENT;
}
// STOPSHIP: hack for the pre-release SDK
if (platformSdkCodenames.length == 0
&& Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals(
minCode)) {
Slog.w(TAG, "Package requires min development platform " + minCode
+ ", returning current version " + Build.VERSION.SDK_INT);
return Build.VERSION.SDK_INT;
}
// Otherwise, we're looking at an incompatible pre-release SDK.
if (platformSdkCodenames.length > 0) {
outError[0] = "Requires development platform " + minCode

View File

@@ -316,6 +316,15 @@ public class FrameworkParsingPackageUtils {
return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
}
// STOPSHIP: hack for the pre-release SDK
if (platformSdkCodenames.length == 0
&& Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals(
minCode)) {
Slog.w(TAG, "Parsed package requires min development platform " + minCode
+ ", returning current version " + Build.VERSION.SDK_INT);
return input.success(Build.VERSION.SDK_INT);
}
// Otherwise, we're looking at an incompatible pre-release SDK.
if (platformSdkCodenames.length > 0) {
return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK,
@@ -368,19 +377,27 @@ public class FrameworkParsingPackageUtils {
return input.success(targetVers);
}
// If it's a pre-release SDK and the codename matches this platform, it
// definitely targets this SDK.
if (matchTargetCode(platformSdkCodenames, targetCode)) {
return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
}
// STOPSHIP: hack for the pre-release SDK
if (platformSdkCodenames.length == 0
&& Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals(
targetCode)) {
Slog.w(TAG, "Parsed package requires development platform " + targetCode
+ ", returning current version " + Build.VERSION.SDK_INT);
return input.success(Build.VERSION.SDK_INT);
}
try {
if (allowUnknownCodenames && UnboundedSdkLevel.isAtMost(targetCode)) {
return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
}
} catch (IllegalArgumentException e) {
// isAtMost() throws it when encountering an older SDK codename
return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, e.getMessage());
}
// If it's a pre-release SDK and the codename matches this platform, it
// definitely targets this SDK.
if (matchTargetCode(platformSdkCodenames, targetCode)) {
return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, "Bad package SDK");
}
// Otherwise, we're looking at an incompatible pre-release SDK.

View File

@@ -445,14 +445,14 @@ public class SystemConfigTest {
+ " <library \n"
+ " name=\"foo\"\n"
+ " file=\"" + mFooJar + "\"\n"
+ " on-bootclasspath-before=\"Q\"\n"
+ " on-bootclasspath-before=\"A\"\n"
+ " on-bootclasspath-since=\"W\"\n"
+ " />\n\n"
+ " </permissions>";
parseSharedLibraries(contents);
assertFooIsOnlySharedLibrary();
SystemConfig.SharedLibraryEntry entry = mSysConfig.getSharedLibraries().get("foo");
assertThat(entry.onBootclasspathBefore).isEqualTo("Q");
assertThat(entry.onBootclasspathBefore).isEqualTo("A");
assertThat(entry.onBootclasspathSince).isEqualTo("W");
}