1#!/bin/sh 2 3# Copyright 2012 The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16 17if [ $# != 6 ] 18then 19 echo Usage: $0 BUILD_ID BUILD ROOTDEVICE DEVICE MANUFACTURER PRODUCT 20 echo Example: $0 1075408 KOT49Y mako mako lge occam 21fi 22 23ZIP_TYPE=target_files # ota | target_files 24 25ZIP=$6-$ZIP_TYPE-$1.zip 26BUILD=$2 27 28ROOTDEVICE=$3 29DEVICE=$4 30MANUFACTURER=$5 31 32cd ../$MANUFACTURER/$ROOTDEVICE/self-extractors || echo Error change dir 33 34EXTRACT_LIST_FILENAME=extract-lists.txt 35 36for COMPANY in `grep "[a-z|A-Z])" $EXTRACT_LIST_FILENAME | cut -f1 -d')'` 37do 38 echo Processing files from $COMPANY 39 rm -rf tmp 40 FILEDIR=tmp/vendor/$COMPANY/$DEVICE/proprietary 41 MAKEFILEDIR=tmp/vendor/$COMPANY/$DEVICE/ 42 FILEDIR_ROOT=tmp/vendor/$MANUFACTURER/$ROOTDEVICE 43 44 case ${ROOTDEVICE} in 45 dragon|marlin|sailfish|taimen|walleye|crosshatch|blueline|bonito|sargo) 46 FILEDIR_ROOT=tmp/vendor/${MANUFACTURER}_devices/$ROOTDEVICE ;; 47 hikey960) 48 FILEDIR=tmp/vendor/linaro/$DEVICE/$COMPANY/proprietary 49 MAKEFILEDIR=tmp/vendor/linaro/$DEVICE/$COMPANY ;; 50 *) ;; 51 esac 52 53 mkdir -p ${FILEDIR} 54 mkdir -p ${FILEDIR_ROOT} 55 56 TO_EXTRACT=`sed -n -e '/'" $COMPANY"'/,/;;/ p' $EXTRACT_LIST_FILENAME | tail -n+3 | head -n-2 | sed -e 's/\\\//g'` 57 58 echo \ \ Extracting files from OTA package 59 for ONE_FILE in $TO_EXTRACT 60 do 61 if test ${ZIP_TYPE} = target_files 62 then 63 ONE_FILE=`echo $ONE_FILE | sed 's/system\//SYSTEM\//g'` 64 fi 65 66 if [[ $ONE_FILE == */lib64/* ]] 67 then 68 FILEDIR_NEW=$FILEDIR/lib64 69 elif [[ $ONE_FILE == */arm64/* ]] 70 then 71 FILEDIR_NEW=$FILEDIR/arm64 72 elif [[ $ONE_FILE == */arm/nb/* ]] 73 then 74 FILEDIR_NEW=$FILEDIR/armnb 75 else 76 FILEDIR_NEW=$FILEDIR 77 fi 78 79 echo \ \ \ \ Extracting $ONE_FILE 80 unzip -j -o $ZIP $ONE_FILE -d $FILEDIR_NEW> /dev/null || echo \ \ \ \ Error extracting $ONE_FILE 81 if test ${ONE_FILE,,} = system/vendor/bin/gpsd -o ${ONE_FILE,,} = system/vendor/bin/pvrsrvinit -o ${ONE_FILE,,} = system/bin/fRom 82 then 83 chmod a+x $FILEDIR_NEW/$(basename $ONE_FILE) || echo \ \ \ \ Error chmoding $ONE_FILE 84 fi 85 86 ONE_FILE_BASE=$(basename $ONE_FILE) 87 88 # Sanity check to make sure apk or jar files are not stripped 89 if [[ ${ONE_FILE_BASE} == *.apk ]] || [[ ${ONE_FILE_BASE} == *.jar ]] 90 then 91 zipinfo ${FILEDIR_NEW}/${ONE_FILE_BASE} | grep -q classes.dex > /dev/null 92 if [[ $? != "0" ]] 93 then 94 echo "Error ${ONE_FILE} is stripped" 95 fi 96 fi 97 98 done 99 echo \ \ Setting up $COMPANY-specific makefiles 100 cp -R $COMPANY/staging/* $MAKEFILEDIR || echo \ \ \ \ Error copying makefiles 101 echo \ \ Setting up shared makefiles 102 unzip -j -o $ZIP OTA/android-info.txt -d root > /dev/null || echo \ \ \ \ Error extracting OTA/android-info.txt 103 cp -R root/* ${FILEDIR_ROOT} || echo \ \ \ \ Error copying makefiles 104 105 if [[ ${ROOTDEVICE} == sailfish ]] 106 then 107 FILEDIR_ROOT_SHARE=tmp/vendor/${MANUFACTURER}_devices/marlin 108 mkdir -p ${FILEDIR_ROOT_SHARE} 109 110 # sailfish shares BoardConfigVendor.mk with its bro' marlin 111 mv ${FILEDIR_ROOT}/BoardConfigVendor.mk ${FILEDIR_ROOT_SHARE} 112 # Move device-vendor-sailfish.mk under marlin directory so that it can be 113 # inherited by device/google/marlin/aosp_sailfish.mk 114 mv ${FILEDIR_ROOT}/device-vendor-sailfish.mk ${FILEDIR_ROOT_SHARE} 115 elif [[ ${ROOTDEVICE} == walleye ]] 116 then 117 FILEDIR_ROOT_SHARE=tmp/vendor/${MANUFACTURER}_devices/muskie/proprietary 118 mkdir -p ${FILEDIR_ROOT_SHARE} 119 120 # walleye shares BoardConfigVendor.mk with its sis' muskie 121 mv ${FILEDIR_ROOT}/proprietary/BoardConfigVendor.mk ${FILEDIR_ROOT_SHARE} 122 # Move device-vendor-walleye.mk under muskie directory so that it can be 123 # inherited by device/google/muskie/aosp_walleye.mk 124 mv ${FILEDIR_ROOT}/proprietary/device-vendor-walleye.mk ${FILEDIR_ROOT_SHARE} 125 elif [[ ${ROOTDEVICE} == blueline ]] 126 then 127 FILEDIR_ROOT_SHARE=tmp/vendor/${MANUFACTURER}_devices/crosshatch/proprietary 128 mkdir -p ${FILEDIR_ROOT_SHARE} 129 130 # blueline shares BoardConfigVendor.mk with its neph' crosshatch 131 mv ${FILEDIR_ROOT}/proprietary/BoardConfigVendor.mk ${FILEDIR_ROOT_SHARE} 132 # Move device-vendor-blueline.mk under crosshatch directory so that it can 133 # be inherited by device/google/crosshatch/aosp_blueline.mk 134 mv ${FILEDIR_ROOT}/proprietary/device-vendor.mk ${FILEDIR_ROOT_SHARE} 135 elif [[ ${ROOTDEVICE} == sargo ]] 136 then 137 FILEDIR_ROOT_SHARE=tmp/vendor/${MANUFACTURER}_devices/bonito/proprietary 138 mkdir -p ${FILEDIR_ROOT_SHARE} 139 140 # sargo shares BoardConfigVendor.mk with its bro-in-law' bonito 141 mv ${FILEDIR_ROOT}/proprietary/BoardConfigVendor.mk ${FILEDIR_ROOT_SHARE} 142 # Move device-vendor-sargo.mk under bonito directory so that it can 143 # be inherited by device/google/bonito/aosp_sargo.mk 144 mv ${FILEDIR_ROOT}/proprietary/device-vendor.mk ${FILEDIR_ROOT_SHARE} 145 fi 146 147 if [[ ${COMPANY} == qcom ]] 148 then 149 case ${ROOTDEVICE} in 150 marlin|sailfish|taimen|walleye|crosshatch|blueline|bonito|sargo) 151 if [[ -e "${MAKEFILEDIR}/Android.mk" ]] 152 then 153 mv ${MAKEFILEDIR}/Android.mk ${FILEDIR}/ 154 fi 155 ;; 156 *) ;; 157 esac 158 fi 159 160 echo \ \ Generating self-extracting script 161 SCRIPT=extract-$COMPANY-$DEVICE.sh 162 cat PROLOGUE > tmp/$SCRIPT || echo \ \ \ \ Error generating script 163 cat $COMPANY/COPYRIGHT >> tmp/$SCRIPT || echo \ \ \ \ Error generating script 164 cat PART1 >> tmp/$SCRIPT || echo \ \ \ \ Error generating script 165 cat $COMPANY/LICENSE >> tmp/$SCRIPT || echo \ \ \ \ Error generating script 166 cat PART2 >> tmp/$SCRIPT || echo \ \ \ \ Error generating script 167 echo tail -n +$(expr 2 + $(cat PROLOGUE $COMPANY/COPYRIGHT PART1 $COMPANY/LICENSE PART2 PART3 | wc -l)) \$0 \| tar zxv >> tmp/$SCRIPT || echo \ \ \ \ Error generating script 168 cat PART3 >> tmp/$SCRIPT || echo \ \ \ \ Error generating script 169 (cd tmp ; tar zc --owner=root --group=root vendor/ >> $SCRIPT || echo \ \ \ \ Error generating embedded tgz) 170 chmod a+x tmp/$SCRIPT || echo \ \ \ \ Error generating script 171 ARCHIVE=$COMPANY-$DEVICE-$BUILD-$(sha256sum < tmp/$SCRIPT | cut -b -8 | tr -d \\n).tgz 172 rm -f $ARCHIVE 173 echo \ \ Generating final archive 174 (cd tmp ; tar --owner=root --group=root -z -c -f ../$ARCHIVE $SCRIPT || echo \ \ \ \ Error archiving script) 175 rm -rf tmp 176done 177