diff --git a/external_updater.py b/external_updater.py
index 130feb62e09fd08aafdcf4a57afcebf8fb5e618e..6ff4e2593fc741f15d41e2ba3d589436915e5a8b 100644
--- a/external_updater.py
+++ b/external_updater.py
@@ -128,8 +128,11 @@ def update(args):
 
 def checkall(args):
     """Handler for checkall command."""
-    for root, _dirs, files in sorted(os.walk(args.path)):
+    for root, dirs, files in os.walk(args.path):
+        dirs.sort(key=lambda d: d.lower())
         if fileutils.METADATA_FILENAME in files:
+            # Skip sub directories.
+            dirs = []
             check_update(root)
 
 
diff --git a/update_package.sh b/update_package.sh
index 0a854a7674a0624669e25f0cfb7f7318d008880b..8d5e3c6a30f63cc348a30a2012b1244285076331 100644
--- a/update_package.sh
+++ b/update_package.sh
@@ -34,6 +34,7 @@ function CopyIfPresent() {
 echo "Copying preserved files..."
 CopyIfPresent "Android.bp"
 CopyIfPresent "Android.mk"
+CopyIfPresent "CleanSpec.mk"
 CopyIfPresent "LICENSE"
 CopyIfPresent "NOTICE"
 cp -a -f -n $external_dir/MODULE_LICENSE_* .