Commit Graph

209 Commits

Author SHA1 Message Date
Justin Klaassen 6900aa2144 Remove ExactCalculator module
Individual products can add their own calculator package if desired.

Bug: 120905067
Test: lunch aosp_arm64 && make -j8
Merged-In: I60490b6e2a42c4304768075e8fef9f07cb72d268
Change-Id: I60490b6e2a42c4304768075e8fef9f07cb72d268
2019-01-10 14:30:55 +08:00
Colin Cross ab84792815 Remove file named .d created in the source directory
I59b20c931ee3e5a8d35eb30da4148691c5095502 accidentally wrote depsfiles
to a file called .d in the top level of the source tree, remove them.

Bug: 119412419
Test: m
Change-Id: Iaf71a64a7ee4aa39084423dfd16aa934613ba158
2018-12-15 19:13:29 -08:00
Colin Cross e07a32b124 Restore reverted CleanSpec
Ica006a007d112c232311435aaac0c0e476232b67 added a clean step that was
reverted in I0ce3ad70c73ff997aacaf411b0b5dc73760e7f91.  Reverting
a clean step could cause a future clean step to be skipped, because
Make only tracks how many clean steps have been run out of each
CleanSpec.mk file.  Add back the reverted clean step.

Bug: 119412419
Test: none
Change-Id: I11fe12d7c3526ccc21f468b350b4288cb55a9447
2018-12-15 19:05:07 -08:00
Colin Cross 10846f99fb Revert "Correctly create directories before unzipping dexpreopt zip"
This reverts commit 2bb1f518fd.

Test: none
Bug: 119412419
2018-12-14 11:49:55 -08:00
Colin Cross 2bb1f518fd Correctly create directories before unzipping dexpreopt zip
Ie7daa94e107d53eff075ca58dbe721bd9d7fc8c2 attempted to pre-create
the directories that unzip would unzip into, but incorrectly
created them in the top of the source tree instead of in
$(PRODUCT_OUT).  Fix the directory location and add a cleanspec
to clean up the incorrect directories in the source tree.

Bug: 119412419
Test: m correctly cleans up incorrect directories in source tree
Test: extract unzip command from out/verbose.log.gz and add bash -x
Change-Id: Ica006a007d112c232311435aaac0c0e476232b67
2018-12-13 23:32:06 -08:00
Nicolas Geoffray 1bc5aff793 Remove perfprofd from set of binaries installed on system.
Needed to get some space on marlin-eng :(

Also avoids static linking libart into perfprofd. Roland will follow-up by reverting the no-perfprofd changes.

bug: 73175642

Test: lunch marlin-eng && m -j32
Change-Id: Ic1c79c6dd1052981801b92604f9891a8a63b4ea0
2018-12-11 23:00:57 +00:00
patricktu 345c9ae44f AIDEGen: Adopt prebuilt mechanism to bypass 'm aidegen'.
Bug: 119642842
Test: m clean;aidegen tradefed
Change-Id: Ib25591de77762ffdcc72ea4a064a50cfb3e5015e
2018-11-29 15:25:40 +08:00
Anton Hansson adbafe0a7c Add BOARD_USES_SYSTEM_OTHER_ODEX := true to mainline
Likely not the final setting we'll settle with for this device,
but brings mainline_system builds closer to the device builds
it's targeting.

Bug: 80410283
Test: build mainline_arm64
Change-Id: Ib672d1a060d0ad6a4e1faa210461bbbbaf6f2bc6
2018-11-16 16:36:50 +00:00
Colin Cross 3b4417a45e Remove old copies of host-libprotobuf-java-full.jar in test suites
Test suite directories not covered by installclean have an old copy
of host-libprotobuf-java-full in them that causes problems when
libprotobuf-java-full uses an updated ABI, remove them.

Bug: 119049592
Test: manual
Change-Id: Iedf0aaf2a1d1ca2c7332da3cc6d948946946eebe
2018-11-05 15:11:46 -08:00
Dan Willemsen 78c40be560 Create a new kati packaging step; move dist
Instead of looking at `dist` and DIST_DIR directly in the Kati Build
step, always write out information about every call to dist, then create
the rules in another ckati run.

So instead of having:

  dist:    <goal> -> <dist> -> <output>
                \______________↑

  nodist:  <goal> -----------> <output>

Always use another phony target in the Kati Build step:

   <goal> ---> <output>
        \----> _dist_<goal>

Then in the packaging step (which is much faster), choose between dist
and no dist:

  dist:   _dist_<goal> -> <dist> -> <output>

  nodist: _dist_<goal>

Bug: 117463001
Test: m dist
Change-Id: Ic96bb6356740300dd3113f6ed699e6a619360c40
2018-10-20 21:44:44 +00:00
Colin Cross 3c6d5480c5 Remove strip.sh intermediates to save space
Add a cleanspec to removed unused strip.sh intermediates.  Saved
32GB on my AOSP checkout that had been used to build multiple
devices.

Test: m nothing
Change-Id: Ia319a2feacdd1a1ac8b88a6783766c370438ce12
2018-10-18 14:19:56 -07:00
Dan Willemsen 8cf6b65445 Remove *_OUT_INTERMEDIATE_LIBRARIES
Always use the exact libraries like Soong does instead.

Test: m
Change-Id: Ifd48020073dd045247f76f84627c497e94562286
2018-09-15 10:52:13 -07:00
Tao Bao 696bb33676 Install recovery etc files to recovery/root/system/etc.
They used to be installed under recovery/root/etc. This CL moves the
files to the new location and creates a symlink from /etc to /system/etc
(done by the rule in system/core/rootdir). This gives similar layout
between normal boot and recovery, and allows installing prebuilt_etc
files with Soong (`recovery_available: true`).

As part of the change, we no longer need the whitelisting rule for
mke2fs.conf.

Bug: 112780007
Test: Build with other changes in the topic (aosp_taimen-userdebug).
      Check the generated files under recovery (/etc being a symlink to
      /system/etc).
Test: Boot into recovery. Verify basic functionalities (`adb shell` and
      `adb sideload`, factory reset).
Test: `build/soong/build_test.bash --dist`
Change-Id: Ibb6dea6f179a339f0c2d0fd8ba05ec0085b79a12
2018-08-21 10:30:49 -07:00
Tao Bao d6b3a4cc79 Add the Cleanspec rule for product-services symlink.
Bug: 112431447
Test: `m dist` when there's a leftover symlink of "/product-services".
Change-Id: I39bb79bd7790fe2243075768c6423b0fddc379f7
2018-08-21 07:34:18 -07:00
Dario Freni 924af7d4dd s/product-services/product_services/g
Attempting to reduce the number of different spellings we have for
"product services" partition in the codebase.

Bug: 112431447
Test: m
Change-Id: I6debd3f5f5abc4bd1e22f2ef11c5fe131915976c
Merged-In: I6debd3f5f5abc4bd1e22f2ef11c5fe131915976c
2018-08-20 10:44:59 -07:00
Sudheer Shanka a566dce20b Update CleanSpec to remove generated files from IVold.aidl.
Bug: 112058806
Test: Device booted after flashing a build with this change.
Change-Id: If0bda6869a7ed09b8c320b5c44c43f9d4cb4c3dd
Merged-In: If0bda6869a7ed09b8c320b5c44c43f9d4cb4c3dd
2018-08-20 10:44:50 -07:00
Steven Moreland 91c5154a42 Remove vr_hwc from GSI image.
Not all phones support the VR, so on phones
that don't, the inclusion of vr_hwc is causing
VtsHalGraphicsComposerV2_1Target failures.

Bug: 109913118
Bug: 111963599
Test: vr_hwc is not on aosp_arm64_ab
Change-Id: I803b4dddc5a87e35875992ad9421c644698112f1
Merged-In: I803b4dddc5a87e35875992ad9421c644698112f1
(cherry picked from commit 52971ca09b)
2018-07-31 02:48:29 +00:00
Colin Cross c7dee5c9a1 Move merged AndroidManifest.xml file to manifest subdirectory
Some modules generate their own custom AndroidManifest.xml file
to $(intermediates.COMMON)/AndroidManifest.xml file.  Move the
build system's location to
$(intermediates.COMMON)/manifest/AndroidManifest.xml.

This location will also be used later for finding manifest files
from LOCAL_STATIC_ANDROID_LIBRARIES dependencies.

Bug: 78447299
Test: m checkbuild
Change-Id: I345f079bdd191451333b38d882418f2f7150b1e9
Merged-In: I345f079bdd191451333b38d882418f2f7150b1e9
(cherry picked from commit 0bcc120b54)
2018-06-14 21:36:53 +00:00
Sunny Goyal 47acd31f57 Changing the default launcher and recents implementation for system build
Bug: 77490347
Test: Build and flashed system image
Change-Id: I71dbd7eb731c70656bb816848027626b2c7430cc
2018-06-05 21:15:06 +00:00
Logan Chien d73b94c097 Build a single GSI for O-MR1-VENDOR and Master-VENDOR
The objective of this commit is to support these 3 combinations:

1. Master-GSI + Master-VENDOR (w/ BOARD_VNDK_VERSION)
2. Master-GSI + Master-VENDOR (w/o BOARD_VNDK_VERSION for upgrading devices)
3. Master-GSI + O-MR1-VENDOR (w/ BOARD_VNDK_VERSION)

This commit defines a new property `ro.vndk.lite` to indicate the status
of BOARD_VNDK_VERSION run-time enforcement.  Now, all devices should
have `ro.vndk.version` so that `libhidlbase.so`, `libRSCpuRef.so`, and
`libnativeloader.so` can find the versioned VNDK directory.

Bug: 78605339
Test: aosp_sailfish Master-SYSTEM + Master-VENDOR boots
Test: aosp_sailfish Master-GSI    + Master-VENDOR boots
Test: aosp_walleye  Master-SYSTEM + Master-VENDOR boots
Test: aosp_walleye  Master-GSI    + Master-VENDOR boots
Test: aosp_walleye  Master-GSI    + O-MR1-VENDOR boots
Change-Id: Iee9553b3ca9e0798a873e655d87d10cdc23d4b1c
2018-05-10 21:17:58 +08:00
Colin Cross 50e8751056 Add asan-specific CleanSpec
ASAN builds run as two consecutive builds.  The cleanspec is applied by
the first one, which cleans the obj directory, and ignored by the
second.  This can result in old entries in the obj_asan directory.

Bug: 73885582
Test: obj_asan dirs are deleted
Change-Id: I54b8ec9cff581fcd9ec2a843aa7126805340c387
Merged-In: I54b8ec9cff581fcd9ec2a843aa7126805340c387
(cherry picked from commit 4e2da3277a)
2018-03-20 15:48:03 -07:00
Colin Cross ccf8992ac2 Use a srcjar for aapt and aapt2 output
Dumping files in the *_intermediates/src causes incremental build
problems, because we don't know when to delete them if they are
no longer generated.  Switch to outputting a srcjar instead, and
pass it in to the turbine and javac compiles.

Bug: 73885582
Test: m checkbuild
Change-Id: Ibef28507522339d930c09426d0c98372eb864cb6
Merged-In: Ibef28507522339d930c09426d0c98372eb864cb6
(cherry picked from commit 2d1cddd567)
2018-03-20 15:47:45 -07:00
Colin Cross ec7be103d0 Use srcjar and resource zip as output of renderscript rules
Replace RenderScript.stamp with a srcjar, with a resource zip as
an implicit output.  This makes the renderscript rules self contained,
which will make it easier to move them before aapt.

Bug: 73885582
Test: m checkbuild
Change-Id: I12d33e52019aebac6ea33271939228e4690a4173
Merged-In: I12d33e52019aebac6ea33271939228e4690a4173
(cherry picked from commit e00e2fae52)
2018-03-20 15:47:45 -07:00
Adrian Roos 12f3d9e2be Multi cutout: replace narrow with corner overlay
Bug: 74982138
Test: make droid
Change-Id: Ia6b25a0cf3718d316f944b7abf44fe9711fa0cf5
2018-03-15 19:23:05 +00:00
Adrian Roos 17444d16c2 Multi cutout: replace wide with double overlay
Bug: 74195186
Test: make droid
Change-Id: I4758ed081a0e306f87db21c9bc2c8160c455a0e6
2018-03-13 13:45:23 +01:00
Yifan Hong 8f863693c9 move VINTF metadata to /etc/vintf/ .
In particular,
/vendor/manifest.xml => /vendor/etc/vintf/manifest.xml
/system/manifest.xml => /system/etc/vintf/manifest.xml
/vendor/compatibility_matrix.xml =>
    /vendor/etc/vintf/compatibility_matrix.xml

Test: verify that fileis exist in destination
Test: hwservicemanager can read these files
Bug: 36790901
Change-Id: Ic361a48e170fb9a77faec76ad0e829625427820d
2018-01-19 10:52:27 -08:00
Colin Cross a6e878219c Remove obsolete leaf names
classes-no-debug-var.jar is incorrect, jars in coverage builds
do have debug information.  Remove full_classes_compiled_jar_leaf
and hardcode classes-full-debug.jar.

After the previous patch, all dex files have debug information,
so remove the no-local and with-local directories and replace
them with dex/.

Remove the unnecessary jarjar_leaf.

Bug: 70886092
Test: m checkbuild
Change-Id: I63eace8f8cda5ad8bc0cbd11eefda73dd063ed76
2017-12-20 17:33:01 -08:00
Justin Yun 2a233b3b86 Define PLATFORM_VNDK_VERSION
PLATFORM_VNDK_VERSION means the VNDK version that current build
provides. This value will be set to PLATFORM_SDK_VERSION once the
version is release. Otherwise, it will be set to "current".

Bug: 69883025
Test: device boot
Change-Id: I3fde4943aa062d9d148a3d7fc2798948870a48c6
2017-12-13 10:48:34 +09:00
Colin Cross d5cce4c360 Remove PRODUCT_AAPT2_CFLAGS and PRODUCT_AAPT_FLAGS
PRODUCT_AAPT2_CFLAGS and PRODUCT_AAPT_FLAGS are only used to pass
--pseudo-localize.  The flag doesn't need to be conditional on the
product, because the pseudo locale will be stripped out later if it
is not wanted.  Having it conditional on the product causes the
AAPT2-compiled resources to vary between products, which causes
unnecessary rebuilds when swithcing products.

Remove the variables, always add --pseudo-localize, and move
the AAPT2 compiled output to the common intermediates.

Test: m checkbuild
Change-Id: Iacc914114616b5bd19d9a1011802f4f9bca9bc19
2017-10-27 16:25:55 -07:00
Dan Willemsen 4d99527dcd Move generated aidl/logtags java classes to a subfolder
So that they can't be generated into src/, which would be added to the
source list automatically.

Bug: 36698184
Test: m telephony-common without this change, pass
Test: m telephony-common without the cleanspec, fail with dup class
Test: m telephony-common with the cleanspec, pass
Change-Id: I7b2fc1847d52ff4a9ba8c69e76123fe152629ef8
2017-09-29 20:36:50 -07:00
Dan Willemsen 74616d7802 Add CleanSpec.mk entries for linux -> linux_glibc
Soong renamed intermediate directories from linux_(common|x86|x86_64)...
to linux_glibc_(common|x86|x86_64)..., so remove the old versions to
save space.

Test: Check for old intermediates after applying and running cleanspec
Change-Id: I73ff39014491826224535e1d45c2215669fd19a2
2017-09-27 15:08:27 -07:00
Bowgo Tsai 9a05dca429 Copy adbd from system/bin to recovery/root/sbin
This change will be submitted with other changes moving adbd from
root/sbin to system/bin. We need to copy it specifically to recovery root.
Previously it was copied by rsync $(TARGET_ROOT_OUT) $(TARGET_RECOVERY_OUT).

Bug: 63910933
Test: normal boot sailfish, checks adb works
Test: recovery boot sailfish, checks adb works
Test: normal boot bullhead, checks adb works
Test: recovery boot bullhead, checks adb works

Change-Id: Ib49605f97a190aec2648cb000d1159b6e15db673
Merged-In: Ib49605f97a190aec2648cb000d1159b6e15db673
(cherry picked from commit 3147e7cfab)
2017-08-24 14:27:49 +08:00
Colin Cross bc291e63a0 Clean jack intermediates
Jack is no longer the default java compiler, clean the intermediates
to save space.

Bug: 36902714
Test: manual
Change-Id: I368442c8ad71eb5839c52839f2aa6ca55cf20bdd
2017-08-01 13:12:40 -07:00
Dan Willemsen 8533fa1b9d Fix install location for vendor tests
Bug: 63393698
Test: m -j hidl_test_client; apply; m -j hidl_test_client
Change-Id: Ia54a8d2aaedd63ce1d70944ee69fda3b9fe223a9
2017-07-06 17:46:17 -07:00
Dan Willemsen 3eb44160e0 Move version checking to soong_ui
This removes versions_checked.mk that caused kati to regenerate the
ninja file 3 times for a clean out directory. Kati needs to regenerate
every time that we write a file that we also read. soong_ui doesn't have
this problem.

Bug: 35970961
Test: m clean; m -j blueprint_tools; m -j blueprint_tools; m -j blueprint_tools
Test: $OUT_DIR/versions_checked.mk no longer exists
Change-Id: I14b67dc275ea3daa77a7315c2985dc73d77fd07c
2017-05-15 14:02:38 -07:00
Dan Willemsen 9d2b3280e8 Support split /system and /vendor modules from Soong
Soong modules may be split into both /system and /vendor variants.
Ensure that Make libraries link against the correct version based on
whether LOCAL_USE_VNDK is set.

Bug: 36426473
Bug: 36079834
Test: build-aosp_arm64.ninja files are the same before/after
Test: attempt building with BOARD_VNDK_VERSION:=current
Change-Id: I229bc290373743406275f3ca16081eae04c27987
2017-04-10 15:54:50 -07:00
Vishwath Mohan b285c46bbd Refactor sanitized library on-disk layout - Make.
This CL moves the location of ASAN-ified libraries on disk in the
following manner:
/data/lib* --> /data/asan/system/lib*
/data/vendor/* --> /data/asan/vendor/*

There are a couple of advantages to this, including better isolation
from other components, and more transparent linker renaming and
SELinux policies.

Bug: 36574794
Bug: 36674745
Test: m -j40 && SANITIZE_TARGET="address" m -j40 and the device
boots. All sanitized libraries are correctly located in /data/asan/*.

Change-Id: Ic6ba8e43e31df2ea92b85fd60f572823b6883ba2
2017-03-30 20:14:27 -07:00
Dan Willemsen de4e71b27b Revert "install *.so in different paths for their types"
This reverts commit 842a985f90. It's
causing test failures, warnings and complaints, so backing it out and
we'll resolve those before putting it back in.

This also bundles in the revert of a minor warning/error fixup for this
code, and does the correct thing with the CleanSpec.mk (which can't just
be reverted).

Bug: 33681361
Test: m -j
Change-Id: Ic889ce6a4737a497ad6bf633424ce1860713f7d0
2017-03-16 16:54:40 -07:00
Jiyong Park 842a985f90 install *.so in different paths for their types
Shared libraries are now installed to different directories depending on
their types.

* NDK libraries: /system/lib/ndk (with symlink from /system/lib)
* VNDK libraries: /system/lib/vndk
* VNDK-ext libraries: /system/lib/vndk-ext
* Framework-only libraries: /system/lib
* Vendor-only libraries: /vendor/lib
* Same-process HALs: /vendor/lib/sameprocess

However, if LOCAL_MODULE_PATH is explicitly set, then it is respected,
with a warning message. Module owners are highly encouraged to
investigate the warnings and use alternatives to LOCAL_MODULE_PATH;
combination of LOCAL_[PROPRIETARY|OEM|ODM]_MODULE, LOCAL_MODULE_CLASS
and LOCAL_RELATIVE_PATH will cover most of the cases.

Furthermore, for each shared libraries whose path is changed, a symolic
link from the original path to the new path is *temporarily* generated.
e.g. /system/lib/libbase.so -> vndk/libbase.so. This is
to prevent sudden breakage of the code expecting the lib from the old
path. This symbolic links will eventually be removed before O launch
(b/34917183).

Finally, BOARD_SAME_PROCESS_HAL_DEPS is added. It contains the list of
shared libraries implementing the same-process HALs and its internal sub
libraries. This is designed to be defined in BoardConfig.mk

Bug: 33681361
Test: build & run. Libraries must be in the correct directories.
Symlinks from the old path to the new path must exist.

Change-Id: I46130aac09ae65400fd4d0abbc2e12dddd154fb1
2017-03-13 08:27:09 +09:00
Dan Willemsen b2a5c7b369 Fix init rc installation in vendor when LOCAL_MODULE_PATH is set
The init.rc path selection uses the same partition_tag detection to
select an installation partition. So make sure that we always set
partition_tag even if we've been given an explicit module path.

Bug: 35314904
Test: set proprietary: true to Soong module with an init rc, verify
      that was the only change to build-aosp_arm64.ninja
Change-Id: Ic6ffd7a5177959db96a34a24896b242ee5b09e41
2017-02-13 14:19:47 -08:00
Simran Basi 7fe57cfdcd Update CleanSpec.mk for the common testcase directories.
Fix an issue with incremental builds and the new common
testcase directories.

Bug: None
Test: Removed https://android-review.googlesource.com/#/c/234478/
      then ran `m cts-platform-version-check` then reapplied the
      change to verify the failure. Then applied this new change
      to verify the problem was resolved.

Change-Id: I77529021e852af35571fb99537d87100010b47af
2017-02-10 15:56:29 -08:00
Dan Willemsen 912de8e691 Fix incremental builds with AAPT2
When we removed the src/ directory, the R.stamp file was removed -- with
AAPT, this triggers src/android/Manifest.java to be regenerated. But
AAPT2 only uses the R.stamp file as a timestamp to find the
Manifest.java file, not to create it.

So add a new CleanSpec.mk to fix the builds by removing the target that
AAPT2 uses to generate the src/android/Manifest.java file.

Test: None
Change-Id: If56f326ad701f7f92aa7c8aeda57e92d9c62cff9
2016-12-22 13:18:21 -08:00
Dan Willemsen cf324af6b8 Remove generated java source post clean logic
Just move the proto and renderscript sources into their own directories
-- the entire directory is wiped if the file list changes since the
command line will change. So we can just enable/disable pulling sources
from those directories based on whether there were files in the list or
not.

Bug: 30947985
Test: m -j java
Test: Remove a proto file from a java lib, ensure the generated source
      is not included.
Change-Id: If7529979de6fa62a651933a3a974f47b033851d6
2016-12-22 10:37:31 -08:00
Dan Willemsen dc556b4bc0 Prohibit host modules from using LOCAL_COPY_HEADERS
am: 6e51ef61a7

Change-Id: Id7c80e4dba5a505a04ce47d459c0a525debc4d53
2016-11-29 20:42:37 +00:00
Dan Willemsen 6e51ef61a7 Prohibit host modules from using LOCAL_COPY_HEADERS
There are no users left, so remove all of this.

Test: lunch aosp_arm-eng; m -j native
Test: build/tools/kati_all_products.sh on aosp and internal master
Change-Id: I32f5c8b470a43dd203d7e20c192167630e4e6888
2016-11-28 13:46:17 -08:00
Dan Willemsen d111debc18 resolve merge conflicts of 8dadc2d to nyc-mr1-dev-plus-aosp
Change-Id: I296a81c17f9311a9425619141e1b5f5f5fb4c0dc
2016-09-12 21:43:19 -07:00
Dan Willemsen 8e6e6fdba9 Remove incremental workaround for aapt overlays
This workaround to clean package intermediates is no longer necessary,
as ninja reruns commands whose command line changes.

Test: switch between product overlays that use add-resource, verify
      R.java is regenerated.
Change-Id: Icb1f76360e39882e4401180414a031956777b020
2016-09-12 20:30:12 -07:00
Alex Light 4e358ab2c3 Add system_other partition, install odex files
For AB devices, support flashing two system partitions for factory use.
The normal system image on one partition, but without dex preopt. And a
system_other image that just contains the odex files. The dex files will
not be stripped out of the system image, in case the second system
partition is wiped.

Setting BOARD_USES_SYSTEM_OTHER_ODEX := true in the BoardConfig.mk
enables this behavior.

One can control which directories are placed in system_other by the
SYSTEM_OTHER_ODEX_FILTER configuration variable. Currently we default
to only copying only app and priv-app odexs.

Bug: 29278988
Change-Id: I7f4e87da919e7dc6a89fd8c668193cd4e98631bc
2016-06-24 11:07:15 -07:00
Tao Bao 6c5f0acbe8 Merge "CleanSpec: Clean up /recovery/root/sdcard." am: b69d3b28a5
am: 8994f9ca38

* commit '8994f9ca383fa887e570f54ea78bfeb9fdd39b2e':
  CleanSpec: Clean up $(PRODUCT_OUT)/recovery/root/sdcard.
2016-01-22 18:53:15 +00:00
Tao Bao 6b10089bd6 CleanSpec: Clean up $(PRODUCT_OUT)/recovery/root/sdcard.
Incremental build going across CL in [1] needs to remove the old
symlink to avoid hitting mkdir error.

[1]: commit 3f56a33041

Change-Id: Iff62ed55eb2782ba3e1e9b6de39a691de2427384
2016-01-21 17:18:47 -08:00