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