xref: /aosp_15_r20/device/common/generate-packages.sh (revision dbb5c4200be91c5fe7bd13df0957f19f0e6a10bf)
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