| # Copyright 2011 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Use the default values if they weren't explicitly set |
| if test "$XLOADERSRC" = "" |
| then |
| XLOADERSRC=xloader.img |
| fi |
| if test "$BOOTLOADERSRC" = "" |
| then |
| BOOTLOADERSRC=bootloader.img |
| fi |
| if test "$RADIOSRC" = "" |
| then |
| RADIOSRC=radio.img |
| fi |
| if test "$GSCFIRMWARESRC" = "" |
| then |
| GSCFIRMWARESRC=dauntless |
| fi |
| if test "$SLEEPDURATION" = "" |
| then |
| SLEEPDURATION=5 |
| fi |
| |
| # Prepare the staging directory |
| rm -rf tmp |
| mkdir -p tmp/$PRODUCT-$VERSION |
| |
| # Extract the bootloader(s) and radio(s) as necessary |
| if test "$XLOADER" != "" |
| then |
| unzip -d tmp ${SRCPREFIX}$PRODUCT-target_files-$BUILD.zip RADIO/$XLOADERSRC |
| fi |
| if test "$BOOTLOADERFILE" = "" |
| then |
| unzip -d tmp ${SRCPREFIX}$PRODUCT-target_files-$BUILD.zip RADIO/$BOOTLOADERSRC |
| fi |
| if test "$RADIO" != "" -a "$RADIOFILE" = "" |
| then |
| unzip -d tmp ${SRCPREFIX}$PRODUCT-target_files-$BUILD.zip RADIO/$RADIOSRC |
| fi |
| if test "$CDMARADIO" != "" -a "$CDMARADIOFILE" = "" |
| then |
| unzip -d tmp ${SRCPREFIX}$PRODUCT-target_files-$BUILD.zip RADIO/radio-cdma.img |
| fi |
| |
| # Extract the GSC firmware |
| unzip -d tmp ${SRCPREFIX}$PRODUCT-target_files-$BUILD.zip VENDOR/firmware/$GSCFIRMWARESRC/* |
| |
| # Copy the various images in their staging location |
| cp ${SRCPREFIX}$PRODUCT-img-$BUILD.zip tmp/$PRODUCT-$VERSION/image-$PRODUCT-$VERSION.zip |
| if test "$XLOADER" != "" |
| then |
| cp tmp/RADIO/$XLOADERSRC tmp/$PRODUCT-$VERSION/xloader-$DEVICE-$XLOADER.img |
| fi |
| if test "$BOOTLOADERFILE" = "" |
| then |
| cp tmp/RADIO/$BOOTLOADERSRC tmp/$PRODUCT-$VERSION/bootloader-$DEVICE-$BOOTLOADER.img |
| else |
| cp $BOOTLOADERFILE tmp/$PRODUCT-$VERSION/bootloader-$DEVICE-$BOOTLOADER.img |
| fi |
| if test "$RADIO" != "" |
| then |
| if test "$RADIOFILE" = "" |
| then |
| cp tmp/RADIO/$RADIOSRC tmp/$PRODUCT-$VERSION/radio-$DEVICE-$RADIO.img |
| else |
| cp $RADIOFILE tmp/$PRODUCT-$VERSION/radio-$DEVICE-$RADIO.img |
| fi |
| fi |
| if test "$CDMARADIO" != "" |
| then |
| if test "$CDMARADIOFILE" = "" |
| then |
| cp tmp/RADIO/radio-cdma.img tmp/$PRODUCT-$VERSION/radio-cdma-$DEVICE-$CDMARADIO.img |
| else |
| cp $CDMARADIOFILE tmp/$PRODUCT-$VERSION/radio-cdma-$DEVICE-$CDMARADIO.img |
| fi |
| fi |
| cp -r tmp/VENDOR/firmware/$GSCFIRMWARESRC/* tmp/$PRODUCT-$VERSION |
| |
| # Write flash-all.sh |
| cat > tmp/$PRODUCT-$VERSION/flash-all.sh << EOF |
| #!/bin/sh |
| |
| # Copyright 2012 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| if ! [ \$(\$(which fastboot) --version | grep "version" | cut -c18-23 | sed 's/\.//g' ) -ge 3301 ]; then |
| echo "fastboot too old; please download the latest version at https://developer.android.com/studio/releases/platform-tools.html" |
| exit 1 |
| fi |
| EOF |
| if test "$UNLOCKBOOTLOADER" = "true" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.sh << EOF |
| fastboot oem unlock |
| EOF |
| fi |
| if test "$ERASEALL" = "true" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.sh << EOF |
| fastboot erase boot |
| fastboot erase cache |
| fastboot erase recovery |
| fastboot erase system |
| fastboot erase userdata |
| EOF |
| fi |
| if test "$XLOADER" != "" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.sh << EOF |
| fastboot flash xloader xloader-$DEVICE-$XLOADER.img |
| EOF |
| fi |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.sh << EOF |
| fastboot flash bootloader bootloader-$DEVICE-$BOOTLOADER.img |
| EOF |
| if test "$TWINBOOTLOADERS" = "true" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.sh << EOF |
| fastboot flash bootloader2 bootloader-$DEVICE-$BOOTLOADER.img |
| EOF |
| fi |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.sh << EOF |
| fastboot reboot-bootloader |
| sleep $SLEEPDURATION |
| EOF |
| if test "$RADIO" != "" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.sh << EOF |
| fastboot flash radio radio-$DEVICE-$RADIO.img |
| fastboot reboot-bootloader |
| sleep $SLEEPDURATION |
| EOF |
| fi |
| if test "$CDMARADIO" != "" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.sh << EOF |
| fastboot flash radio-cdma radio-cdma-$DEVICE-$CDMARADIO.img |
| fastboot reboot-bootloader |
| sleep $SLEEPDURATION |
| EOF |
| fi |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.sh << EOF |
| fastboot -w update image-$PRODUCT-$VERSION.zip |
| EOF |
| chmod a+x tmp/$PRODUCT-$VERSION/flash-all.sh |
| |
| # Write flash-all.bat |
| cat > tmp/$PRODUCT-$VERSION/flash-all.bat << EOF |
| @ECHO OFF |
| :: Copyright 2012 The Android Open Source Project |
| :: |
| :: Licensed under the Apache License, Version 2.0 (the "License"); |
| :: you may not use this file except in compliance with the License. |
| :: You may obtain a copy of the License at |
| :: |
| :: http://www.apache.org/licenses/LICENSE-2.0 |
| :: |
| :: Unless required by applicable law or agreed to in writing, software |
| :: distributed under the License is distributed on an "AS IS" BASIS, |
| :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| :: See the License for the specific language governing permissions and |
| :: limitations under the License. |
| |
| PATH=%PATH%;"%SYSTEMROOT%\System32" |
| EOF |
| if test "$UNLOCKBOOTLOADER" = "true" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.bat << EOF |
| fastboot oem unlock |
| EOF |
| fi |
| if test "$ERASEALL" = "true" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.bat << EOF |
| fastboot erase boot |
| fastboot erase cache |
| fastboot erase recovery |
| fastboot erase system |
| fastboot erase userdata |
| EOF |
| fi |
| if test "$XLOADER" != "" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.bat << EOF |
| fastboot flash xloader xloader-$DEVICE-$XLOADER.img |
| EOF |
| fi |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.bat << EOF |
| fastboot flash bootloader bootloader-$DEVICE-$BOOTLOADER.img |
| EOF |
| if test "$TWINBOOTLOADERS" = "true" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.bat << EOF |
| fastboot flash bootloader2 bootloader-$DEVICE-$BOOTLOADER.img |
| EOF |
| fi |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.bat << EOF |
| fastboot reboot-bootloader |
| ping -n $SLEEPDURATION 127.0.0.1 >nul |
| EOF |
| if test "$RADIO" != "" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.bat << EOF |
| fastboot flash radio radio-$DEVICE-$RADIO.img |
| fastboot reboot-bootloader |
| ping -n $SLEEPDURATION 127.0.0.1 >nul |
| EOF |
| fi |
| if test "$CDMARADIO" != "" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.bat << EOF |
| fastboot flash radio-cdma radio-cdma-$DEVICE-$CDMARADIO.img |
| fastboot reboot-bootloader |
| ping -n $SLEEPDURATION 127.0.0.1 >nul |
| EOF |
| fi |
| cat >> tmp/$PRODUCT-$VERSION/flash-all.bat << EOF |
| fastboot -w update image-$PRODUCT-$VERSION.zip |
| |
| echo Press any key to exit... |
| pause >nul |
| exit |
| EOF |
| |
| # Write flash-base.sh |
| cat > tmp/$PRODUCT-$VERSION/flash-base.sh << EOF |
| #!/bin/sh |
| |
| # Copyright 2012 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| if ! [ \$(\$(which fastboot) --version | grep "version" | cut -c18-23 | sed 's/\.//g' ) -ge 3301 ]; then |
| echo "fastboot too old; please download the latest version at https://developer.android.com/studio/releases/platform-tools.html" |
| exit 1 |
| fi |
| EOF |
| if test "$XLOADER" != "" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-base.sh << EOF |
| fastboot flash xloader xloader-$DEVICE-$XLOADER.img |
| EOF |
| fi |
| cat >> tmp/$PRODUCT-$VERSION/flash-base.sh << EOF |
| fastboot flash bootloader bootloader-$DEVICE-$BOOTLOADER.img |
| EOF |
| if test "$TWINBOOTLOADERS" = "true" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-base.sh << EOF |
| fastboot flash bootloader2 bootloader-$DEVICE-$BOOTLOADER.img |
| EOF |
| fi |
| cat >> tmp/$PRODUCT-$VERSION/flash-base.sh << EOF |
| fastboot reboot-bootloader |
| sleep $SLEEPDURATION |
| EOF |
| if test "$RADIO" != "" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-base.sh << EOF |
| fastboot flash radio radio-$DEVICE-$RADIO.img |
| fastboot reboot-bootloader |
| sleep $SLEEPDURATION |
| EOF |
| fi |
| if test "$CDMARADIO" != "" |
| then |
| cat >> tmp/$PRODUCT-$VERSION/flash-base.sh << EOF |
| fastboot flash radio-cdma radio-cdma-$DEVICE-$CDMARADIO.img |
| fastboot reboot-bootloader |
| sleep $SLEEPDURATION |
| EOF |
| fi |
| chmod a+x tmp/$PRODUCT-$VERSION/flash-base.sh |
| |
| # Create the distributable package |
| (cd tmp ; zip -r ../$PRODUCT-$VERSION-factory.zip $PRODUCT-$VERSION) |
| mv $PRODUCT-$VERSION-factory.zip $PRODUCT-$VERSION-factory-$(sha256sum < $PRODUCT-$VERSION-factory.zip | cut -b -8).zip |
| |
| # Clean up |
| rm -rf tmp |