From d0222e5c76276d4bb1c46a4731ec63938f545eb0 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 22:57:00 -0500 Subject: [PATCH] Randomize firmware.bin, fix unflag --- .../PlatformIO/scripts/common-dependencies.py | 30 +++++++++---------- .../share/PlatformIO/scripts/creality.py | 11 +++---- .../share/PlatformIO/scripts/random-bin.py | 5 ++++ platformio.ini | 3 +- 4 files changed, 28 insertions(+), 21 deletions(-) create mode 100644 buildroot/share/PlatformIO/scripts/random-bin.py diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.py b/buildroot/share/PlatformIO/scripts/common-dependencies.py index 8287c0b202..37efaa3743 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.py +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.py @@ -47,22 +47,25 @@ def get_all_known_libs(): def get_all_env_libs(): env_libs = [] - lib_deps = env.GetProjectOption("lib_deps") + lib_deps = env.GetProjectOption('lib_deps') for dep in lib_deps: name, _, _ = PackageManager.parse_pkg_uri(dep) env_libs.append(name) return env_libs +def set_env_field(field, value): + proj = env.GetProjectConfig() + proj.set("env:" + env['PIOENV'], field, value) + # All unused libs should be ignored so that if a library # exists in .pio/lib_deps it will not break compilation. def force_ignore_unused_libs(): env_libs = get_all_env_libs() known_libs = get_all_known_libs() diff = (list(set(known_libs) - set(env_libs))) - lib_ignore = env.GetProjectOption("lib_ignore") + diff + lib_ignore = env.GetProjectOption('lib_ignore') + diff print("Ignoring libs:", lib_ignore) - proj = env.GetProjectConfig() - proj.set("env:" + env["PIOENV"], "lib_ignore", lib_ignore) + set_env_field('lib_ignore', lib_ignore) def install_features_dependencies(): load_config() @@ -80,14 +83,14 @@ def install_features_dependencies(): deps_to_add[name] = dep # Does the env already have the dependency? - deps = env.GetProjectOption("lib_deps") + deps = env.GetProjectOption('lib_deps') for dep in deps: name, _, _ = PackageManager.parse_pkg_uri(dep) if name in deps_to_add: del deps_to_add[name] # Are there any libraries that should be ignored? - lib_ignore = env.GetProjectOption("lib_ignore") + lib_ignore = env.GetProjectOption('lib_ignore') for dep in deps: name, _, _ = PackageManager.parse_pkg_uri(dep) if name in deps_to_add: @@ -96,8 +99,7 @@ def install_features_dependencies(): # Is there anything left? if len(deps_to_add) > 0: # Only add the missing dependencies - proj = env.GetProjectConfig() - proj.set("env:" + env["PIOENV"], "lib_deps", deps + list(deps_to_add.values())) + set_env_field('lib_deps', deps + list(deps_to_add.values())) if 'extra_scripts' in FEATURE_DEPENDENCIES[feature]: print("Executing extra_scripts for %s... " % feature) @@ -105,8 +107,7 @@ def install_features_dependencies(): if 'src_filter' in FEATURE_DEPENDENCIES[feature]: print("Adding src_filter for %s... " % feature) - proj = env.GetProjectConfig() - src_filter = ' '.join(env.GetProjectOption("src_filter")) + src_filter = ' '.join(env.GetProjectOption('src_filter')) # first we need to remove the references to the same folder my_srcs = re.findall( r'[+-](<.*?>)', FEATURE_DEPENDENCIES[feature]['src_filter']) cur_srcs = re.findall( r'[+-](<.*?>)', src_filter) @@ -115,19 +116,18 @@ def install_features_dependencies(): src_filter = re.sub(r'[+-]' + d, '', src_filter) src_filter = FEATURE_DEPENDENCIES[feature]['src_filter'] + ' ' + src_filter - proj.set("env:" + env["PIOENV"], "src_filter", [src_filter]) + set_env_field('src_filter', [src_filter]) env.Replace(SRC_FILTER=src_filter) if 'lib_ignore' in FEATURE_DEPENDENCIES[feature]: print("Ignoring libs for %s... " % feature) - lib_ignore = env.GetProjectOption("lib_ignore") + [FEATURE_DEPENDENCIES[feature]['lib_ignore']] - proj = env.GetProjectConfig() - proj.set("env:" + env["PIOENV"], "lib_ignore", lib_ignore) + lib_ignore = env.GetProjectOption('lib_ignore') + [FEATURE_DEPENDENCIES[feature]['lib_ignore']] + set_env_field('lib_ignore', lib_ignore) # # Find a compiler, considering the OS # -ENV_BUILD_PATH = os.path.join(env.Dictionary("PROJECT_BUILD_DIR"), env["PIOENV"]) +ENV_BUILD_PATH = os.path.join(env.Dictionary('PROJECT_BUILD_DIR'), env['PIOENV']) GCC_PATH_CACHE = os.path.join(ENV_BUILD_PATH, ".gcc_path") def search_compiler(): if os.path.exists(GCC_PATH_CACHE): diff --git a/buildroot/share/PlatformIO/scripts/creality.py b/buildroot/share/PlatformIO/scripts/creality.py index d7b7823356..b9d7d7039b 100644 --- a/buildroot/share/PlatformIO/scripts/creality.py +++ b/buildroot/share/PlatformIO/scripts/creality.py @@ -5,12 +5,13 @@ Import("env") for define in env['CPPDEFINES']: if define[0] == "VECT_TAB_ADDR": env['CPPDEFINES'].remove(define) + env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000")) custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/creality.ld") -for i, flag in enumerate(env["LINKFLAGS"]): - if "-Wl,-T" in flag: - env["LINKFLAGS"][i] = "-Wl,-T" + custom_ld_script - elif flag == "-T": - env["LINKFLAGS"][i + 1] = custom_ld_script +for i, flag in enumerate(env['LINKFLAGS']): + if "-Wl,-T" in flag: + env['LINKFLAGS'][i] = "-Wl,-T" + custom_ld_script + elif flag == "-T": + env['LINKFLAGS'][i + 1] = custom_ld_script diff --git a/buildroot/share/PlatformIO/scripts/random-bin.py b/buildroot/share/PlatformIO/scripts/random-bin.py new file mode 100644 index 0000000000..4d7ca5dc09 --- /dev/null +++ b/buildroot/share/PlatformIO/scripts/random-bin.py @@ -0,0 +1,5 @@ +Import("env") + +from datetime import datetime + +env['PROGNAME'] = datetime.now().strftime("firmware-%Y%m%d-%H%M%S") diff --git a/platformio.ini b/platformio.ini index 838ce11611..429091fbf0 100644 --- a/platformio.ini +++ b/platformio.ini @@ -380,7 +380,7 @@ src_filter = ${common.default_src_filter} + platform = ${common_stm32.platform} build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 -DHAVE_SW_SERIAL -build_unflags = -std=gnu++11 +build_unflags = -std=gnu11 src_filter = ${common.default_src_filter} + lib_ignore = SPI lib_deps = ${common.lib_deps} @@ -744,6 +744,7 @@ board = genericSTM32F103RC build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py ${common.build_flags} -std=gnu++14 -DSTM32_XL_DENSITY -DTEMP_TIMER_CHAN=4 extra_scripts = ${common.extra_scripts} + pre:buildroot/share/PlatformIO/scripts/random-bin.py buildroot/share/PlatformIO/scripts/creality.py lib_ignore = ${common_stm32f1.lib_ignore} debug_tool = jlink