OSDN Git Service

Force sort order to 'C'
[android-x86/device-common.git] / generate-blob-scripts.sh
index ca0bcf6..7e418f7 100755 (executable)
@@ -16,7 +16,7 @@
 
 # This script auto-generates the scripts that manage the handling of the
 # proprietary blobs necessary to build the Android Open-Source Project code
-# for dream, passion and sapphire targets
+# for a variety of hardware targets
 
 # It needs to be run from the root of a source tree that can repo sync,
 # runs builds with and without the vendor tree, and uses the difference
@@ -43,34 +43,41 @@ then
 fi
 shift
 
-DEVICES="passion crespo"
-
-ARCHIVEDIR=archive-$(date +%s)
-mkdir $ARCHIVEDIR
+DEVICES="crespo crespo4g stingray panda toro maguro"
+export LC_ALL=C
 
 repo sync
 repo sync
 repo sync
-. build/envsetup.sh
-for DEVICENAME in $DEVICES
-do
-  rm -rf out
-  lunch full_$DEVICENAME-user
-  make -j8
-  cat out/target/product/$DEVICENAME/installed-files.txt |
-    cut -b 15- |
-    sort > $ARCHIVEDIR/$DEVICENAME-with.txt
-done
-rm -rf vendor
-for DEVICENAME in $DEVICES
-do
-  rm -rf out
-  lunch full_$DEVICENAME-user
-  make -j8
-  cat out/target/product/$DEVICENAME/installed-files.txt |
-    cut -b 15- |
-    sort > $ARCHIVEDIR/$DEVICENAME-without.txt
-done
+
+ARCHIVEDIR=archive-$(date +%s)
+if test -d archive-ref
+then
+  cp -R archive-ref $ARCHIVEDIR
+else
+  mkdir $ARCHIVEDIR
+
+  . build/envsetup.sh
+  for DEVICENAME in $DEVICES
+  do
+    rm -rf out
+    lunch full_$DEVICENAME-user
+    make -j32
+    cat out/target/product/$DEVICENAME/installed-files.txt |
+      cut -b 15- |
+      sort -f > $ARCHIVEDIR/$DEVICENAME-with.txt
+  done
+  rm -rf vendor
+  for DEVICENAME in $DEVICES
+  do
+    rm -rf out
+    lunch full_$DEVICENAME-user
+    make -j32
+    cat out/target/product/$DEVICENAME/installed-files.txt |
+      cut -b 15- |
+      sort -f > $ARCHIVEDIR/$DEVICENAME-without.txt
+  done
+fi
 
 for DEVICENAME in $DEVICES
 do
@@ -102,6 +109,7 @@ do
     echo 'mkdir -p ../../../vendor/$MANUFACTURER/$DEVICE/proprietary'
 
     diff $ARCHIVEDIR/$DEVICENAME-without.txt $ARCHIVEDIR/$DEVICENAME-with.txt |
+      grep -v '\.odex$' |
       grep '>' |
       cut -b 3- |
       while read FULLPATH
@@ -112,7 +120,7 @@ do
         else
           echo unzip -j -o ../../../\${DEVICE}_update.zip $(echo $FULLPATH | cut -b 2-) -d ../../../vendor/\$MANUFACTURER/\$DEVICE/proprietary
         fi
-        if test $(basename $FULLPATH) = akmd -o $(basename $FULLPATH) = mm-venc-omx-test -o $(basename $FULLPATH) = parse_radio_log
+        if test $(basename $FULLPATH) = akmd -o $(basename $FULLPATH) = mm-venc-omx-test -o $(basename $FULLPATH) = parse_radio_log -o $(basename $FULLPATH) = akmd8973 -o $(basename $FULLPATH) = gpsd -o $(basename $FULLPATH) = pvrsrvinit -o $(basename $FULLPATH) = fRom
         then
           echo chmod 755 ../../../vendor/\$MANUFACTURER/\$DEVICE/proprietary/$(basename $FULLPATH)
         fi
@@ -142,11 +150,12 @@ do
 
     FOUND=false
     diff $ARCHIVEDIR/$DEVICENAME-without.txt $ARCHIVEDIR/$DEVICENAME-with.txt |
+      grep -v '\.odex$' |
       grep '>' |
       cut -b 3- |
       while read FULLPATH
       do
-        if test $(basename $FULLPATH) = libgps.so -o $(basename $FULLPATH) = libcamera.so
+        if test $(basename $FULLPATH) = libgps.so -o $(basename $FULLPATH) = libcamera.so -o $(basename $FULLPATH) = libsecril-client.so
         then
           if test $FOUND = false
           then
@@ -164,6 +173,8 @@ do
 
     FOUND=false
     diff $ARCHIVEDIR/$DEVICENAME-without.txt $ARCHIVEDIR/$DEVICENAME-with.txt |
+      grep -v '\.odex$' |
+      grep -v '\.apk$' |
       grep '>' |
       cut -b 3- |
       while read FULLPATH
@@ -181,22 +192,107 @@ do
         echo -n \ \ \ \ vendor/__MANUFACTURER__/__DEVICE__/proprietary/$(basename $FULLPATH):$(echo $FULLPATH | cut -b 2-)
       done
     echo
+
+    FOUND=false
+    diff $ARCHIVEDIR/$DEVICENAME-without.txt $ARCHIVEDIR/$DEVICENAME-with.txt |
+      grep '\.apk$' |
+      grep '>' |
+      cut -b 3- |
+      while read FULLPATH
+      do
+        if test $FOUND = false
+        then
+          echo
+          echo -n '# All the apks necessary for '
+          echo $DEVICENAME
+          echo 'PRODUCT_PACKAGES += \\'
+        else
+          echo \ \\\\
+        fi
+        FOUND=true
+        echo -n \ \ \ \ 
+        echo -n $(basename $FULLPATH) | sed 's/\.apk//g'
+      done
+    echo
+
+    echo
+    echo 'EOF'
+
+    echo
+
+    echo -n '(cat << EOF) | sed s/__DEVICE__/$DEVICE/g | sed s/__MANUFACTURER__/$MANUFACTURER/g > ../../../vendor/$MANUFACTURER/$DEVICE/'
+    echo 'proprietary/Android.mk'
+
+    echo '# Copyright (C) 2011 The Android Open Source Project'
+    echo '#'
+    echo '# Licensed under the Apache License, Version 2.0 (the "License");'
+    echo '# you may not use this file except in compliance with the License.'
+    echo '# You may obtain a copy of the License at'
+    echo '#'
+    echo '#      http://www.apache.org/licenses/LICENSE-2.0'
+    echo '#'
+    echo '# Unless required by applicable law or agreed to in writing, software'
+    echo '# distributed under the License is distributed on an "AS IS" BASIS,'
+    echo '# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.'
+    echo '# See the License for the specific language governing permissions and'
+    echo '# limitations under the License.'
+    echo
+    echo -n '# This file is generated by device/__MANUFACTURER__/__DEVICE__/'
+    echo -n $FILESTYLE
+    echo '-files.sh - DO NOT EDIT'
+    echo
+    echo ifeq \(\\\$\(TARGET_DEVICE\),$DEVICENAME\)
+    echo LOCAL_PATH:=\\\$\(call my-dir\)
+
+    FOUND=false
+    diff $ARCHIVEDIR/$DEVICENAME-without.txt $ARCHIVEDIR/$DEVICENAME-with.txt |
+      grep '\.apk$' |
+      grep '>' |
+      cut -b 3- |
+      while read FULLPATH
+      do
+        if test $FOUND = false
+        then
+          echo
+          echo -n '# Module makefile rules for apks on '
+          echo $DEVICENAME
+        fi
+        FOUND=true
+        echo
+        echo -n '# '
+        echo $(basename $FULLPATH) | sed 's/\.apk//g'
+        echo
+        echo include \\\$\(CLEAR_VARS\)
+        echo
+        echo LOCAL_MODULE := $(basename $FULLPATH) | sed 's/\.apk//g'
+        echo LOCAL_SRC_FILES := \\\$\(LOCAL_MODULE\).apk
+        echo LOCAL_MODULE_CLASS := APPS
+        echo LOCAL_MODULE_TAGS := optional
+        echo LOCAL_CERTIFICATE := PRESIGNED
+        echo LOCAL_MODULE_SUFFIX := \\\$\(COMMON_ANDROID_PACKAGE_SUFFIX\)
+        echo include \\\$\(BUILD_PREBUILT\)
+      done
+    echo
+    echo endif
+    echo
+
     echo 'EOF'
     echo
     echo './setup-makefiles.sh'
 
     ) > $ARCHIVEDIR/$DEVICENAME-$FILESTYLE-files.sh
     cp $ARCHIVEDIR/$DEVICENAME-$FILESTYLE-files.sh device/$MANUFACTURERNAME/$DEVICENAME/$FILESTYLE-files.sh
+    chmod a+x device/$MANUFACTURERNAME/$DEVICENAME/$FILESTYLE-files.sh
   done
 
   (
     cd device/$MANUFACTURERNAME/$DEVICENAME
     git add .
-    git commit -m "auto-generated blob-handling scripts"
+    git commit -m "$(echo -e 'auto-generated blob-handling scripts\n\nBug: 4295425')"
     if test "$1" != "" -a "$2" != ""
     then
       echo uploading to server $1 branch $2
-      git push ssh://$1:29418/device/$MANUFACTURERNAME/$DEVICENAME.git HEAD:refs/for/$2
+      git push ssh://$1:29418/device/$MANUFACTURERNAME/$DEVICENAME.git HEAD:refs/for/$2/autoblobs
     fi
   )