From fc04b190a47b2777875577cacec44a4cbc7df3a0 Mon Sep 17 00:00:00 2001 From: Siwat Sirichai Date: Tue, 5 Dec 2023 19:46:48 +0700 Subject: [PATCH 1/3] Update gen_release.py --- gen_release.py | 57 +++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/gen_release.py b/gen_release.py index ed453a7..a759918 100644 --- a/gen_release.py +++ b/gen_release.py @@ -9,6 +9,7 @@ import shutil import subprocess import sys import platform +import re # Get the current directory @@ -30,37 +31,41 @@ os.makedirs(release_folder) # Get the current Git branch name git_branch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).decode().strip() +commit_hash = subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode().strip()[:10] -# Build the PlatformIO project +# If arguments are supplied, build the environments that match the arguments if len(sys.argv) > 1: - # If arguments are supplied, build the environments that match the arguments environments = sys.argv[1:] - for environment in environments: - subprocess.run([f'{platformio_path}/platformio.exe', 'run', '-e', environment], cwd=current_dir) - - # Iterate over the subfolders in the firmware folder - for subfolder in os.listdir(firmware_folder): - subfolder_path = os.path.join(firmware_folder, subfolder) - - # Check if the subfolder matches the environment argument - if subfolder == environment: - # Check if the subfolder contains a firmware.bin file - firmware_file = os.path.join(subfolder_path, 'firmware.bin') - if os.path.isfile(firmware_file): - # Move the firmware.bin file to the release folder with the Git branch name appended - new_file_name = os.path.join(release_folder, f"{subfolder}_{git_branch}.bin") - shutil.move(firmware_file, new_file_name) -else: - # If no argument is supplied, build all environments - subprocess.run([f'{platformio_path}/platformio.exe', 'run'], cwd=current_dir) +# If no argument are supplied, build all environments listed in platformio.ini +else: + environments = [] + with open(os.path.join(current_dir, 'platformio.ini')) as f: + + # Iterate over the lines in platformio.ini + for line in f.readlines(): + + # Check if the line contains the string "env:" + if '[env:' in line: + + # Extract the environment using regular expressions + environment = re.search(r'\[env:(.*?)\]', line).group(1) + + # Add the environment to the list of environments + environments.append(environment) + +for environment in environments: + subprocess.run([f'{platformio_path}/platformio.exe', 'run', '-e', environment,f'-DFW_VERSION={git_branch}_{environment}_{commit_hash}'], cwd=current_dir) + # Iterate over the subfolders in the firmware folder for subfolder in os.listdir(firmware_folder): subfolder_path = os.path.join(firmware_folder, subfolder) - # Check if the subfolder contains a firmware.bin file - firmware_file = os.path.join(subfolder_path, 'firmware.bin') - if os.path.isfile(firmware_file): - # Move the firmware.bin file to the release folder with the Git branch name appended - new_file_name = os.path.join(release_folder, f"{subfolder}_{git_branch}.bin") - shutil.move(firmware_file, new_file_name) + # Check if the subfolder matches the environment argument + if subfolder == environment: + # Check if the subfolder contains a firmware.bin file + firmware_file = os.path.join(subfolder_path, 'firmware.bin') + if os.path.isfile(firmware_file): + # Move the firmware.bin file to the release folder with the Git branch name and commit hash appended + new_file_name = os.path.join(release_folder, f"{git_branch}_{subfolder}_{commit_hash}.bin") + shutil.move(firmware_file, new_file_name) \ No newline at end of file From c8ff21f522eb9260b8280b7bc060ca782c21d4dc Mon Sep 17 00:00:00 2001 From: Siwat Sirichai Date: Thu, 7 Dec 2023 14:59:24 +0700 Subject: [PATCH 2/3] finalize builder --- gen_release.py | 31 ++++++++++++++++++++++++++++++- src/espmega_iot_core.cpp | 5 +++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/gen_release.py b/gen_release.py index a759918..34587da 100644 --- a/gen_release.py +++ b/gen_release.py @@ -10,6 +10,8 @@ import subprocess import sys import platform import re +import configparser +from time import sleep as delay # Get the current directory @@ -54,8 +56,35 @@ else: # Add the environment to the list of environments environments.append(environment) +# Remove old platformio.ini file from firmware folder if it exists +if os.path.isfile(os.path.join(firmware_folder, 'platformio.ini')): + os.remove(os.path.join(firmware_folder, 'platformio.ini')) + +# Copy the platformio.ini file to the firmware folder +shutil.copyfile(os.path.join(current_dir, 'platformio.ini'), os.path.join(firmware_folder, 'platformio.ini')) + +# Check that the file is copied correctly +if not os.path.isfile(os.path.join(firmware_folder, 'platformio.ini')): + raise Exception('platformio.ini file not copied correctly') + +# Read the platformio.ini file +config = configparser.ConfigParser() +config.read(os.path.join(firmware_folder, 'platformio.ini')) + +# Add firmware version to build_flags in platformio.ini for environment in environments: - subprocess.run([f'{platformio_path}/platformio.exe', 'run', '-e', environment,f'-DFW_VERSION={git_branch}_{environment}_{commit_hash}'], cwd=current_dir) + if 'build_flags' not in config[f'env:{environment}']: + config[f'env:{environment}']['build_flags'] = f'-DFW_VERSION=\\"{git_branch}_{environment}_{commit_hash}\\"' + else: + config[f'env:{environment}']['build_flags'] = config[f'env:{environment}']['build_flags'] + f' -DFW_VERSION=\\"{git_branch}_{environment}_{commit_hash}\\"' + +# if argument is not supplied, build all environments listed in platformio.ini +if len(sys.argv) == 1: + subprocess.run([f'{platformio_path}/platformio.exe', 'run','-c',f'{firmware_folder}/platformio.ini'], cwd=current_dir) + +for environment in environments: + if(len(sys.argv) > 1): + subprocess.run([f'{platformio_path}/platformio.exe', 'run', '-e', environment,'-c',f'{firmware_folder}/platformio.ini'], cwd=current_dir) # Iterate over the subfolders in the firmware folder for subfolder in os.listdir(firmware_folder): diff --git a/src/espmega_iot_core.cpp b/src/espmega_iot_core.cpp index a20b559..845de70 100644 --- a/src/espmega_iot_core.cpp +++ b/src/espmega_iot_core.cpp @@ -395,6 +395,11 @@ void ota_begin() otabuffer+=ota_part2_1+"IP Address"+ota_part2_2+IP.toString()+ota_part2_3; otabuffer+=ota_part2_1+"MAC Address"+ota_part2_2+ETH.macAddress()+ota_part2_3; otabuffer+=ota_part2_1+"Device"+ota_part2_2+ESPMEGA_REV+ota_part2_3; + #ifdef FW_VERSION + otabuffer+=ota_part2_1+"Firmware"+ota_part2_2+FW_VERSION+ota_part2_3; + #else + otabuffer+=ota_part2_1+"Firmware"+ota_part2_2+"Out of Tree"+ota_part2_3; + #endif otabuffer+=ota_part2_1+"BMS Server"+ota_part2_2+MQTT_SERVER.toString()+ota_part2_3; otabuffer+=ota_part2_1+"BMS Endpoint"+ota_part2_2+String(MQTT_BASE_TOPIC)+ota_part2_3; otabuffer+=ota_part2_1+"Centrally Managed"+ota_part2_2; From ed85d0714878fdea0c68d9e349e76e124b3440cd Mon Sep 17 00:00:00 2001 From: Siwat Sirichai Date: Thu, 7 Dec 2023 14:59:39 +0700 Subject: [PATCH 3/3] Update gen_release.py --- gen_release.py | 1 - 1 file changed, 1 deletion(-) diff --git a/gen_release.py b/gen_release.py index 34587da..5e91300 100644 --- a/gen_release.py +++ b/gen_release.py @@ -2,7 +2,6 @@ import os import shutil import subprocess import sys -import platform import subprocess import os import shutil