-
Notifications
You must be signed in to change notification settings - Fork 639
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PIO: pass APP_REVISION via extra scripts (#1946)
* utils/version: use git description token as version, add memoization * pio: move extra scripts to a separate directory * pio: add -DAPP_REVISION=... as local build flag
- Loading branch information
Showing
15 changed files
with
275 additions
and
191 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,3 +15,5 @@ custom.h | |
.env | ||
.DS_Store | ||
.vscode | ||
_pycache_/ | ||
*.py[cod] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
from .checks import check_cppcheck, check_printsize | ||
from .float_support import remove_float_support | ||
from .ldscripts import ldscripts_inject_libpath | ||
from .lwip import lwip_inject_patcher | ||
from .postmortem import dummy_ets_printf | ||
from .git import app_inject_revision |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import os | ||
|
||
from .display import Color, clr, print_filler, print_warning | ||
|
||
|
||
def check_printsize(target, source, env): | ||
(binary,) = target | ||
path = binary.get_abspath() | ||
size = os.stat(path).st_size | ||
print(clr(Color.LIGHT_BLUE, "Binary size: {} bytes".format(size))) | ||
|
||
# Warn 1MB variants about exceeding OTA size limit | ||
flash_size = int(env.BoardConfig().get("upload.maximum_size", 0)) | ||
if (flash_size == 1048576) and (size >= 512000): | ||
print_filler("*", color=Color.LIGHT_YELLOW, err=True) | ||
print_warning( | ||
"File is too large for OTA! Here you can find instructions on how to flash it:" | ||
) | ||
print_warning( | ||
"https://github.com/xoseperez/espurna/wiki/TwoStepUpdates", | ||
color=Color.LIGHT_CYAN, | ||
) | ||
print_filler("*", color=Color.LIGHT_YELLOW, err=True) | ||
|
||
|
||
def check_cppcheck(target, source, env): | ||
print_warning("Started cppcheck...\n") | ||
call(["cppcheck", os.getcwd() + "/espurna", "--force", "--enable=all"]) | ||
print_warning("Finished cppcheck...\n") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
from __future__ import print_function | ||
|
||
import sys | ||
import click | ||
|
||
|
||
class Color(object): | ||
BLACK = "\x1b[1;30m" | ||
RED = "\x1b[1;31m" | ||
GREEN = "\x1b[1;32m" | ||
YELLOW = "\x1b[1;33m" | ||
BLUE = "\x1b[1;34m" | ||
MAGENTA = "\x1b[1;35m" | ||
CYAN = "\x1b[1;36m" | ||
WHITE = "\x1b[1;37m" | ||
LIGHT_GREY = "\x1b[0;30m" | ||
LIGHT_RED = "\x1b[0;31m" | ||
LIGHT_GREEN = "\x1b[0;32m" | ||
LIGHT_YELLOW = "\x1b[0;33m" | ||
LIGHT_BLUE = "\x1b[0;34m" | ||
LIGHT_MAGENTA = "\x1b[0;35m" | ||
LIGHT_CYAN = "\x1b[0;36m" | ||
LIGHT_WHITE = "\x1b[0;37m" | ||
|
||
|
||
def clr(color, text): | ||
return color + str(text) + "\x1b[0m" | ||
|
||
|
||
def print_warning(message, color=Color.LIGHT_YELLOW): | ||
print(clr(color, message), file=sys.stderr) | ||
|
||
|
||
def print_filler(fill, color=Color.WHITE, err=False): | ||
width, _ = click.get_terminal_size() | ||
if len(fill) > 1: | ||
fill = fill[0] | ||
|
||
out = sys.stderr if err else sys.stdout | ||
print(clr(color, fill * width), file=out) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
def remove_float_support(env): | ||
|
||
flags = " ".join(env["LINKFLAGS"]) | ||
flags = flags.replace("-u _printf_float", "") | ||
flags = flags.replace("-u _scanf_float", "") | ||
newflags = flags.split() | ||
|
||
env.Replace(LINKFLAGS=newflags) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
import os | ||
import subprocess | ||
|
||
def git(*args): | ||
cmd = ["git"] | ||
cmd.extend(args) | ||
proc = subprocess.Popen( | ||
cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE, universal_newlines=True | ||
) | ||
return proc.stdout.readlines()[0].strip() | ||
|
||
def app_inject_revision(env): | ||
revision = "" | ||
try: | ||
revision = "\\\"{}\\\"".format(git("rev-parse", "--short=8", "HEAD")) | ||
except: # pylint: disable=broad-except | ||
pass | ||
|
||
# Note: code expects this as undefined when empty | ||
if revision: | ||
env.Append(CPPDEFINES=[ | ||
("APP_REVISION", revision) | ||
]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
import os | ||
|
||
|
||
def ldscripts_inject_libpath(env): | ||
|
||
platform = env.PioPlatform() | ||
framework_dir = platform.get_package_dir("framework-arduinoespressif8266") | ||
|
||
# [email protected] did not append this directory into the LIBPATH | ||
libpath_sdk = os.path.join(framework_dir, "tools", "sdk", "ld") | ||
env.Append(LIBPATH=[libpath_sdk]) | ||
|
||
libpath_base = os.path.join("$PROJECT_DIR", "..", "dist", "ld") | ||
env.Append(LIBPATH=[os.path.join(libpath_base, "pre_2.5.0")]) | ||
|
||
# local.eagle.app.v6.common.ld exists only with Core >2.5.0 | ||
def check_local_ld(target, source, env): | ||
local_ld = env.subst( | ||
os.path.join("$BUILD_DIR", "ld", "local.eagle.app.v6.common.ld") | ||
) | ||
if os.path.exists(local_ld): | ||
env.Prepend(LIBPATH=[os.path.join(libpath_base, "latest")]) | ||
|
||
env.AddPreAction(os.path.join("$BUILD_DIR", "firmware.elf"), check_local_ld) |
Oops, something went wrong.