merge in jb-mr2-release history after reset to jb-mr2-dev
diff --git a/core/Makefile b/core/Makefile
index 5928a7e..2f86fd7 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -760,12 +760,8 @@
 
 .PHONY: installed-file-list
 installed-file-list: $(INSTALLED_FILES_FILE)
-ifneq ($(filter sdk win_sdk,$(MAKECMDGOALS)),)
-$(call dist-for-goals, sdk win_sdk, $(INSTALLED_FILES_FILE))
-endif
-ifneq ($(filter sdk_addon,$(MAKECMDGOALS)),)
-$(call dist-for-goals, sdk_addon, $(INSTALLED_FILES_FILE))
-endif
+
+$(call dist-for-goals, sdk win_sdk sdk_addon, $(INSTALLED_FILES_FILE))
 
 systemimage_intermediates := \
     $(call intermediates-dir-for,PACKAGING,systemimage)
diff --git a/core/build_id.mk b/core/build_id.mk
index 577a060..40bb35d 100644
--- a/core/build_id.mk
+++ b/core/build_id.mk
@@ -1,4 +1,3 @@
-
 #
 # Copyright (C) 2008 The Android Open Source Project
 #
@@ -14,9 +13,20 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+
+#
+# Defines branch-specific values.
+#
+
 # BUILD_ID is usually used to specify the branch name
 # (like "MAIN") or a branch name and a release candidate
-# (like "CRB01").  It must be a single word, and is
+# (like "TC1-RC5").  It must be a single word, and is
 # capitalized by convention.
+#
+BUILD_ID := MASTER
 
-export BUILD_ID=JWQ59D
+# DISPLAY_BUILD_NUMBER should only be set for development branches,
+# If set, the BUILD_NUMBER (cl) is appended to the BUILD_ID for
+# a more descriptive BUILD_ID_DISPLAY, otherwise BUILD_ID_DISPLAY
+# is the same as BUILD_ID
+DISPLAY_BUILD_NUMBER := true
diff --git a/core/distdir.mk b/core/distdir.mk
index e04938b..51ec46e 100644
--- a/core/distdir.mk
+++ b/core/distdir.mk
@@ -41,6 +41,11 @@
 	$$(copy-file-to-new-target-with-cp)
 endef
 
+# A global variable to remember all dist'ed src:dst pairs.
+# So if a src:dst is already dist'ed by another goal,
+# we should just establish the dependency and don't really call the
+# copy-one-dist-file to avoid multiple rules for the same target.
+_all_dist_src_dst_pairs :=
 # Other parts of the system should use this function to associate
 # certain files with certain goals.  When those goals are built
 # and "dist" is specified, the marked files will be copied to DIST_DIR.
@@ -56,14 +61,13 @@
   $(eval src := $(word 1,$(fw))) \
   $(eval dst := $(word 2,$(fw))) \
   $(eval dst := $(if $(dst),$(dst),$(notdir $(src)))) \
-  $(eval \
-      $(call copy-one-dist-file, \
-          $(src), \
-          $(DIST_DIR)/$(dst), \
-	  $(1) \
-       ) \
-   ) \
- )
+  $(if $(filter $(_all_dist_src_dst_pairs),$(src):$(dst)),\
+    $(eval $(call add-dependency,$(1),$(DIST_DIR)/$(dst))),\
+    $(eval $(call copy-one-dist-file,\
+      $(src),$(DIST_DIR)/$(dst),$(1)))\
+      $(eval _all_dist_src_dst_pairs += $(src):$(dst))\
+  )\
+)
 endef
 
 else # !dist_goal
diff --git a/core/main.mk b/core/main.mk
index 75a75cc..7f3d706 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -779,9 +779,6 @@
 # dist_files only for putting your library into the dist directory with a full build.
 .PHONY: dist_files
 
-# Dist for droid if droid is among the cmd goals, or no cmd goal is given.
-ifneq ($(filter droid,$(MAKECMDGOALS))$(filter ||,|$(filter-out $(INTERNAL_MODIFIER_TARGETS),$(MAKECMDGOALS))|),)
-
 ifneq ($(TARGET_BUILD_APPS),)
   # If this build is just for apps, only build apps and not the full system by default.
 
@@ -840,9 +837,6 @@
 droid: droidcore dist_files
 
 endif # TARGET_BUILD_APPS
-endif # droid in $(MAKECMDGOALS)
-
-.PHONY: droid
 
 .PHONY: docs
 docs: $(ALL_DOCS)
@@ -850,13 +844,11 @@
 .PHONY: sdk
 ALL_SDK_TARGETS := $(INTERNAL_SDK_TARGET)
 sdk: $(ALL_SDK_TARGETS)
-ifneq ($(filter sdk win_sdk,$(MAKECMDGOALS)),)
 $(call dist-for-goals,sdk win_sdk, \
     $(ALL_SDK_TARGETS) \
     $(SYMBOLS_ZIP) \
     $(INSTALLED_BUILD_PROP_TARGET) \
 )
-endif
 
 # umbrella targets to assit engineers in verifying builds
 .PHONY: java native target host java-host java-target native-host native-target \
diff --git a/core/tasks/cts.mk b/core/tasks/cts.mk
index 108e30b..5b041d6 100644
--- a/core/tasks/cts.mk
+++ b/core/tasks/cts.mk
@@ -75,6 +75,7 @@
 define generate-core-test-description
 @echo "Generate core-test description ("$(notdir $(1))")"
 $(hide) java -Xmx256M \
+	-Xbootclasspath/a:$(PRIVATE_CLASSPATH) \
 	-classpath $(PRIVATE_CLASSPATH):$(HOST_OUT_JAVA_LIBRARIES)/descGen.jar:$(HOST_JDK_TOOLS_JAR) \
 	$(PRIVATE_PARAMS) CollectAllTests $(1) $(2) $(3) "$(4)" $(5) $(6)
 endef
diff --git a/target/product/languages_full.mk b/target/product/languages_full.mk
index 35ab1f1..0fc13c7 100644
--- a/target/product/languages_full.mk
+++ b/target/product/languages_full.mk
@@ -19,6 +19,6 @@
 # mostly because screen densities interfere with the list of locales and
 # the system misbehaves when a density is the first locale.
 
-# Those are all the locales that have translations and are displayable
+# These are all the locales that have translations and are displayable
 # by TextView in this branch.
-PRODUCT_LOCALES := en_US fr_FR it_IT es_ES de_DE nl_NL cs_CZ pl_PL ja_JP zh_TW zh_CN ru_RU ko_KR nb_NO es_US da_DK el_GR tr_TR pt_PT pt_BR rm_CH sv_SE bg_BG ca_ES en_GB fi_FI hi_IN hr_HR hu_HU in_ID iw_IL lt_LT lv_LV ro_RO sk_SK sl_SI sr_RS uk_UA vi_VN tl_PH ar_EG fa_IR th_TH sw_TZ ms_MY af_ZA zu_ZA am_ET hi_IN
+PRODUCT_LOCALES := en_US fr_FR it_IT es_ES de_DE nl_NL cs_CZ pl_PL ja_JP zh_TW zh_CN ru_RU ko_KR nb_NO es_US da_DK el_GR tr_TR pt_PT pt_BR rm_CH sv_SE bg_BG ca_ES en_GB fi_FI hi_IN hr_HR hu_HU in_ID iw_IL lt_LT lv_LV ro_RO sk_SK sl_SI sr_RS uk_UA vi_VN tl_PH ar_EG fa_IR th_TH sw_TZ ms_MY af_ZA zu_ZA am_ET hi_IN en_XA ar_XB