mirror of
https://github.com/Threnklyn/esphome-dev.git
synced 2026-05-29 17:28:28 +02:00
Fix rp2040 pio tool download (#4994)
This commit is contained in:
@@ -16,8 +16,7 @@ from esphome.const import (
|
||||
KEY_TARGET_PLATFORM,
|
||||
)
|
||||
from esphome.core import CORE, coroutine_with_priority, EsphomeError
|
||||
from esphome.helpers import mkdir_p, write_file
|
||||
import esphome.platformio_api as api
|
||||
from esphome.helpers import mkdir_p, write_file, copy_file_if_changed
|
||||
|
||||
from .const import KEY_BOARD, KEY_PIO_FILES, KEY_RP2040, rp2040_ns
|
||||
|
||||
@@ -193,25 +192,20 @@ def generate_pio_files() -> bool:
|
||||
pio_path = CORE.relative_build_path(f"src/pio/{key}.pio")
|
||||
mkdir_p(os.path.dirname(pio_path))
|
||||
write_file(pio_path, data)
|
||||
_LOGGER.info("Assembling PIO assembly code")
|
||||
retval = api.run_platformio_cli(
|
||||
"pkg",
|
||||
"exec",
|
||||
"--package",
|
||||
"earlephilhower/tool-pioasm-rp2040-earlephilhower",
|
||||
"--",
|
||||
"pioasm",
|
||||
pio_path,
|
||||
pio_path + ".h",
|
||||
)
|
||||
includes.append(f"pio/{key}.pio.h")
|
||||
if retval != 0:
|
||||
raise EsphomeError("PIO assembly failed")
|
||||
|
||||
write_file(
|
||||
CORE.relative_build_path("src/pio_includes.h"),
|
||||
"#pragma once\n" + "\n".join([f'#include "{include}"' for include in includes]),
|
||||
)
|
||||
|
||||
dir = os.path.dirname(__file__)
|
||||
build_pio_file = os.path.join(dir, "build_pio.py.script")
|
||||
copy_file_if_changed(
|
||||
build_pio_file,
|
||||
CORE.relative_build_path("build_pio.py"),
|
||||
)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
"""
|
||||
Custom pioasm compiler script for platformio.
|
||||
(c) 2022 by P.Z.
|
||||
|
||||
Sourced 2023/06/23 from https://gist.github.com/hexeguitar/f4533bc697c956ac1245b6843e2ef438
|
||||
|
||||
Modified by jesserockz 2023/06/23
|
||||
"""
|
||||
|
||||
from os.path import join
|
||||
import glob
|
||||
import sys
|
||||
|
||||
import subprocess
|
||||
|
||||
# pylint: disable=E0602
|
||||
Import("env") # noqa
|
||||
|
||||
from SCons.Script import ARGUMENTS
|
||||
|
||||
|
||||
platform = env.PioPlatform()
|
||||
PROJ_SRC = env["PROJECT_SRC_DIR"]
|
||||
PIO_FILES = glob.glob(join(PROJ_SRC, "**", "*.pio"), recursive=True)
|
||||
|
||||
verbose = bool(int(ARGUMENTS.get("PIOVERBOSE", "0")))
|
||||
|
||||
|
||||
if PIO_FILES:
|
||||
if verbose:
|
||||
print("==============================================")
|
||||
print("PIO ASSEMBLY COMPILER")
|
||||
try:
|
||||
PIOASM_DIR = platform.get_package_dir("tool-pioasm-rp2040-earlephilhower")
|
||||
except:
|
||||
print("tool-pioasm-rp2040-earlephilhower not supported on your system!")
|
||||
sys.exit()
|
||||
|
||||
PIOASM_EXE = join(PIOASM_DIR, "pioasm")
|
||||
if verbose:
|
||||
print("PIO files found:")
|
||||
for filename in PIO_FILES:
|
||||
if verbose:
|
||||
print(f" {filename}")
|
||||
subprocess.run([PIOASM_EXE, "-o", "c-sdk", filename, f"{filename}.h"])
|
||||
if verbose:
|
||||
print("==============================================")
|
||||
Reference in New Issue
Block a user