Merge "verity: switch to C++ version of build_verity_tree"
diff --git a/core/64_bit_blacklist.mk b/core/64_bit_blacklist.mk
index a237935..b7420cd 100644
--- a/core/64_bit_blacklist.mk
+++ b/core/64_bit_blacklist.mk
@@ -1,10 +1,5 @@
ifneq ($(TARGET_2ND_ARCH),)
-# chromium-libpac needs porting to the chromium_org V8 instead of legacy V8.
-_64_bit_directory_blacklist += \
- external/chromium-libpac \
- external/v8 \
-
# misc build errors
_64_bit_directory_blacklist += \
device/generic/goldfish/opengl \
diff --git a/core/Makefile b/core/Makefile
index 8cbe2d1..9260128 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -1378,6 +1378,7 @@
--block \
-p $(HOST_OUT) \
-k $(KEY_CERT_PAIR) \
+ $(if $(OEM_OTA_CONFIG), -o $(OEM_OTA_CONFIG)) \
$(BUILT_TARGET_FILES_PACKAGE) $@
.PHONY: otapackage
diff --git a/core/binary.mk b/core/binary.mk
index 021406f..f0b3162 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -9,7 +9,9 @@
include $(BUILD_SYSTEM)/base_rules.mk
#######################################
-my_ndk_version_root :=
+my_ndk_sysroot :=
+my_ndk_sysroot_include :=
+my_ndk_sysroot_lib :=
ifdef LOCAL_SDK_VERSION
ifdef LOCAL_NDK_VERSION
$(error $(LOCAL_PATH): LOCAL_NDK_VERSION is now retired.)
@@ -18,7 +20,13 @@
$(error $(LOCAL_PATH): LOCAL_SDK_VERSION cannot be used in host module)
endif
my_ndk_source_root := $(HISTORICAL_NDK_VERSIONS_ROOT)/current/sources
- my_ndk_version_root := $(HISTORICAL_NDK_VERSIONS_ROOT)/current/platforms/android-$(LOCAL_SDK_VERSION)/arch-$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)
+ my_ndk_sysroot := $(HISTORICAL_NDK_VERSIONS_ROOT)/current/platforms/android-$(LOCAL_SDK_VERSION)/arch-$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)
+ my_ndk_sysroot_include := $(my_ndk_sysroot)/usr/include
+ ifeq (x86_64,$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH))
+ my_ndk_sysroot_lib := $(my_ndk_sysroot)/usr/lib64
+ else
+ my_ndk_sysroot_lib := $(my_ndk_sysroot)/usr/lib
+ endif
# Set up the NDK stl variant. Starting from NDK-r5 the c++ stl resides in a separate location.
# See ndk/docs/CPLUSPLUS-SUPPORT.html
@@ -200,7 +208,7 @@
ifndef LOCAL_IS_HOST_MODULE
ifdef LOCAL_SDK_VERSION
my_target_project_includes :=
-my_target_c_includes := $(my_ndk_stl_include_path) $(my_ndk_version_root)/usr/include
+my_target_c_includes := $(my_ndk_stl_include_path) $(my_ndk_sysroot_include)
my_target_global_cppflags := $(my_ndk_stl_cppflags)
else
my_target_project_includes := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_PROJECT_INCLUDES)
@@ -821,7 +829,7 @@
# Add the NDK libraries to the built module dependency
my_system_shared_libraries_fullpath := \
$(my_ndk_stl_shared_lib_fullpath) \
- $(addprefix $(my_ndk_version_root)/usr/lib/, \
+ $(addprefix $(my_ndk_sysroot_lib)/, \
$(addsuffix $(so_suffix), $(my_system_shared_libraries)))
built_shared_libraries += $(my_system_shared_libraries_fullpath)
diff --git a/core/clang/arm64.mk b/core/clang/arm64.mk
index e8342bd..9fb3670 100644
--- a/core/clang/arm64.mk
+++ b/core/clang/arm64.mk
@@ -1,8 +1,10 @@
# Clang flags for arm64 arch, target or host.
-CLANG_CONFIG_arm64_EXTRA_ASFLAGS :=
+CLANG_CONFIG_arm64_EXTRA_ASFLAGS := \
+ -no-integrated-as
CLANG_CONFIG_arm64_EXTRA_CFLAGS := \
+ -no-integrated-as
CLANG_CONFIG_arm64_EXTRA_LDFLAGS :=
diff --git a/core/clang/config.mk b/core/clang/config.mk
index af7c249..7498ee3 100644
--- a/core/clang/config.mk
+++ b/core/clang/config.mk
@@ -11,10 +11,11 @@
CLANG := $(LLVM_PREBUILTS_PATH)/clang$(BUILD_EXECUTABLE_SUFFIX)
CLANG_CXX := $(LLVM_PREBUILTS_PATH)/clang++$(BUILD_EXECUTABLE_SUFFIX)
-CLANG_TBLGEN := $(LLVM_PREBUILTS_PATH)/clang-tblgen$(BUILD_EXECUTABLE_SUFFIX)
LLVM_AS := $(LLVM_PREBUILTS_PATH)/llvm-as$(BUILD_EXECUTABLE_SUFFIX)
LLVM_LINK := $(LLVM_PREBUILTS_PATH)/llvm-link$(BUILD_EXECUTABLE_SUFFIX)
-TBLGEN := $(LLVM_PREBUILTS_PATH)/tblgen$(BUILD_EXECUTABLE_SUFFIX)
+
+CLANG_TBLGEN := $(HOST_OUT_EXECUTABLES)/clang-tblgen$(BUILD_EXECUTABLE_SUFFIX)
+TBLGEN := $(HOST_OUT_EXECUTABLES)/tblgen$(BUILD_EXECUTABLE_SUFFIX)
# Clang flags for all host or target rules
diff --git a/core/executable_internal.mk b/core/executable_internal.mk
index a7c3e86..c235a72 100644
--- a/core/executable_internal.mk
+++ b/core/executable_internal.mk
@@ -38,12 +38,12 @@
# so we don't have race condition when the system libraries (such as libc, libstdc++) are also built in the tree.
my_target_global_ld_dirs := \
$(addprefix -L, $(patsubst %/,%,$(dir $(my_ndk_stl_shared_lib_fullpath))) \
- $(my_ndk_version_root)/usr/lib) \
+ $(my_ndk_sysroot_lib)) \
$(my_target_global_ld_dirs)
my_target_global_ldflags := $(my_ndk_stl_shared_lib) $(my_target_global_ldflags)
-my_target_crtbegin_dynamic_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtbegin_dynamic.o)
-my_target_crtbegin_static_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtbegin_static.o)
-my_target_crtend_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtend_android.o)
+my_target_crtbegin_dynamic_o := $(wildcard $(my_ndk_sysroot_lib)/crtbegin_dynamic.o)
+my_target_crtbegin_static_o := $(wildcard $(my_ndk_sysroot_lib)/crtbegin_static.o)
+my_target_crtend_o := $(wildcard $(my_ndk_sysroot_lib)/crtend_android.o)
endif
$(linked_module): PRIVATE_TARGET_GLOBAL_LD_DIRS := $(my_target_global_ld_dirs)
$(linked_module): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(my_target_global_ldflags)
diff --git a/core/pdk_config.mk b/core/pdk_config.mk
index b0cccc9..f5fdd15 100644
--- a/core/pdk_config.mk
+++ b/core/pdk_config.mk
@@ -18,9 +18,14 @@
# if PDK_FUSION_PLATFORM_ZIP is specified, do not override.
ifndef PDK_FUSION_PLATFORM_ZIP
+# Most PDK project paths should be using vendor/pdk/TARGET_DEVICE
+# but some legacy ones (e.g. mini_armv7a_neon generic PDK) were setup
+# with vendor/pdk/TARGET_PRODUCT.
_pdk_fusion_default_platform_zip = $(wildcard \
vendor/pdk/$(TARGET_DEVICE)/$(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT)/platform/platform.zip \
-vendor/pdk/$(TARGET_DEVICE)/$(patsubst aosp_%,full_%,$(TARGET_PRODUCT))-$(TARGET_BUILD_VARIANT)/platform/platform.zip)
+vendor/pdk/$(TARGET_DEVICE)/$(patsubst aosp_%,full_%,$(TARGET_PRODUCT))-$(TARGET_BUILD_VARIANT)/platform/platform.zip \
+vendor/pdk/$(TARGET_PRODUCT)/$(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT)/platform/platform.zip \
+vendor/pdk/$(TARGET_PRODUCT)/$(patsubst aosp_%,full_%,$(TARGET_PRODUCT))-$(TARGET_BUILD_VARIANT)/platform/platform.zip)
ifneq (,$(_pdk_fusion_default_platform_zip))
PDK_FUSION_PLATFORM_ZIP := $(word 1, $(_pdk_fusion_default_platform_zip))
TARGET_BUILD_PDK := true
diff --git a/core/product.mk b/core/product.mk
index 2b40de4..1a7685c 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -258,7 +258,8 @@
_product_stash_var_list += \
- DEFAULT_SYSTEM_DEV_CERTIFICATE
+ DEFAULT_SYSTEM_DEV_CERTIFICATE \
+ WITH_DEXPREOPT
#
# Stash values of the variables in _product_stash_var_list.
diff --git a/core/shared_library_internal.mk b/core/shared_library_internal.mk
index 7f8a483..bda44f4 100644
--- a/core/shared_library_internal.mk
+++ b/core/shared_library_internal.mk
@@ -49,11 +49,11 @@
# so we don't have race condition when the system libraries (such as libc, libstdc++) are also built in the tree.
my_target_global_ld_dirs := \
$(addprefix -L, $(patsubst %/,%,$(dir $(my_ndk_stl_shared_lib_fullpath))) \
- $(my_ndk_version_root)/usr/lib) \
+ $(my_ndk_sysroot_lib)) \
$(my_target_global_ld_dirs)
my_target_global_ldflags := $(my_ndk_stl_shared_lib) $(my_target_global_ldflags)
-my_target_crtbegin_so_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtbegin_so.o)
-my_target_crtend_so_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtend_so.o)
+my_target_crtbegin_so_o := $(wildcard $(my_ndk_sysroot_lib)/crtbegin_so.o)
+my_target_crtend_so_o := $(wildcard $(my_ndk_sysroot_lib)/crtend_so.o)
endif
$(linked_module): PRIVATE_TARGET_GLOBAL_LD_DIRS := $(my_target_global_ld_dirs)
$(linked_module): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(my_target_global_ldflags)
diff --git a/target/product/AndroidProducts.mk b/target/product/AndroidProducts.mk
index 265f244..a714f1f 100644
--- a/target/product/AndroidProducts.mk
+++ b/target/product/AndroidProducts.mk
@@ -62,5 +62,8 @@
$(LOCAL_DIR)/vbox_x86.mk \
$(LOCAL_DIR)/sdk.mk \
$(LOCAL_DIR)/sdk_x86.mk \
- $(LOCAL_DIR)/sdk_mips.mk
+ $(LOCAL_DIR)/sdk_mips.mk \
+ $(LOCAL_DIR)/sdk_arm64.mk \
+ $(LOCAL_DIR)/sdk_x86_64.mk \
+ $(LOCAL_DIR)/sdk_mips64.mk
endif
diff --git a/target/product/sdk_arm64.mk b/target/product/sdk_arm64.mk
new file mode 100644
index 0000000..582a779
--- /dev/null
+++ b/target/product/sdk_arm64.mk
@@ -0,0 +1,28 @@
+#
+# Copyright (C) 2009 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This is a build configuration for a full-featured build of the
+# Open-Source part of the tree. It's geared toward a US-centric
+# build quite specifically for the emulator, and might not be
+# entirely appropriate to inherit from for on-device configurations.
+
+$(call inherit-product, $(SRC_TARGET_DIR)/product/sdk.mk)
+
+# Overrides
+PRODUCT_BRAND := generic_arm64
+PRODUCT_NAME := sdk_arm64
+PRODUCT_DEVICE := generic_arm64
+PRODUCT_MODEL := Android SDK built for arm64
diff --git a/target/product/sdk_mips64.mk b/target/product/sdk_mips64.mk
new file mode 100644
index 0000000..c00de06
--- /dev/null
+++ b/target/product/sdk_mips64.mk
@@ -0,0 +1,28 @@
+#
+# Copyright (C) 2009 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This is a build configuration for a full-featured build of the
+# Open-Source part of the tree. It's geared toward a US-centric
+# build quite specifically for the emulator, and might not be
+# entirely appropriate to inherit from for on-device configurations.
+
+$(call inherit-product, $(SRC_TARGET_DIR)/product/sdk.mk)
+
+# Overrides
+PRODUCT_BRAND := generic_mips64
+PRODUCT_NAME := sdk_mips64
+PRODUCT_DEVICE := generic_mips64
+PRODUCT_MODEL := Android SDK built for mips64
diff --git a/target/product/sdk_x86_64.mk b/target/product/sdk_x86_64.mk
new file mode 100644
index 0000000..3816cf9
--- /dev/null
+++ b/target/product/sdk_x86_64.mk
@@ -0,0 +1,28 @@
+#
+# Copyright (C) 2009 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This is a build configuration for a full-featured build of the
+# Open-Source part of the tree. It's geared toward a US-centric
+# build quite specifically for the emulator, and might not be
+# entirely appropriate to inherit from for on-device configurations.
+
+$(call inherit-product, $(SRC_TARGET_DIR)/product/sdk.mk)
+
+# Overrides
+PRODUCT_BRAND := generic_x86_64
+PRODUCT_NAME := sdk_x86_64
+PRODUCT_DEVICE := generic_x86_64
+PRODUCT_MODEL := Android SDK built for x86_64
diff --git a/tools/droiddoc/templates-sdk-dyn/assets/css/default.css b/tools/droiddoc/templates-sdk-dyn/assets/css/default.css
index e7ab40f..b1c7dcf 100644
--- a/tools/droiddoc/templates-sdk-dyn/assets/css/default.css
+++ b/tools/droiddoc/templates-sdk-dyn/assets/css/default.css
@@ -359,6 +359,19 @@
#nav li span.tree-list-subtitle:after {
content: '—';
}
+ #nav li span.tree-list-subtitle.package {
+ padding-top:15px;
+ cursor:default;
+ }
+ #nav li span.tree-list-subtitle.package:before {
+ content: '';
+ }
+ #nav li span.tree-list-subtitle.package:after {
+ content: '';
+ }
+ #nav li ul.tree-list-children.classes {
+ padding-left:10px;
+ }
#nav li ul {
display:none;
overflow: hidden;
@@ -529,9 +542,9 @@
width:262px;
}
- .paging-links a.start-class-link {
- width:100%;
- text-align:right;
+ .paging-links a.start-class-link {
+ width:100%;
+ text-align:right;
}
/* list of classes on course landing page */
@@ -1516,11 +1529,12 @@
.develop a.selected {
color: #F80;
}
-
.distribute a.selected {
color: #9C0;
}
+
+
.nav-x li {
display: inline;
margin-right: 45px;
@@ -1631,8 +1645,6 @@
.search-dropdown li a:hover h6, .search-dropdown li a:hover .desc {
color: #33b5e5
}
-
-
/* --------------------------------------------------------------------------
Buttons
*/
@@ -1902,6 +1914,7 @@
.sidebox h5 {
font-weight:bold;
margin:0 0 10px;
+ line-height: 16px;
}
.sidebox * {
@@ -4155,6 +4168,16 @@
padding-right:10px;
}
+
+#header-wrap .logo-wear {
+ width:220px;
+ margin:0;
+ margin-bottom:22px;
+}
+#header-wrap .logo-wear img {
+ padding:0 0 0 10px;
+}
+
.search {
height:25px;
margin-top: -3px;
@@ -4967,16 +4990,22 @@
.landing-docs a {
color:#333 !important;
}
+
.landing-docs a:hover,
.landing-docs a:hover * {
color:#7AA1B0 !important
}
+
.landing-docs .normal-links a {
color:#258aaf !important;
}
+
.plusone {
float:right;
}
+
+
+
.next-docs {
border-top:1px solid #ccc;
margin:40px 0 0;
@@ -4990,13 +5019,14 @@
.next-docs div:last-child {
margin-right:0;
}
+
.next-docs h2 {
font-size:14px;
line-height:21px;
color:#555;
text-transform:uppercase;
border-bottom:none;
- margin:0;
+ margin:0 0 1em;
padding:5px 0 0;
}
diff --git a/tools/droiddoc/templates-sdk-dyn/assets/css/fullscreen.css b/tools/droiddoc/templates-sdk-dyn/assets/css/fullscreen.css
index 1093eae..53d9a64 100644
--- a/tools/droiddoc/templates-sdk-dyn/assets/css/fullscreen.css
+++ b/tools/droiddoc/templates-sdk-dyn/assets/css/fullscreen.css
@@ -15,16 +15,16 @@
@media screen, projection, print {
.full {
- padding: 2.5em 0;
- border-top: solid 1px #ddd;
- border-bottom: solid 1px #ddd;
- background: #f7f7f7;
+ padding: 2.5em 0;
+ border-top: solid 1px #ddd;
+ border-bottom: solid 1px #ddd;
+ background: #f7f7f7;
}
.wrap {
- margin: 0 auto;
- width: 100%;
- min-width:600px;
- clear: both;
+ margin: 0 auto;
+ width: 100%;
+ min-width:600px;
+ clear: both;
}
.cols {
height: 1%;
diff --git a/tools/droiddoc/templates-sdk-dyn/assets/images/dac_logo@2x.png b/tools/droiddoc/templates-sdk-dyn/assets/images/dac_logo@2x.png
new file mode 100644
index 0000000..0f2784d
--- /dev/null
+++ b/tools/droiddoc/templates-sdk-dyn/assets/images/dac_logo@2x.png
Binary files differ
diff --git a/tools/droiddoc/templates-sdk-dyn/components/masthead.cs b/tools/droiddoc/templates-sdk-dyn/components/masthead.cs
index 763990a..ac7646f 100644
--- a/tools/droiddoc/templates-sdk-dyn/components/masthead.cs
+++ b/tools/droiddoc/templates-sdk-dyn/components/masthead.cs
@@ -1,4 +1,7 @@
<?cs def:custom_masthead() ?>
+<?cs if:wear ?>
+ <?cs call:wear_masthead() ?>
+<?cs else ?>
<a name="top"></a>
<?cs if:!devsite ?><?cs # leave out the global header for devsite; it is in devsite template ?>
<!-- Header --><div id="header-wrapper">
@@ -6,7 +9,9 @@
<div class="wrap" id="header-wrap">
<div class="col-3 logo">
<a href="<?cs var:toroot ?>index.html">
- <img src="<?cs var:toroot ?>assets/images/dac_logo.png" width="123" height="25" alt="Android Developers" />
+ <img src="<?cs var:toroot ?>assets/images/dac_logo.png"
+ srcset="<?cs var:toroot ?>assets/images/dac_logo@2x.png 2x"
+ width="123" height="25" alt="Android Developers" />
</a>
<div class="btn-quicknav" id="btn-quicknav">
<a href="#" class="arrow-inactive">Quicknav</a>
@@ -314,5 +319,147 @@
</div>
</div>
-<?cs /if ?><?cs # end if/else !devsite ?><?cs
+<?cs /if ?><?cs # end if/else !devsite ?>
+<?cs /if ?><?cs # end if/else wear ?><?cs
+/def ?>
+
+<?cs def:wear_masthead() ?>
+<a name="top"></a>
+
+<!-- Header --><div id="header-wrapper">
+ <div class="wrap" id="header-wrap">
+ <div class="col_3 logo-wear">
+ <a href="<?cs var:toroot ?>wear/index.html">
+ <img src="<?cs var:toroot ?>wear/images/android-wear.png" height="16" alt="Android Wear" />
+ </a>
+ </div>
+ </div>
+
+ <div class="col-8" style="margin:0"><h1 style="margin:1px 0 0 20px;padding:0;line-height:16px;
+ color:#666;font-weight:100;font-size:24px;">Developer Preview</h1></div>
+
+ <!-- New Search -->
+ <div class="menu-container">
+ <div class="moremenu">
+ <div id="more-btn"></div>
+ </div>
+ <div class="morehover" id="moremenu">
+ <div class="top"></div>
+ <div class="mid">
+ <div class="header">Links</div>
+ <ul>
+ <li><a href="https://play.google.com/apps/publish/">Google Play Developer Console</a></li>
+ <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+ <li><a href="<?cs var:toroot ?>about/index.html">About Android</a></li>
+ </ul>
+ <div class="header">Android Sites</div>
+ <ul>
+ <li><a href="http://www.android.com">Android.com</a></li>
+ <li class="active"><a>Android Developers</a></li>
+ <li><a href="http://source.android.com">Android Open Source Project</a></li>
+ </ul>
+
+ <?cs # Include language switcher only in online docs ?>
+ <?cs if:android.whichdoc == "online" ?>
+ <div class="header">Language</div>
+ <div id="language" class="locales">
+ <select name="language" onChange="changeLangPref(this.value, true)">
+ <option value="en">English</option>
+ <option value="es">Español</option>
+ <option value="ja">日本語</option>
+ <option value="ko">한국어</option>
+ <option value="ru">Русский</option>
+ <option value="zh-cn">中文 (中国)</option>
+ <option value="zh-tw">中文 (台灣)</option>
+ </select>
+ </div>
+ <script type="text/javascript">
+ <!--
+ loadLangPref();
+ //-->
+ </script>
+ <?cs /if ?>
+ <?cs # End of lang switcher ?>
+
+
+ <br class="clearfix" />
+ </div><!-- end mid -->
+ <div class="bottom"></div>
+ </div><!-- end morehover -->
+
+ <div class="search" id="search-container">
+ <div class="search-inner">
+ <div id="search-btn"></div>
+ <div class="left"></div>
+ <form onsubmit="return submit_search()">
+ <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+onkeydown="return search_changed(event, true, '<?cs var:toroot ?>')"
+onkeyup="return search_changed(event, false, '<?cs var:toroot ?>')" />
+ </form>
+ <div class="right"></div>
+ <a class="close hide">close</a>
+ <div class="left"></div>
+ <div class="right"></div>
+ </div>
+ </div><!-- end search -->
+
+ <div class="search_filtered_wrapper reference">
+ <div class="suggest-card reference no-display">
+ <ul class="search_filtered">
+ </ul>
+ </div>
+ </div>
+
+ <div class="search_filtered_wrapper docs">
+ <div class="suggest-card dummy no-display"> </div>
+ <div class="suggest-card develop no-display">
+ <ul class="search_filtered">
+ </ul>
+ <div class="child-card guides no-display">
+ </div>
+ <div class="child-card training no-display">
+ </div>
+ <div class="child-card samples no-display">
+ </div>
+ </div>
+ <div class="suggest-card design no-display">
+ <ul class="search_filtered">
+ </ul>
+ </div>
+ <div class="suggest-card distribute no-display">
+ <ul class="search_filtered">
+ </ul>
+ </div>
+ </div><!-- end search_filtered_wrapper -->
+
+ </div>
+ <!-- end menu_container -->
+
+
+ </div><!-- end header-wrap -->
+ </div>
+ <!-- /Header -->
+
+
+ <div id="searchResults" class="wrap" style="display:none;">
+ <h2 id="searchTitle">Results</h2>
+ <div id="leftSearchControl" class="search-control">Loading...</div>
+ </div>
+
+</div> <!--end headerwrap -->
+
+<div id="sticky-header">
+ <div>
+ <a class="logo" href="#top"></a>
+ <a class="top" href="#top"></a>
+ <ul class="breadcrumb">
+ <?cs # More <li> elements added here with javascript ?>
+ <?cs if:!section.landing ?><li class="current"><?cs var:page.title ?></li><?cs
+ /if ?>
+ </ul>
+ </div>
+</div>
+
+ <?cs
/def ?>
diff --git a/tools/droiddoc/templates-sdk-dyn/customizations.cs b/tools/droiddoc/templates-sdk-dyn/customizations.cs
index 2e2f2e6..ea8ae66 100644
--- a/tools/droiddoc/templates-sdk-dyn/customizations.cs
+++ b/tools/droiddoc/templates-sdk-dyn/customizations.cs
@@ -270,6 +270,26 @@
</script>
<?cs /def ?>
+
+<?cs
+def:wear_nav() ?>
+ <div class="wrap clearfix" id="body-content">
+ <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+ <div id="devdoc-nav" class="scroll-pane">
+
+<?cs
+ include:"../../../../frameworks/base/docs/html/wear/wear_toc.cs" ?>
+
+
+ </div>
+ </div> <!-- end side-nav -->
+ <script>
+ $(document).ready(function() {
+ scrollIntoView("devdoc-nav");
+ });
+ </script>
+<?cs /def ?>
+
<?cs # The default side navigation for the reference docs ?><?cs
def:default_left_nav() ?>
<?cs if:reference.gcm || reference.gms ?>
@@ -416,6 +436,8 @@
call:about_nav() ?><?cs
elif:distribute ?><?cs
call:distribute_nav() ?><?cs
+ elif:wear ?><?cs
+ call:wear_nav() ?><?cs
else ?><?cs
call:default_left_nav() ?> <?cs
/if ?><?cs
diff --git a/tools/droiddoc/templates-sdk-dyn/docpage.cs b/tools/droiddoc/templates-sdk-dyn/docpage.cs
index 745b19e..7eae405 100644
--- a/tools/droiddoc/templates-sdk-dyn/docpage.cs
+++ b/tools/droiddoc/templates-sdk-dyn/docpage.cs
@@ -215,7 +215,7 @@
<?cs include:"trailer.cs" ?>
- <script src="https://androiddevdocs-exp.appspot.com/ytblogger_lists_unified.js" type="text/javascript"></script>
+ <script src="https://developer.android.com/ytblogger_lists_unified.js" type="text/javascript"></script>
<script src="<?cs var:toroot ?>jd_lists_unified.js" type="text/javascript"></script>
<script src="<?cs var:toroot ?>jd_extras.js" type="text/javascript"></script>
<script src="<?cs var:toroot ?>jd_collections.js" type="text/javascript"></script>
diff --git a/tools/droiddoc/templates-sdk-dyn/head_tag.cs b/tools/droiddoc/templates-sdk-dyn/head_tag.cs
index 70ad760..1b6f50d 100644
--- a/tools/droiddoc/templates-sdk-dyn/head_tag.cs
+++ b/tools/droiddoc/templates-sdk-dyn/head_tag.cs
@@ -15,13 +15,13 @@
?><?cs
# END if/else devsite ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="viewport" content="width=device-width" />
+<meta name="viewport" content="width=<?cs
+ if:page.viewport_width ?><?cs
+ var:page.viewport_width ?><?cs
+ else ?>device-width<?cs /if ?>" />
<?cs
if:page.metaDescription ?>
<meta name="Description" content="<?cs var:page.metaDescription ?>"><?cs
- /if ?><?cs
- if:page.customHeadTag ?>
-<?cs var:page.customHeadTag ?><?cs
/if ?>
<link rel="shortcut icon" type="image/x-icon" href="<?cs var:toroot ?>favicon.ico" />
<title><?cs
@@ -38,9 +38,9 @@
if:android.whichdoc != 'online' ?>http:<?cs
/if ?>//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold"
title="roboto">
-
<link href="<?cs var:toroot ?>assets/css/default.css" rel="stylesheet" type="text/css">
-<?cs if:reference && !(reference.gms || reference.gcm) ?>
+
+<?cs if:reference && !(reference.gms || reference.gcm || wear) ?>
<!-- FULLSCREEN STYLESHEET -->
<link href="<?cs var:toroot ?>assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
type="text/css">
@@ -53,7 +53,10 @@
?><script src="<?cs var:toroot ?>_static/js/android_3p-bundle.js" type="text/javascript"></script><?cs
else
?><script src="<?cs var:toroot ?>assets/js/android_3p-bundle.js" type="text/javascript"></script><?cs
-/if ?>
+/if ?><?cs
+ if:page.customHeadTag ?>
+<?cs var:page.customHeadTag ?><?cs
+ /if ?>
<script type="text/javascript">
var toRoot = "<?cs var:toroot ?>";
var metaTags = [<?cs var:meta.tags ?>];
@@ -72,4 +75,4 @@
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
-</head>
\ No newline at end of file
+</head>
diff --git a/tools/droiddoc/templates-sdk-dyn/sample.cs b/tools/droiddoc/templates-sdk-dyn/sample.cs
index 684e284..c6f28f8 100644
--- a/tools/droiddoc/templates-sdk-dyn/sample.cs
+++ b/tools/droiddoc/templates-sdk-dyn/sample.cs
@@ -7,7 +7,7 @@
<div <?cs if:fullpage
?>class="fullpage"<?cs elif:design||tools||about||sdk||distribute
-?>class="col-13" id="doc-col"<?cs else
+?>class="col-13" id="doc-col"<?cs else
?>class="col-12" id="doc-col"<?cs /if ?> >
<!-- start breadcrumb block -->
diff --git a/tools/droiddoc/templates-sdk-dyn/sdkpage.cs b/tools/droiddoc/templates-sdk-dyn/sdkpage.cs
index d98146a..95f6596 100644
--- a/tools/droiddoc/templates-sdk-dyn/sdkpage.cs
+++ b/tools/droiddoc/templates-sdk-dyn/sdkpage.cs
@@ -11,7 +11,7 @@
<?cs else ?>
<?cs include:"head_tag.cs" ?>
<?cs /if ?>
-<body class="gc-documentation
+<body class="gc-documentation
<?cs if:(guide||develop||training||reference||tools||sdk) ?>develop<?cs
elif:design ?>design<?cs
elif:distribute ?>distribute<?cs
@@ -107,7 +107,7 @@
</td>
<td><?cs var:ndk.win64_bytes ?></td>
<td><?cs var:ndk.win64_checksum ?></td>
- </tr>
+ </tr>
<!-- <tr>
<td>
<a onClick="return onDownload(this)"
@@ -199,12 +199,12 @@
<td><?cs var:ndk.debug_info_checksum ?></td>
</tr>
</table>
-
+
<?cs ######## HERE IS THE JD DOC CONTENT ######### ?>
<?cs call:tag_list(root.descr) ?>
-
+
<script>
function onDownload(link) {
@@ -229,13 +229,13 @@
function onDownloadNdkForRealz(link) {
if ($("input#agree").is(':checked')) {
$("#tos").fadeOut('slow');
-
+
$('html, body').animate({
scrollTop: $("#Installing").offset().top
}, 800, function() {
$("#Installing").click();
});
-
+
return true;
} else {
$("label#agreeLabel").parent().stop().animate({color: "#258AAF"}, 200,
@@ -254,7 +254,7 @@
</script>
<?cs else ?>
-<?cs # end if NDK ...
+<?cs # end if NDK ...
#
#
#
@@ -281,11 +281,11 @@
<h4><a href='' class="expandable"
onclick="toggleExpandable(this,'.pax');hideExpandable('.myide,.reqs');return false;"
>DOWNLOAD FOR OTHER PLATFORMS</a></h4>
-
-
+
+
<div class="pax col-13 online" style="display:none;margin:0;">
-
+
<p class="table-caption"><strong>ADT Bundle</strong></p>
<table class="download">
<tr>
@@ -298,7 +298,7 @@
<td>Windows 32-bit</td>
<td>
<a onClick="return onDownload(this)" id="win-bundle32"
- href="http://dl.google.com/android/adt/<?cs var:sdk.win32_bundle_download ?>"><?cs var:sdk.win32_bundle_download ?></a>
+ href="http://dl.google.com/android/adt/<?cs var:sdk.version ?>/<?cs var:sdk.win32_bundle_download ?>"><?cs var:sdk.win32_bundle_download ?></a>
</td>
<td><?cs var:sdk.win32_bundle_bytes ?> bytes</td>
<td><?cs var:sdk.win32_bundle_checksum ?></td>
@@ -307,7 +307,7 @@
<td>Windows 64-bit</td>
<td>
<a onClick="return onDownload(this)" id="win-bundle64"
- href="http://dl.google.com/android/adt/<?cs var:sdk.win64_bundle_download ?>"><?cs var:sdk.win64_bundle_download ?></a>
+ href="http://dl.google.com/android/adt/<?cs var:sdk.version ?>/<?cs var:sdk.win64_bundle_download ?>"><?cs var:sdk.win64_bundle_download ?></a>
</td>
<td><?cs var:sdk.win64_bundle_bytes ?> bytes</td>
<td><?cs var:sdk.win64_bundle_checksum ?></td>
@@ -316,7 +316,7 @@
<td><nobr>Mac OS X 64-bit</nobr></td>
<td>
<a onClick="return onDownload(this)" id="mac-bundle64"
- href="http://dl.google.com/android/adt/<?cs var:sdk.mac64_bundle_download ?>"><?cs var:sdk.mac64_bundle_download ?></a>
+ href="http://dl.google.com/android/adt/<?cs var:sdk.version ?>/<?cs var:sdk.mac64_bundle_download ?>"><?cs var:sdk.mac64_bundle_download ?></a>
</td>
<td><?cs var:sdk.mac64_bundle_bytes ?> bytes</td>
<td><?cs var:sdk.mac64_bundle_checksum ?></td>
@@ -325,7 +325,7 @@
<td>Linux 32-bit</td>
<td>
<a onClick="return onDownload(this)" id="linux-bundle32"
- href="http://dl.google.com/android/adt/<?cs var:sdk.linux32_bundle_download ?>"><?cs var:sdk.linux32_bundle_download ?></a>
+ href="http://dl.google.com/android/adt/<?cs var:sdk.version ?>/<?cs var:sdk.linux32_bundle_download ?>"><?cs var:sdk.linux32_bundle_download ?></a>
</td>
<td><?cs var:sdk.linux32_bundle_bytes ?> bytes</td>
<td><?cs var:sdk.linux32_bundle_checksum ?></td>
@@ -334,7 +334,7 @@
<td>Linux 64-bit</td>
<td>
<a onClick="return onDownload(this)" id="linux-bundle64"
- href="http://dl.google.com/android/adt/<?cs var:sdk.linux64_bundle_download ?>"><?cs var:sdk.linux64_bundle_download ?></a>
+ href="http://dl.google.com/android/adt/<?cs var:sdk.version ?>/<?cs var:sdk.linux64_bundle_download ?>"><?cs var:sdk.linux64_bundle_download ?></a>
</td>
<td><?cs var:sdk.linux64_bundle_bytes ?> bytes</td>
<td><?cs var:sdk.linux64_bundle_checksum ?></td>
@@ -396,10 +396,10 @@
</div><!-- end col-13 for lower-half content -->
-
-
-
-
+
+
+
+
<script>
if (location.hash == "#Requirements") {
$('.reqs').show();
@@ -440,17 +440,17 @@
} else {
$('.pax').show();
}
-
-
+
+
function onDownload(link, button, bundle) {
-
+
/* set text for download button */
if (button) {
$("#downloadForRealz").html($(link).text());
} else {
$("#downloadForRealz").html("Download " + $(link).text());
}
-
+
/* if it's a bundle, show the 32/64-bit picker */
if (bundle) {
$("#downloadForRealz").attr('bundle','true');
@@ -482,7 +482,7 @@
function onAgreeChecked() {
/* verify that the TOS is agreed and a bit version is chosen */
if ($("input#agree").is(":checked") && $("#bitpicker input:checked").length) {
-
+
/* if downloading the bundle */
if ($("#downloadForRealz").attr('bundle')) {
/* construct the name of the link we want based on the bit version */
@@ -490,7 +490,7 @@
/* set the real url for download */
$("a#downloadForRealz").attr("href", $(linkId).attr("href"));
}
-
+
/* reveal the download button */
$("a#downloadForRealz").removeClass('disabled');
} else {
@@ -536,29 +536,29 @@
<p>Welcome developers! We are pleased to provide you with a preview SDK for the upcoming
Android 3.0 release, to give you a head-start on developing applications for it.
</p>
-
+
<p>See the <a
href="<?cs var:toroot ?>sdk/preview/start.html">Getting Started</a> document for more information
about how to set up the preview SDK and get started.</p>
<style type="text/css">
.non-preview { display:none; }
</style>
-
+
<?cs else ?><?cs # it's normal offline docs ?>
-
+
<?cs ######## HERE IS THE JD DOC CONTENT FOR OFFLINE ######### ?>
<?cs call:tag_list(root.descr) ?>
<style type="text/css">
body .offline { display:block; }
body .online { display:none; }
- </style>
+ </style>
<script>
$('.reqs').show();
</script>
<?cs /if ?>
-
+
<?cs /if ?> <?cs # end if/else online ?>
-
+
<?cs /if ?> <?cs # end if/else NDK ?>
<?cs /if ?> <?cs # end if/else redirect ?>
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index 3d8d5ff..fea335e 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -99,14 +99,9 @@
except IOError, e:
if e.errno == errno.ENOENT:
raise KeyError(fn)
-
d = {}
try:
- for line in read_helper("META/misc_info.txt").split("\n"):
- line = line.strip()
- if not line or line.startswith("#"): continue
- k, v = line.split("=", 1)
- d[k] = v
+ d = LoadDictionaryFromLines(read_helper("META/misc_info.txt").split("\n"))
except KeyError:
# ok if misc_info.txt doesn't exist
pass
@@ -174,9 +169,11 @@
except KeyError:
print "Warning: could not find SYSTEM/build.prop in %s" % zip
data = ""
+ return LoadDictionaryFromLines(data.split("\n"))
+def LoadDictionaryFromLines(lines):
d = {}
- for line in data.split("\n"):
+ for line in lines:
line = line.strip()
if not line or line.startswith("#"): continue
if "=" in line:
diff --git a/tools/releasetools/edify_generator.py b/tools/releasetools/edify_generator.py
index af545db..f6b30e0 100644
--- a/tools/releasetools/edify_generator.py
+++ b/tools/releasetools/edify_generator.py
@@ -68,6 +68,19 @@
with temporary=True) to this one."""
self.script.extend(other.script)
+ def AssertOemProperty(self, name, value):
+ """Assert that a property on the OEM paritition matches a value."""
+ if not name:
+ raise ValueError("must specify an OEM property")
+ if not value:
+ raise ValueError("must specify the OEM value")
+ cmd = ('file_getprop("/oem/oem.prop", "%s") == "%s" || '
+ 'abort("This package expects the value \\"%s\\" for '
+ '\\"%s\\" on the OEM partition; '
+ 'this has value \\"" + file_getprop("/oem/oem.prop") + "\\".");'
+ ) % (name, value, name, value)
+ self.script.append(cmd)
+
def AssertSomeFingerprint(self, *fp):
"""Assert that the current system build fingerprint is one of *fp."""
if not fp:
@@ -81,15 +94,16 @@
) % (" or ".join(fp),)
self.script.append(cmd)
- def AssertRecoveryFingerprint(self, *fp):
- """Assert that the current recovery build fingerprint is one of *fp."""
+ def AssertSomeThumbprint(self, *fp):
+ """Assert that the current system build thumbprint is one of *fp."""
if not fp:
- raise ValueError("must specify some fingerprints")
+ raise ValueError("must specify some thumbprints")
cmd = (
- ' ||\n '.join([('getprop("ro.build.fingerprint") == "%s"')
+ ' ||\n '.join([('file_getprop("/system/build.prop", '
+ '"ro.build.thumbprint") == "%s"')
% i for i in fp]) +
- ' ||\n abort("Package expects build fingerprint of %s; this '
- 'device has " + getprop("ro.build.fingerprint") + ".");'
+ ' ||\n abort("Package expects build thumbprint of %s; this '
+ 'device has " + getprop("ro.build.thumbprint") + ".");'
) % (" or ".join(fp),)
self.script.append(cmd)
diff --git a/tools/releasetools/ota_from_target_files b/tools/releasetools/ota_from_target_files
index 4863181..d3701e7 100755
--- a/tools/releasetools/ota_from_target_files
+++ b/tools/releasetools/ota_from_target_files
@@ -37,6 +37,10 @@
Generate an incremental OTA using the given target-files zip as
the starting build.
+ -o (--oem_settings) <file>
+ Use the file to specify the expected OEM-specific properties
+ on the OEM partition of the intended device.
+
-w (--wipe_user_data)
Generate an OTA package that will wipe the user data partition
when installed.
@@ -109,6 +113,7 @@
OPTIONS.no_signing = False
OPTIONS.block_based = False
OPTIONS.updater_binary = None
+OPTIONS.oem_source = None
def MostPopularKey(d, default):
"""Given a dict, return the key corresponding to the largest
@@ -361,9 +366,18 @@
whole_file=True)
-def AppendAssertions(script, info_dict):
- device = GetBuildProp("ro.product.device", info_dict)
- script.AssertDevice(device)
+def AppendAssertions(script, info_dict, oem_dict):
+ oem_props = info_dict.get("oem_fingerprint_properties")
+ if oem_props is None:
+ device = GetBuildProp("ro.product.device", info_dict)
+ script.AssertDevice(device)
+ else:
+ if oem_dict is None:
+ raise common.ExternalError("No OEM file provided to answer expected assertions")
+ for prop in oem_props.split():
+ if oem_dict.get(prop) is None:
+ raise common.ExternalError("The OEM file is missing the property %s" % prop)
+ script.AssertOemProperty(prop, oem_dict.get(prop))
def HasRecoveryPatch(target_files_zip):
@@ -373,6 +387,20 @@
except KeyError:
return False
+def GetOemProperty(name, oem_props, oem_dict, info_dict):
+ if oem_props is not None and name in oem_props:
+ return oem_dict[name]
+ return GetBuildProp(name, info_dict)
+
+
+def CalculateFingerprint(oem_props, oem_dict, info_dict):
+ if oem_props is None:
+ return GetBuildProp("ro.build.fingerprint", info_dict)
+ return "%s/%s/%s:%s" % (
+ GetOemProperty("ro.product.brand", oem_props, oem_dict, info_dict),
+ GetOemProperty("ro.product.name", oem_props, oem_dict, info_dict),
+ GetOemProperty("ro.product.device", oem_props, oem_dict, info_dict),
+ GetBuildProp("ro.build.thumbprint", info_dict))
def WriteFullOTAPackage(input_zip, output_zip):
# TODO: how to determine this? We don't know what version it will
@@ -380,9 +408,17 @@
# change very often.
script = edify_generator.EdifyGenerator(3, OPTIONS.info_dict)
- metadata = {"post-build": GetBuildProp("ro.build.fingerprint",
- OPTIONS.info_dict),
- "pre-device": GetBuildProp("ro.product.device",
+ oem_props = OPTIONS.info_dict.get("oem_fingerprint_properties")
+ oem_dict = None
+ if oem_props is not None:
+ if OPTIONS.oem_source is None:
+ raise common.ExternalError("OEM source required for this build")
+ script.Mount("/oem")
+ oem_dict = common.LoadDictionaryFromLines(open(OPTIONS.oem_source).readlines())
+
+ metadata = {"post-build": CalculateFingerprint(
+ oem_props, oem_dict, OPTIONS.info_dict),
+ "pre-device": GetOemProperty("ro.product.device", oem_props, oem_dict,
OPTIONS.info_dict),
"post-timestamp": GetBuildProp("ro.build.date.utc",
OPTIONS.info_dict),
@@ -405,7 +441,7 @@
ts_text = GetBuildProp("ro.build.date", OPTIONS.info_dict)
script.AssertOlderBuild(ts, ts_text)
- AppendAssertions(script, OPTIONS.info_dict)
+ AppendAssertions(script, OPTIONS.info_dict, oem_dict)
device_specific.FullOTA_Assertions()
# Two-step package strategy (in chronological order, which is *not*
@@ -852,7 +888,15 @@
script = edify_generator.EdifyGenerator(source_version,
OPTIONS.target_info_dict)
- metadata = {"pre-device": GetBuildProp("ro.product.device",
+ oem_props = OPTIONS.info_dict.get("oem_fingerprint_properties")
+ oem_dict = None
+ if oem_props is not None:
+ if OPTIONS.oem_source is None:
+ raise common.ExternalError("OEM source required for this build")
+ script.Mount("/oem")
+ oem_dict = common.LoadDictionaryFromLines(open(OPTIONS.oem_source).readlines())
+
+ metadata = {"pre-device": GetOemProperty("ro.product.device", oem_props, oem_dict,
OPTIONS.source_info_dict),
"post-timestamp": GetBuildProp("ro.build.date.utc",
OPTIONS.target_info_dict),
@@ -936,14 +980,21 @@
patch_list.append((tf, sf, tf.size, common.sha1(d).hexdigest()))
largest_source_size = max(largest_source_size, sf.size)
- source_fp = GetBuildProp("ro.build.fingerprint", OPTIONS.source_info_dict)
- target_fp = GetBuildProp("ro.build.fingerprint", OPTIONS.target_info_dict)
+ script.Mount("/system")
+
+ target_fp = CalculateFingerprint(oem_props, oem_dict, OPTIONS.target_info_dict)
+ source_fp = CalculateFingerprint(oem_props, oem_dict, OPTIONS.source_info_dict)
+
+ if oem_props is None:
+ script.AssertSomeFingerprint(source_fp, target_fp)
+ else:
+ script.AssertSomeThumbprint(
+ GetBuildProp("ro.build.thumbprint", OPTIONS.target_info_dict),
+ GetBuildProp("ro.build.thumbprint", OPTIONS.source_info_dict))
+
metadata["pre-build"] = source_fp
metadata["post-build"] = target_fp
- script.Mount("/system")
- script.AssertSomeFingerprint(source_fp, target_fp)
-
source_boot = common.GetBootableImage(
"/tmp/boot.img", "boot.img", OPTIONS.source_tmp, "BOOT",
OPTIONS.source_info_dict)
@@ -965,7 +1016,7 @@
# 0.1 for unpacking verbatim files, symlinking, and doing the
# device-specific commands.
- AppendAssertions(script, OPTIONS.target_info_dict)
+ AppendAssertions(script, OPTIONS.target_info_dict, oem_dict)
device_specific.IncrementalOTA_Assertions()
# Two-step incremental package strategy (in chronological order,
@@ -1227,6 +1278,8 @@
OPTIONS.wipe_user_data = True
elif o in ("-n", "--no_prereq"):
OPTIONS.omit_prereq = True
+ elif o in ("-o", "--oem_settings"):
+ OPTIONS.oem_source = a
elif o in ("-e", "--extra_script"):
OPTIONS.extra_script = a
elif o in ("-a", "--aslr_mode"):
@@ -1249,7 +1302,7 @@
return True
args = common.ParseOptions(argv, __doc__,
- extra_opts="b:k:i:d:wne:a:2",
+ extra_opts="b:k:i:d:wne:a:2o:",
extra_long_opts=["board_config=",
"package_key=",
"incremental_from=",
@@ -1262,6 +1315,7 @@
"no_signing",
"block",
"binary=",
+ "oem_settings=",
],
extra_option_handler=option_handler)