Enable updating AndroidX from local dejetified prebuilt
Adds mapping for AndroidX Maven artifacts to Support Library Make targets.
Pulls car stubs out to a slightly-more-sane location and builds a wrapper
around the imported car library that statically includes the stubs.
Bug: 74449147
Change-Id: Ia7e23acac5ac7afe32b4574d37320a5182ed5a36
Test: ./update_current -s <path-to-file>
diff --git a/update_current.py b/update_current.py
index c1a2af8..8c16306 100755
--- a/update_current.py
+++ b/update_current.py
@@ -20,62 +20,91 @@
# See go/fetch_artifact for details on this script.
FETCH_ARTIFACT = '/google/data/ro/projects/android/fetch_artifact'
-# Does not import support-v4, which is handled as a separate Android.mk (../support-v4) to
-# statically include dependencies. Similarly, the support-v13 module is imported as
-# support-v13-nodeps and then handled as a separate Android.mk (../support-v13) to statically
-# include dependencies.
maven_to_make = {
- 'animated-vector-drawable': ['android-support-animatedvectordrawable', 'graphics/drawable'],
- 'appcompat-v7': ['android-support-v7-appcompat', 'v7/appcompat'],
- 'cardview-v7': ['android-support-v7-cardview', 'v7/cardview'],
- 'customtabs': ['android-support-customtabs', 'customtabs'],
- 'exifinterface': ['android-support-exifinterface', 'exifinterface'],
- 'gridlayout-v7': ['android-support-v7-gridlayout', 'v7/gridlayout'],
- 'leanback-v17': ['android-support-v17-leanback', 'v17/leanback'],
- 'mediarouter-v7': ['android-support-v7-mediarouter', 'v7/mediarouter'],
- 'palette-v7': ['android-support-v7-palette', 'v7/palette'],
- 'percent': ['android-support-percent', 'percent'],
- 'preference-leanback-v17': ['android-support-v17-preference-leanback', 'v17/preference-leanback'],
- 'preference-v14': ['android-support-v14-preference', 'v14/preference'],
- 'preference-v7': ['android-support-v7-preference', 'v7/preference'],
- 'recommendation': ['android-support-recommendation', 'recommendation'],
- 'recyclerview-v7': ['android-support-v7-recyclerview', 'v7/recyclerview'],
- 'support-annotations': ['android-support-annotations', 'annotations', 'jar'],
- 'support-compat': ['android-support-compat', 'compat'],
- 'support-core-ui': ['android-support-core-ui', 'core-ui'],
- 'support-core-utils': ['android-support-core-utils', 'core-utils'],
- 'support-dynamic-animation': ['android-support-dynamic-animation', 'dynamic-animation'],
- 'support-emoji': ['android-support-emoji', 'emoji'],
- 'support-emoji-appcompat': ['android-support-emoji-appcompat', 'emoji-appcompat'],
- 'support-emoji-bundled': ['android-support-emoji-bundled', 'emoji-bundled'],
- 'support-fragment': ['android-support-fragment', 'fragment'],
- 'support-media-compat': ['android-support-media-compat', 'media-compat'],
- 'support-tv-provider': ['android-support-tv-provider', 'tv-provider'],
- 'support-v4': ['android-support-v4', 'v4'],
- 'support-v13': ['android-support-v13', 'v13'],
- 'support-vector-drawable': ['android-support-vectordrawable', 'graphics/drawable'],
- 'transition': ['android-support-transition', 'transition'],
- 'wear': ['android-support-wear', 'wear'],
+ 'animated-vector-drawable': ['android-support-animatedvectordrawable', 'graphics/drawable'],
+ 'appcompat-v7': ['android-support-v7-appcompat', 'v7/appcompat'],
+ 'cardview-v7': ['android-support-v7-cardview', 'v7/cardview'],
+ 'collections': ['android-support-collections', 'collections'],
+ 'customtabs': ['android-support-customtabs', 'customtabs'],
+ 'exifinterface': ['android-support-exifinterface', 'exifinterface'],
+ 'gridlayout-v7': ['android-support-v7-gridlayout', 'v7/gridlayout'],
+ 'leanback-v17': ['android-support-v17-leanback', 'v17/leanback'],
+ 'mediarouter-v7': ['android-support-v7-mediarouter', 'v7/mediarouter'],
+ 'palette-v7': ['android-support-v7-palette', 'v7/palette'],
+ 'percent': ['android-support-percent', 'percent'],
+ 'preference-leanback-v17': ['android-support-v17-preference-leanback', 'v17/preference-leanback'],
+ 'preference-v14': ['android-support-v14-preference', 'v14/preference'],
+ 'preference-v7': ['android-support-v7-preference', 'v7/preference'],
+ 'recommendation': ['android-support-recommendation', 'recommendation'],
+ 'recyclerview-v7': ['android-support-v7-recyclerview', 'v7/recyclerview'],
+ 'support-annotations': ['android-support-annotations', 'annotations', 'jar'],
+ 'support-compat': ['android-support-compat', 'compat'],
+ 'support-core-ui': ['android-support-core-ui', 'core-ui'],
+ 'support-core-utils': ['android-support-core-utils', 'core-utils'],
+ 'support-dynamic-animation': ['android-support-dynamic-animation', 'dynamic-animation'],
+ 'support-emoji-appcompat': ['android-support-emoji-appcompat', 'emoji-appcompat'],
+ 'support-emoji-bundled': ['android-support-emoji-bundled', 'emoji-bundled'],
+ 'support-emoji': ['android-support-emoji', 'emoji'],
+ 'support-fragment': ['android-support-fragment', 'fragment'],
+ 'support-media-compat': ['android-support-media-compat', 'media-compat'],
+ 'support-tv-provider': ['android-support-tv-provider', 'tv-provider'],
+ 'support-v13': ['android-support-v13', 'v13'],
+ 'support-v4': ['android-support-v4', 'v4'],
+ 'support-vector-drawable': ['android-support-vectordrawable', 'graphics/drawable'],
+ 'transition': ['android-support-transition', 'transition'],
+ 'wear': ['android-support-wear', 'wear'],
- # AndroidX splits
- 'collections': ['android-support-collections', 'collections'],
- 'heifwriter': ['android-support-heifwriter', 'heifwriter'],
- 'webkit': ['android-support-webkit', 'webkit'],
- 'customview': ['android-support-customview', 'customview'],
- 'textclassifier': ['android-support-textclassifier', 'textclassifier'],
- 'swiperefreshlayout': ['android-support-swiperefreshlayout', 'swiperefreshlayout'],
- 'viewpager': ['android-support-viewpager', 'viewpager'],
- 'coordinatorlayout': ['android-support-coordinatorlayout', 'coordinatorlayout'],
- 'asynclayoutinflater': ['android-support-asynclayoutinflater', 'asynclayoutinflater'],
- 'support-content': ['android-support-support-content', 'support-content'],
- 'documentfile': ['android-support-documentfile', 'documentfile'],
- 'drawerlayout': ['android-support-drawerlayout', 'drawerlayout'],
- 'localbroadcastmanager': ['android-support-localbroadcastmanager', 'localbroadcastmanager'],
- 'print': ['android-support-print', 'print'],
- 'slidingpanelayout': ['android-support-slidingpanelayout', 'slidingpanelayout'],
- 'interpolator': ['android-support-interpolator', 'interpolator'],
- 'cursoradapter': ['android-support-cursoradapter', 'cursoradapter'],
- 'loader': ['android-support-loader', 'loader'],
+ # AndroidX renamed modules
+ 'androidx.annotation:annotation': ['android-support-annotations', 'annotations', 'jar'],
+ 'androidx.appcompat:appcompat': ['android-support-v7-appcompat', 'v7/appcompat'],
+ 'androidx.browser:browser': ['android-support-customtabs', 'customtabs'],
+ 'androidx.cardview:cardview': ['android-support-v7-cardview', 'v7/cardview'],
+ 'androidx.collection:collection': ['android-support-collections', 'collections'],
+ 'androidx.core:core': ['android-support-compat', 'compat'],
+ 'androidx.dynamicanimation:dynamicanimation': ['android-support-dynamic-animation', 'dynamic-animation'],
+ 'androidx.emoji:emoji-appcompat': ['android-support-emoji-appcompat', 'emoji-appcompat'],
+ 'androidx.emoji:emoji-bundled': ['android-support-emoji-bundled', 'emoji-bundled'],
+ 'androidx.emoji:emoji': ['android-support-emoji', 'emoji'],
+ 'androidx.fragment:fragment': ['android-support-fragment', 'fragment'],
+ 'androidx.gridlayout:gridlayout': ['android-support-v7-gridlayout', 'v7/gridlayout'],
+ 'androidx.leanback:leanback-preference': ['android-support-v17-preference-leanback', 'v17/preference-leanback'],
+ 'androidx.leanback:leanback': ['android-support-v17-leanback', 'v17/leanback'],
+ 'androidx.legacy:legacy-preference-v14': ['android-support-v14-preference', 'v14/preference'],
+ 'androidx.legacy:legacy-support-core-ui': ['android-support-core-ui', 'core-ui'],
+ 'androidx.legacy:legacy-support-core-utils': ['android-support-core-utils', 'core-utils'],
+ 'androidx.legacy:legacy-support-v13': ['android-support-v13', 'v13'],
+ 'androidx.legacy:legacy-support-v4': ['android-support-v4', 'v4'],
+ 'androidx.media:media': ['android-support-media-compat', 'media-compat'],
+ 'androidx.mediarouter:mediarouter': ['android-support-v7-mediarouter', 'v7/mediarouter'],
+ 'androidx.palette:palette': ['android-support-v7-palette', 'v7/palette'],
+ 'androidx.percentlayout:percentlayout': ['android-support-percent', 'percent'],
+ 'androidx.preference:preference': ['android-support-v7-preference', 'v7/preference'],
+ 'androidx.recyclerview:recyclerview': ['android-support-v7-recyclerview', 'v7/recyclerview'],
+ 'androidx.tvprovider:tvprovider': ['android-support-tv-provider', 'tv-provider'],
+ 'androidx.vectordrawable:vectordrawable-animated': ['android-support-animatedvectordrawable', 'graphics/drawable'],
+ 'androidx.vectordrawable:vectordrawable': ['android-support-vectordrawable', 'graphics/drawable'],
+
+ # AndroidX new modules
+ 'heifwriter': ['android-support-heifwriter', 'heifwriter'],
+ 'webkit': ['android-support-webkit', 'webkit'],
+ 'customview': ['android-support-customview', 'customview'],
+ 'textclassifier': ['android-support-textclassifier', 'textclassifier'],
+ 'swiperefreshlayout': ['android-support-swiperefreshlayout', 'swiperefreshlayout'],
+ 'viewpager': ['android-support-viewpager', 'viewpager'],
+ 'coordinatorlayout': ['android-support-coordinatorlayout', 'coordinatorlayout'],
+ 'asynclayoutinflater': ['android-support-asynclayoutinflater', 'asynclayoutinflater'],
+ 'support-content': ['android-support-support-content', 'support-content'],
+ 'documentfile': ['android-support-documentfile', 'documentfile'],
+ 'drawerlayout': ['android-support-drawerlayout', 'drawerlayout'],
+ 'localbroadcastmanager': ['android-support-localbroadcastmanager', 'localbroadcastmanager'],
+ 'print': ['android-support-print', 'print'],
+ 'slidingpanelayout': ['android-support-slidingpanelayout', 'slidingpanelayout'],
+ 'interpolator': ['android-support-interpolator', 'interpolator'],
+ 'cursoradapter': ['android-support-cursoradapter', 'cursoradapter'],
+ 'loader': ['android-support-loader', 'loader'],
+ 'contentpaging': ['android-support-contentpaging', 'contentpaging'],
+ 'recyclerview-selection': ['android-support-recyclerview-selection', 'recyclerview-selection'],
+ 'car': ['android-support-car', 'car-nostubs'],
# Slices
'slices-core': ['android-slices-core', 'slices-core'],
@@ -390,16 +419,20 @@
return repo_dir
-def fetch_and_extract(target, build_id, file):
- artifact_path = fetch_artifact(target, build_id, file)
+def fetch_and_extract(target, build_id, file, artifact_path=None):
+ if not artifact_path:
+ artifact_path = fetch_artifact(target, build_id, file)
if not artifact_path:
return None
return extract_artifact(artifact_path)
-def update_support(target, build_id):
- repo_file = 'top-of-tree-m2repository-%s.zip' % build_id.fs_id
- repo_dir = fetch_and_extract(target, build_id.url_id, repo_file)
+def update_support(target, build_id, local_file):
+ if build_id:
+ repo_file = 'top-of-tree-m2repository-%s.zip' % build_id.fs_id
+ repo_dir = fetch_and_extract(target, build_id.url_id, repo_file, None)
+ else:
+ repo_dir = fetch_and_extract(target, None, None, local_file)
if not repo_dir:
print_e('Failed to extract Support Library repository')
return False
@@ -407,6 +440,7 @@
# Transform the repo archive into a Makefile-compatible format.
return transform_maven_repo([repo_dir], support_dir)
+
def update_jetifier(target, build_id):
repo_file = 'jetifier-standalone.zip'
repo_dir = fetch_and_extract(target, build_id.url_id, repo_file)
@@ -419,6 +453,7 @@
os.chmod(os.path.join(jetifier_dir, 'jetifier-standalone', 'bin', 'jetifier-standalone'), 0o755)
return True
+
def update_toolkit(target, build_id):
repo_dir = fetch_and_extract(target, build_id.url_id, 'top-of-tree-m2repository-%s.zip' % build_id.fs_id)
if not repo_dir:
@@ -554,7 +589,7 @@
presubmit = True
number_text = number_text[1:]
if not number_text.isnumeric():
- raise Exception('Updating this set of prebuilts requires <source> to be a build id, not "' + source + '"')
+ return None
url_id = source
fs_id = url_id
if presubmit:
@@ -566,8 +601,7 @@
source = args.source
if not source.isnumeric():
return args.source
- else:
- raise Exception('Updating this set of prebuilts requires <source> to be file, not a numeric build id')
+ return None
parser = argparse.ArgumentParser(
description=('Update current prebuilts'))
@@ -625,7 +659,7 @@
else:
sys.exit(1)
if args.support:
- if update_support('support_library', getBuildId(args)):
+ if update_support('support_library', getBuildId(args), getFile(args)):
components = append(components, 'Support Library')
else:
print_e('Failed to update Support Library, aborting...')