mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-07-27 19:57:38 +00:00
Fixes: #2707 The computations did not take into account the needed extra space for 4k block alignment for OTA.
142 lines
3.4 KiB
Bash
Executable File
142 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
VERSION=$(git describe)
|
|
TMP_DIST=`mktemp -d`
|
|
CURPATH=`pwd`
|
|
BUILD_LOG=`echo "${TMP_DIST}/buildlog.txt"`
|
|
|
|
# PIO 3.x :
|
|
# BINARY_PATH=".pioenvs"
|
|
|
|
# PIO 4.0 and newer:
|
|
BINARY_PATH=".pio/build"
|
|
|
|
while getopts d: option
|
|
do
|
|
case "${option}"
|
|
in
|
|
d) VERSION=${OPTARG};;
|
|
esac
|
|
done
|
|
|
|
|
|
if [ ! -d ${TMP_DIST} ]; then
|
|
# Could not create temp dir, so exit
|
|
exit 1
|
|
fi
|
|
|
|
#Naming convention:
|
|
# ESP_Easy_[github version]_[plugin set]_[chip type]_[flash memory].bin
|
|
|
|
mkdir -p ${TMP_DIST}
|
|
cp -r dist/* ${TMP_DIST}/
|
|
|
|
if [ -d "docs/build" ]; then
|
|
# Docs have been created
|
|
mkdir -p ${TMP_DIST}/docs
|
|
cp -r docs/build/* ${TMP_DIST}/docs/
|
|
fi
|
|
|
|
mkdir -p ${TMP_DIST}/memstats
|
|
|
|
for ENV in \
|
|
custom_ESP8266_4M1M\
|
|
esp-wrover-kit_test_4M316k\
|
|
esp32test_4M316k\
|
|
normal_ESP8266_1M\
|
|
normal_ESP8266_1M_VCC\
|
|
normal_ESP8285_1M\
|
|
normal_core_241_ESP8266_1M\
|
|
normal_WROOM02_2M\
|
|
normal_core_252_WROOM02_2M256\
|
|
normal_ESP8266_4M1M\
|
|
normal_core_241_ESP8266_4M1M\
|
|
normal_core_252_ESP8266_16M\
|
|
normal_core_260_sdk222_alpha_ESP8266_4M1M\
|
|
normal_core_260_sdk222_alpha_ESP8266_16M\
|
|
minimal_core_242_ESP8266_1M_OTA\
|
|
minimal_core_242_ESP8285_1M_OTA\
|
|
minimal_core_252_ESP8266_1M_OTA\
|
|
minimal_core_252_ESP8285_1M_OTA\
|
|
minimal_IRext_ESP8266_1M\
|
|
minimal_IRext_ESP8266_4M1M\
|
|
minimal_IRext_ESP8266_4M2M\
|
|
normal_IRext_no_rx_ESP8266_4M2M\
|
|
test_core_260_sdk222_alpha_ESP8266_4M1M\
|
|
test_core_260_sdk3_alpha_ESP8266_4M1M\
|
|
test_core_260_sdk222_alpha_ESP8266_16M\
|
|
test_ESP8266_4M_VCC\
|
|
dev_ESP8266_4M1M\
|
|
hard_SONOFF_POW_4M1M\
|
|
hard_other_POW_ESP8285_1M\
|
|
hard_Shelly_1_2M256\
|
|
hard_Ventus_W266;\
|
|
do
|
|
MAX_FILESIZE=1044464
|
|
if [[ ${ENV} == *"_1M"* ]]; then
|
|
# max 872 kiB - 16 bytes
|
|
MAX_FILESIZE=892912
|
|
fi
|
|
if [[ ${ENV} == *"_1M_OTA"* ]]; then
|
|
# max 600 kiB - 16 bytes
|
|
MAX_FILESIZE=614384
|
|
fi
|
|
if [[ ${ENV} == *"esp32"* ]]; then
|
|
MAX_FILESIZE=1310720
|
|
fi
|
|
if [[ ${ENV} == *"4M316k"* ]]; then
|
|
# ESP32 with 1800k of sketch space.
|
|
MAX_FILESIZE=1900544
|
|
fi
|
|
|
|
FIRMWARE_BIN=`echo "${BINARY_PATH}/${ENV}/firmware.bin"`
|
|
|
|
if [ -f $FIRMWARE_BIN ]; then
|
|
FILESIZE=$(stat -c%s `echo "${FIRMWARE_BIN}"` )
|
|
if (( FILESIZE < MAX_FILESIZE )); then
|
|
echo
|
|
echo "SUCCESS: $FILESIZE < $MAX_FILESIZE Bytes. (${ENV})" >> ${BUILD_LOG}
|
|
BIN=${BINARY_PATH}/${ENV}/ESP_Easy_${VERSION}_${ENV}.bin
|
|
cp ${FIRMWARE_BIN} $BIN
|
|
python2 crc2.py $BIN
|
|
mv $BIN "${TMP_DIST}/bin/ESP_Easy_${VERSION}_${ENV}.bin"
|
|
else
|
|
echo "FAILED: too large $FILESIZE > $MAX_FILESIZE Bytes. (${ENV})" >> ${BUILD_LOG}
|
|
fi
|
|
else
|
|
echo "FAILED: No file created. (${ENV})" >> ${BUILD_LOG}
|
|
fi
|
|
|
|
ELFFILE=`echo "${BINARY_PATH}/${ENV}/firmware.elf"`
|
|
if [ -f $ELFFILE ]; then
|
|
SYMBOLS_STATS=`echo "${TMP_DIST}/memstats/symbols_${ENV}.txt"`
|
|
STRINGS_STATS=`echo "${TMP_DIST}/memstats/strings_${ENV}.txt"`
|
|
readelf -a ${ELFFILE} |grep 3ff |sort -n -k 3 > ${SYMBOLS_STATS}
|
|
objdump -s -j .rodata ${ELFFILE} > ${STRINGS_STATS}
|
|
fi
|
|
done
|
|
|
|
|
|
#create a source structure that is the same as the original ESPEasy project (and works with the howto on the wiki)
|
|
#rm -rf dist/Source 2>/dev/null
|
|
|
|
mkdir -p ${TMP_DIST}/source
|
|
cp -r lib ${TMP_DIST}/source/
|
|
cp -r src ${TMP_DIST}/source/
|
|
cp platformio.ini ${TMP_DIST}/source/
|
|
|
|
cd ${TMP_DIST}
|
|
|
|
echo
|
|
echo "### Creating zip archive"
|
|
zip -qq ${CURPATH}/ESPEasy_$VERSION.zip -r .
|
|
|
|
|
|
|
|
# Display the build log.
|
|
cat ${BUILD_LOG}
|
|
|
|
|
|
rm -Rf ${TMP_DIST}/* 2>/dev/null
|
|
rmdir ${TMP_DIST}
|