native build updates

This commit is contained in:
proddy
2024-08-07 09:16:58 +02:00
parent 7b6fe53e74
commit 46ab42531d
3 changed files with 71 additions and 54 deletions

View File

@@ -19,6 +19,7 @@
; default_envs = esp32_4M
; default_envs = esp32_16M
default_envs = lolin_s3
; default_envs = lolin_c3_mini
; default_envs = native
; default_envs = debug
; default_envs = custom
@@ -26,11 +27,11 @@ default_envs = lolin_s3
[env]
; upload settings
; for USB
upload_protocol = esptool
upload_port = /dev/ttyUSB*
; upload_protocol = esptool
; upload_port = /dev/ttyUSB*
; for OTA add scripts/upload.py to extra_scripts
; upload_protocol = custom
custom_emsesp_ip = 10.10.10.173
upload_protocol = custom
custom_emsesp_ip = 10.10.10.175
; custom_emsesp_ip = ems-esp.local
custom_username = admin
custom_password = admin
@@ -42,59 +43,25 @@ custom_password = admin
[env:native]
extra_scripts =
; pre:scripts/refresh_module_library_native.py
; post:scripts/run_native.py
[env:esp32_4M]
extra_scripts =
; pre:scripts/build_interface.py ; comment out if you don't want to re-build the WebUI each time
scripts/rename_fw.py
; scripts/upload.py
post:scripts/run_native.py
[env:lolin_s3]
extra_scripts =
; pre:scripts/build_interface.py ; comment out if you don't want to re-build the WebUI each time
pre:scripts/build_interface.py ; comment out if you don't want to re-build the WebUI each time
scripts/rename_fw.py
; scripts/upload.py
scripts/upload.py
[env:esp32_16M]
extra_scripts =
; pre:scripts/build_interface.py ; comment out if you don't want to re-build the WebUI each time
pre:scripts/build_interface.py ; comment out if you don't want to re-build the WebUI each time
scripts/rename_fw.py
; scripts/upload.py
[env:custom]
; use for basic ESP boards with 4MB flash
; make sure -D TASMOTA_SDK is also enabled
platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.01.00/platform-espressif32.zip
; use for S3 boards:
; platform = espressif32
framework = arduino
board = esp32dev
board_build.filesystem = littlefs
board_build.f_cpu = 240000000L
board_upload.flash_size = 4MB
board_build.partitions = esp32_partition_4M.csv
board_upload.use_1200bps_touch = false
board_upload.wait_for_upload_port = true
upload_port = /dev/ttyUSB0
[env:lolin_c3_mini]
extra_scripts =
pre:scripts/build_interface.py
; pre:scripts/build_interface.py ; comment out if you don't want to re-build the WebUI each time
scripts/rename_fw.py
build_unflags = ${common.unbuild_flags}
build_flags =
${common.core_build_flags}
${factory_settings.build_flags}
${common.my_build_flags}
-D ONEWIRE_CRC16=0
-D NO_GLOBAL_ARDUINOOTA
-D ARDUINOJSON_ENABLE_STD_STRING=1
-D TASMOTA_SDK
; -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_WARN
-D EMSESP_TEST
-D EMSESP_DEBUG
-D CONFIG_ETH_ENABLED
-D CONFIG_ASYNC_TCP_STACK_SIZE=8192
'-DEMSESP_DEFAULT_BOARD_PROFILE="Test"'
scripts/upload.py
; pio run -e debug
; or from Visual Studio Code do PIO -> Project Tasks -> debug -> General -> Upload and Monitor

View File

@@ -215,6 +215,8 @@ build_unflags = ${common.unbuild_flags}
;
; It will generate an executbale which when run will show the EMS-ESP Console where you can run tests using the `test` command.
;
; See https://docs.platformio.org/en/latest/core/installation/shell-commands.html#piocore-install-shell-commands
;
; to build and run directly on linux: pio run -e native -t exec
;
; to build and run on Windows, it needs winsock for the console input so:
@@ -245,7 +247,6 @@ build_src_flags =
-I./lib/espMqttClient/src/Transport
build_src_filter =
+<*>
-<.git/>
+<../lib_standalone>
+<../lib/uuid-common>
+<../lib/uuid-console>

View File

@@ -1,11 +1,60 @@
import shutil
import re
import os
Import("env")
def run_native():
print("Running native...")
os.system("pio run -e native")
OUTPUT_DIR = "build{}".format(os.path.sep)
if not (env.IsCleanTarget()):
run_native()
def move_file(source, target, env):
# get the build info
bag = {}
exprs = [(re.compile(r'^#define EMSESP_APP_VERSION\s+"(\S+)"'), 'app_version')]
with open('./src/version.h', 'r') as f:
for l in f.readlines():
for expr, var in exprs:
m = expr.match(l)
if m and len(m.groups()) > 0:
bag[var] = m.group(1)
app_version = bag.get('app_version')
platform = "native"
# this breaks the CI so removed
# flash_size = env["PIOENV"].split('_')[1]
# print(env.Dump())
# my_flags = env.ParseFlags(env['BUILD_FLAGS'])
# defines = {k: v for (k, v) in my_flags.get("CPPDEFINES")}
# print(my_flags)
# print(my_flags.get("CPPDEFINES")
# alternatively take platform from the pio target
# platform = str(target[0]).split(os.path.sep)[2]
print("app version: " + app_version)
print("platform: " + platform)
# TODO do I need .exe for windows?
variant = "native"
# check if output directories exist and create if necessary
if not os.path.isdir(OUTPUT_DIR):
os.mkdir(OUTPUT_DIR)
# create string with location and file names based on variant
bin_file = "{}firmware{}{}".format(OUTPUT_DIR, os.path.sep, variant)
# check if new target files exist and remove if necessary
for f in [bin_file]:
if os.path.isfile(f):
os.remove(f)
print("Renaming file to "+bin_file)
shutil.copy(str(target[0]), bin_file)
print("Executing file")
os.system(bin_file)
env.AddPostAction("$BUILD_DIR/${PROGNAME}", [move_file])