• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)
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  # Check if TO_EXTRACT list has any APK files
59  if [[ ${TO_EXTRACT} == *.apk* ]]
60  then
61    APK_MAKEFILE=${FILEDIR}/Android.mk
62    echo "LOCAL_PATH := \$(call my-dir)" > ${APK_MAKEFILE}
63    echo "" >> ${APK_MAKEFILE}
64  fi
65
66  echo \ \ Extracting files from OTA package
67  for ONE_FILE in $TO_EXTRACT
68  do
69    if test ${ZIP_TYPE} = target_files
70    then
71      ONE_FILE=`echo $ONE_FILE | sed 's/system\//SYSTEM\//g'`
72    fi
73
74    if [[ $ONE_FILE == */lib64/* ]]
75    then
76      FILEDIR_NEW=$FILEDIR/lib64
77    elif [[ $ONE_FILE == */arm/nb/* ]]
78    then
79      FILEDIR_NEW=$FILEDIR/armnb
80    else
81      FILEDIR_NEW=$FILEDIR
82    fi
83
84    # apk makefile
85    if [[ ${ONE_FILE} == *.apk ]]
86    then
87      TMP_ONE_FILE_NAME=$(basename ${ONE_FILE} | sed 's/.apk//g')
88
89      echo "include \$(CLEAR_VARS)" >> ${APK_MAKEFILE}
90
91      echo "LOCAL_MODULE_SUFFIX := \$(COMMON_ANDROID_PACKAGE_SUFFIX)" >> ${APK_MAKEFILE}
92      echo "LOCAL_MODULE := ${TMP_ONE_FILE_NAME}" >> ${APK_MAKEFILE}
93      echo "LOCAL_MODULE_TAGS := optional" >> ${APK_MAKEFILE}
94      echo "LOCAL_BUILT_MODULE_STEM := package.apk" >> ${APK_MAKEFILE}
95      echo "LOCAL_MODULE_OWNER := ${COMPANY}" >> ${APK_MAKEFILE}
96      echo "LOCAL_MODULE_CLASS := APPS" >> ${APK_MAKEFILE}
97      echo "LOCAL_SRC_FILES := \$(LOCAL_MODULE).apk" >> ${APK_MAKEFILE}
98      echo "LOCAL_CERTIFICATE := PRESIGNED" >> ${APK_MAKEFILE}
99
100      if [[ ${ONE_FILE} == *priv-app/* ]]
101      then
102        echo "LOCAL_PRIVILEGED_MODULE := true" >> ${APK_MAKEFILE}
103      fi
104
105      if [[ ${TMP_ONE_FILE_NAME} == "LeanbackLauncher" ]]
106      then
107        echo "LOCAL_OVERRIDES_PACKAGES := Launcher2" >> ${APK_MAKEFILE}
108      fi
109
110      echo "include \$(BUILD_PREBUILT)" >> ${APK_MAKEFILE}
111      echo "" >> ${APK_MAKEFILE}
112    fi
113
114    echo \ \ \ \ Extracting $ONE_FILE
115    unzip -j -o $ZIP $ONE_FILE -d $FILEDIR_NEW> /dev/null || echo \ \ \ \ Error extracting $ONE_FILE
116    if test ${ONE_FILE,,} = system/vendor/bin/gpsd -o ${ONE_FILE,,} = system/vendor/bin/pvrsrvinit -o ${ONE_FILE,,} = system/bin/fRom
117    then
118      chmod a+x $FILEDIR_NEW/$(basename $ONE_FILE) || echo \ \ \ \ Error chmoding $ONE_FILE
119    fi
120
121    ONE_FILE_BASE=$(basename $ONE_FILE)
122    if [[ $ONE_FILE_BASE == *atmel-a432-*-shamu-p1.tdat ]]
123    then
124      ATMEL_FILE=$(ls $FILEDIR_NEW/$ONE_FILE_BASE | cut -f6 -d'/')
125      sed -i "s/$ONE_FILE_BASE/$ATMEL_FILE/" moto/staging/device-partial.mk
126    elif [[ $ONE_FILE_BASE == *atmel-a432-*-shamu.tdat ]]
127    then
128      ATMEL_FILE=$(ls $FILEDIR_NEW/$ONE_FILE_BASE | cut -f6 -d'/')
129      sed -i "s/$ONE_FILE_BASE/$ATMEL_FILE/" moto/staging/device-partial.mk
130    fi
131
132    # Sanity check to make sure apk or jar files are not stripped
133    if [[ ${ONE_FILE_BASE} == *.apk ]] || [[ ${ONE_FILE_BASE} == *.jar ]]
134    then
135      zipinfo ${FILEDIR_NEW}/${ONE_FILE_BASE} | grep -q classes.dex > /dev/null
136      if [[ $? != "0" ]]
137      then
138        echo "Error ${ONE_FILE} is stripped"
139      fi
140    fi
141
142  done
143  echo \ \ Setting up $COMPANY-specific makefiles
144  cp -R $COMPANY/staging/* $MAKEFILEDIR || echo \ \ \ \ Error copying makefiles
145  echo \ \ Setting up shared makefiles
146  unzip -j -o $ZIP OTA/android-info.txt -d root > /dev/null || echo \ \ \ \ Error extracting OTA/android-info.txt
147  cp -R root/* ${FILEDIR_ROOT} || echo \ \ \ \ Error copying makefiles
148
149  if [[ ${ROOTDEVICE} == sailfish ]]
150  then
151    FILEDIR_ROOT_SHARE=tmp/vendor/${MANUFACTURER}_devices/marlin
152    mkdir -p ${FILEDIR_ROOT_SHARE}
153
154    # sailfish shares BoardConfigVendor.mk with its bro' marlin
155    mv ${FILEDIR_ROOT}/BoardConfigVendor.mk ${FILEDIR_ROOT_SHARE}
156    # Move device-vendor-sailfish.mk under marlin directory so that it can be
157    # inherited by device/google/marlin/aosp_sailfish.mk
158    mv ${FILEDIR_ROOT}/device-vendor-sailfish.mk ${FILEDIR_ROOT_SHARE}
159  elif [[ ${ROOTDEVICE} == walleye ]]
160  then
161    FILEDIR_ROOT_SHARE=tmp/vendor/${MANUFACTURER}_devices/muskie/proprietary
162    mkdir -p ${FILEDIR_ROOT_SHARE}
163
164    # walleye shares BoardConfigVendor.mk with its sis' muskie
165    mv ${FILEDIR_ROOT}/proprietary/BoardConfigVendor.mk ${FILEDIR_ROOT_SHARE}
166    # Move device-vendor-walleye.mk under muskie directory so that it can be
167    # inherited by device/google/muskie/aosp_walleye.mk
168    mv ${FILEDIR_ROOT}/proprietary/device-vendor-walleye.mk ${FILEDIR_ROOT_SHARE}
169  fi
170
171  echo \ \ Generating self-extracting script
172  SCRIPT=extract-$COMPANY-$DEVICE.sh
173  cat PROLOGUE > tmp/$SCRIPT || echo \ \ \ \ Error generating script
174  cat $COMPANY/COPYRIGHT >> tmp/$SCRIPT || echo \ \ \ \ Error generating script
175  cat PART1 >> tmp/$SCRIPT || echo \ \ \ \ Error generating script
176  cat $COMPANY/LICENSE >> tmp/$SCRIPT || echo \ \ \ \ Error generating script
177  cat PART2 >> tmp/$SCRIPT || echo \ \ \ \ Error generating script
178  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
179  cat PART3 >> tmp/$SCRIPT || echo \ \ \ \ Error generating script
180  (cd tmp ; tar zc --owner=root --group=root vendor/ >> $SCRIPT || echo \ \ \ \ Error generating embedded tgz)
181  chmod a+x tmp/$SCRIPT || echo \ \ \ \ Error generating script
182  ARCHIVE=$COMPANY-$DEVICE-$BUILD-$(sha256sum < tmp/$SCRIPT | cut -b -8 | tr -d \\n).tgz
183  rm -f $ARCHIVE
184  echo \ \ Generating final archive
185  (cd tmp ; tar --owner=root --group=root -z -c -f ../$ARCHIVE $SCRIPT || echo \ \ \ \ Error archiving script)
186  rm -rf tmp
187done
188