mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-09-12 01:24:04 +00:00
1M8 does look a bit too much like "1MB". 4M316k does use the same naming schema as the other builds, stating the flash size and SPIFFS size.
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 871 kiB
|
|
MAX_FILESIZE=892912
|
|
fi
|
|
if [[ ${ENV} == *"_1M_OTA"* ]]; then
|
|
# max 602 kiB
|
|
MAX_FILESIZE=616448
|
|
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}
|