Widevine version genrules
Bug: 327241925 Test: dumpsys android.hardware.drm.IDrmFactory/widevine (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:9f32150e5fae37bc200eaaca3794605a8bf17806) Merged-In: Ice412cd2739f0c8a95af488cf565a3abf484200a Change-Id: Ice412cd2739f0c8a95af488cf565a3abf484200a
This commit is contained in:
committed by
Android Build Coastguard Worker
parent
6c7988f8c9
commit
cada7659cb
@@ -224,6 +224,10 @@ cc_library_static {
|
|||||||
"libutils_headers",
|
"libutils_headers",
|
||||||
],
|
],
|
||||||
|
|
||||||
|
generated_headers: [
|
||||||
|
"wv_android_build_id",
|
||||||
|
],
|
||||||
|
|
||||||
shared_libs: [
|
shared_libs: [
|
||||||
"libbinder_ndk",
|
"libbinder_ndk",
|
||||||
"libcrypto",
|
"libcrypto",
|
||||||
@@ -368,3 +372,36 @@ cc_fuzz {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
python_binary_host {
|
||||||
|
name: "wv-android-genrule",
|
||||||
|
srcs: [
|
||||||
|
"wv-android-genrule.py",
|
||||||
|
],
|
||||||
|
version: {
|
||||||
|
py3: {
|
||||||
|
embedded_launcher: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
genrule {
|
||||||
|
name: "wv_android_build_id",
|
||||||
|
tools: ["wv-android-genrule"],
|
||||||
|
cmd: "$(location wv-android-genrule) build_id_header > $(out)",
|
||||||
|
out: ["wv_android_build_id.h"],
|
||||||
|
}
|
||||||
|
|
||||||
|
genrule {
|
||||||
|
name: "widevine_apex_manifest.json",
|
||||||
|
tools: ["wv-android-genrule"],
|
||||||
|
cmd: "$(location wv-android-genrule) apex_manifest > $(out)",
|
||||||
|
out: ["gen_wv_apex_manifest.json"],
|
||||||
|
}
|
||||||
|
|
||||||
|
genrule {
|
||||||
|
name: "widevine_lazy_apex_manifest.json",
|
||||||
|
tools: ["wv-android-genrule"],
|
||||||
|
cmd: "$(location wv-android-genrule) apex_manifest --name com.google.android.widevine.lazy > $(out)",
|
||||||
|
out: ["gen_wv_lazy_apex_manifest.json"],
|
||||||
|
}
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ widevine_key_apex_defaults {
|
|||||||
|
|
||||||
apex {
|
apex {
|
||||||
name: "com.google.android.widevine",
|
name: "com.google.android.widevine",
|
||||||
manifest: "apex_manifest.json",
|
manifest: ":widevine_apex_manifest.json",
|
||||||
prebuilts: [
|
prebuilts: [
|
||||||
"com.google.android.widevine.rc",
|
"com.google.android.widevine.rc",
|
||||||
"com.google.android.widevine.xml", // etc/vintf
|
"com.google.android.widevine.xml", // etc/vintf
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "com.google.android.widevine",
|
|
||||||
"version": 1,
|
|
||||||
"requireNativeLibs": [
|
|
||||||
"liboemcrypto.so"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -57,7 +57,7 @@ apex {
|
|||||||
"com.google.android.widevine-defaults",
|
"com.google.android.widevine-defaults",
|
||||||
"com.google.android.widevine.lazy-key-defaults",
|
"com.google.android.widevine.lazy-key-defaults",
|
||||||
],
|
],
|
||||||
manifest: "apex_manifest.json",
|
manifest: ":widevine_lazy_apex_manifest.json",
|
||||||
prebuilts: [
|
prebuilts: [
|
||||||
"com.google.android.widevine.lazy.rc",
|
"com.google.android.widevine.lazy.rc",
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "com.google.android.widevine.lazy",
|
|
||||||
"version": 1,
|
|
||||||
"requireNativeLibs": [
|
|
||||||
"liboemcrypto.so"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -11,8 +11,7 @@ namespace wvcdm {
|
|||||||
|
|
||||||
// Note: If you change this, make sure you also change
|
// Note: If you change this, make sure you also change
|
||||||
// https://developers.google.com/widevine/drm/client/oemcrypto/compatibility
|
// https://developers.google.com/widevine/drm/client/oemcrypto/compatibility
|
||||||
static const std::string kWVAndroidCdmVersion_18_0_1 = "18.0.1";
|
static const std::string kWVAndroidCdmVersion = "18.0.1";
|
||||||
static const std::string kWVAndroidCdmVersion_18_0_2 = "18.0.2";
|
|
||||||
|
|
||||||
} // namespace wvcdm
|
} // namespace wvcdm
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include "properties.h"
|
#include "properties.h"
|
||||||
#include "properties_configuration.h"
|
#include "properties_configuration.h"
|
||||||
|
#include "wv_android_build_id.h"
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
@@ -142,19 +143,11 @@ bool Properties::GetWVCdmVersion(std::string* version) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string apex_version = "";
|
*version = kWVAndroidCdmVersion;
|
||||||
#ifdef __ANDROID_APEX__
|
|
||||||
{
|
|
||||||
auto info = widevine::apex::GetApexInfo();
|
|
||||||
apex_version = "@" + std::to_string(info->version);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (mediadrm_flags::update_cdm_version_to_18_0_2()) {
|
if (mediadrm_flags::update_cdm_version_to_18_0_2()) {
|
||||||
*version = kWVAndroidCdmVersion_18_0_2 + apex_version;
|
(*version)[kWVAndroidCdmVersion.size() - 1] = '2';
|
||||||
} else {
|
|
||||||
*version = kWVAndroidCdmVersion_18_0_1 + apex_version;
|
|
||||||
}
|
}
|
||||||
|
*version = *version + "@" + WV_ANDROID_BUILD_ID;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
117
libwvdrmengine/wv-android-genrule.py
Normal file
117
libwvdrmengine/wv-android-genrule.py
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
import argparse
|
||||||
|
import datetime
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
INT32_MAX = 2 ** 31 - 1
|
||||||
|
|
||||||
|
def guess_build_top():
|
||||||
|
if 'ANDROID_BUILD_TOP' in os.environ:
|
||||||
|
return os.environ['ANDROID_BUILD_TOP']
|
||||||
|
cwd = os.getcwd()
|
||||||
|
parts = cwd.split('/out/soong/')
|
||||||
|
return parts[0]
|
||||||
|
|
||||||
|
|
||||||
|
def get_build_number():
|
||||||
|
top = guess_build_top()
|
||||||
|
with open(f'{top}/out/soong/build_number.txt', 'r') as file:
|
||||||
|
soong_build_number = file.read().strip()
|
||||||
|
return soong_build_number
|
||||||
|
|
||||||
|
|
||||||
|
def get_build_id():
|
||||||
|
top = guess_build_top()
|
||||||
|
with open(f'{top}/build/core/build_id.mk', 'r') as file:
|
||||||
|
for line in file:
|
||||||
|
if line.startswith('BUILD_ID='):
|
||||||
|
_, rc = line.strip().split('=', 1)
|
||||||
|
return rc
|
||||||
|
|
||||||
|
|
||||||
|
def hdr(args):
|
||||||
|
output = f'''\
|
||||||
|
#ifndef {args.guard}
|
||||||
|
#define {args.guard}
|
||||||
|
|
||||||
|
#define WV_ANDROID_BUILD_ID "{get_build_id()}"
|
||||||
|
|
||||||
|
#endif // {args.guard}'''
|
||||||
|
print(output)
|
||||||
|
|
||||||
|
|
||||||
|
def safe_int(str_value):
|
||||||
|
"""Converts a build number to an integer, capped at INT32_MAX.
|
||||||
|
|
||||||
|
INT32_MAX is the max supported by Android Build.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
str_value: The build number to convert.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
The integer representation of build number, capped at INT32_MAX;
|
||||||
|
0 on error.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
v = int(str_value)
|
||||||
|
return min(INT32_MAX, v)
|
||||||
|
except ValueError:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
def apex_manifest(args):
|
||||||
|
rc = get_build_id()
|
||||||
|
v = get_build_number()
|
||||||
|
|
||||||
|
if v.startswith('eng.'):
|
||||||
|
# local build
|
||||||
|
#
|
||||||
|
# set large version so local builds can overwrite other build types
|
||||||
|
v = INT32_MAX
|
||||||
|
elif re.match(r'P\d+$', v):
|
||||||
|
# presubmit build
|
||||||
|
#
|
||||||
|
# numeric value of presubmit builds are typically higher than
|
||||||
|
# postsubmit builds, so presubmit builds can overwrite postsubmit
|
||||||
|
# builds during test
|
||||||
|
v = safe_int(v[1:])
|
||||||
|
elif rc in ('MASTER', 'MAIN'):
|
||||||
|
# postsubmit dev branch
|
||||||
|
#
|
||||||
|
# set APEX version to 1 (preserve udc behavior)
|
||||||
|
v = 1
|
||||||
|
elif re.match(r'\d+$', v):
|
||||||
|
# postsubmit release branch
|
||||||
|
#
|
||||||
|
# set APEX version to ab build number
|
||||||
|
v = safe_int(v)
|
||||||
|
else:
|
||||||
|
raise RuntimeError('Unsupported Widevine APEX build env')
|
||||||
|
|
||||||
|
out = dict(name=args.name, version=v, requireNativeLibs=['liboemcrypto'])
|
||||||
|
print(json.dumps(out))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
parser = argparse.ArgumentParser(description='Widevine Android genrule utility')
|
||||||
|
parser.set_defaults(func=lambda _: parser.print_help())
|
||||||
|
subparsers = parser.add_subparsers(help='Available subcommands')
|
||||||
|
|
||||||
|
hdr_description = 'Generate build id C++ header (stdout)'
|
||||||
|
parser_hdr = subparsers.add_parser('build_id_header', help=hdr_description)
|
||||||
|
parser_hdr.add_argument('--guard', type=str,
|
||||||
|
default='WVCDM_WV_ANDROID_BUILD_ID_H_',
|
||||||
|
help='Include guard')
|
||||||
|
parser_hdr.set_defaults(func=hdr)
|
||||||
|
|
||||||
|
apex_description = 'Generate APEX manifest json (stdout)'
|
||||||
|
parser_apex = subparsers.add_parser('apex_manifest', help=apex_description)
|
||||||
|
parser_apex.add_argument('--name', help='apex name',
|
||||||
|
default='com.google.android.widevine')
|
||||||
|
parser_apex.set_defaults(func=apex_manifest)
|
||||||
|
|
||||||
|
# Parse the arguments and call the appropriate function
|
||||||
|
args = parser.parse_args()
|
||||||
|
args.func(args)
|
||||||
Reference in New Issue
Block a user