J. Nick Koston
7c47cbdb73
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
...
# Conflicts:
# esphome/build_gen/arduino8266.py
2026-08-22 15:06:30 -05:00
J. Nick Koston
49dcc89130
Validate the board and flash-ld names; reject valued VTABLES defines; scope the damaged-cache recovery
...
The board name lands unquoted in two -D bodies and the flash linker
script name joins under the SDK and build ld dirs, so both are now
shape-validated like f_cpu. A VTABLES_IN_* define carrying a body would
split the compile line from the linker script and is refused. The
damaged-cache overwrite moves into a shared _write_generated helper
scoped to the comparison read: a corrupt existing copy is logged and
replaced (the testing-mode flash ld gets the same recovery), while a
genuine write failure still raises with its cause.
2026-08-22 15:05:58 -05:00
J. Nick Koston
b29fbe5839
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 15:03:21 -05:00
J. Nick Koston
58eea37e10
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 15:03:21 -05:00
J. Nick Koston
ae141a4712
Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
2026-08-22 15:03:21 -05:00
J. Nick Koston
a2a93cc186
Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer
2026-08-22 15:03:21 -05:00
J. Nick Koston
6171561b70
Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra
2026-08-22 15:03:21 -05:00
J. Nick Koston
35af304911
Merge branch 'esp8266-native-build-surgery' into esp8266-native-toolchain-plumbing
2026-08-22 15:03:20 -05:00
J. Nick Koston
91836a8c69
Merge branch 'esp8266-native-shared-helpers' into esp8266-native-build-surgery
2026-08-22 15:03:20 -05:00
J. Nick Koston
f4482275cb
Pin sortedness on a nested fixture in the comment-order test
2026-08-22 15:03:07 -05:00
J. Nick Koston
4ebdd88d7b
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 14:54:58 -05:00
J. Nick Koston
241e804879
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 14:54:58 -05:00
J. Nick Koston
5f2d0b9e93
Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
2026-08-22 14:54:58 -05:00
J. Nick Koston
4aba6c4670
Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer
2026-08-22 14:54:58 -05:00
J. Nick Koston
d653a550bb
Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra
2026-08-22 14:54:57 -05:00
J. Nick Koston
6f79518ee2
Merge branch 'esp8266-native-build-surgery' into esp8266-native-toolchain-plumbing
2026-08-22 14:54:57 -05:00
J. Nick Koston
f599e37375
Merge branch 'esp8266-native-shared-helpers' into esp8266-native-build-surgery
2026-08-22 14:54:57 -05:00
J. Nick Koston
fd7e340e81
Type-hint the to_code test stub
2026-08-22 14:54:39 -05:00
J. Nick Koston
84a8ac3772
Use a docstring instead of pass in the to_code test stub
2026-08-22 14:54:24 -05:00
J. Nick Koston
9f64d54e50
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 14:52:40 -05:00
J. Nick Koston
9be1a67400
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 14:52:40 -05:00
J. Nick Koston
469fd5b2c4
Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
2026-08-22 14:52:40 -05:00
J. Nick Koston
961bff4790
Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer
2026-08-22 14:52:40 -05:00
J. Nick Koston
cb02e15184
Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra
2026-08-22 14:52:40 -05:00
J. Nick Koston
ab49aff931
Merge branch 'esp8266-native-build-surgery' into esp8266-native-toolchain-plumbing
2026-08-22 14:52:39 -05:00
J. Nick Koston
910147139a
Merge branch 'esp8266-native-shared-helpers' into esp8266-native-build-surgery
2026-08-22 14:52:39 -05:00
J. Nick Koston
4a459e3d0d
Lift the remaining function-local imports in test_main to top level
2026-08-22 14:52:38 -05:00
J. Nick Koston
612775908e
Never substitute a URL-pinned dependency; rename the header-suffix set; warn on real bundled suppression
...
A dependency whose version is a repository URL names one specific
source, so it is now detected before the backend-provided skip and
resolves as git instead of being replaced by the bundled copy. The
library header-suffix set becomes LIBRARY_HEADER_SUFFIXES so it cannot
shadow esphome.const's narrower HEADER_FILE_EXTENSIONS. Suppressing a
genuinely bundled name on an external short-name match warns (an
accidental collision would surface as link errors), a converted library
with no sources and no headers warns by name, and the walk's
unreachable nameless-dependency check is gone.
2026-08-22 14:52:07 -05:00
J. Nick Koston
680753dbef
Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
...
# Conflicts:
# esphome/platformio/library.py
2026-08-22 14:50:04 -05:00
J. Nick Koston
8a4ade10e6
Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer
2026-08-22 14:49:42 -05:00
J. Nick Koston
8cffd44ffd
Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra
2026-08-22 14:49:42 -05:00
J. Nick Koston
e16008fc58
Merge branch 'esp8266-native-build-surgery' into esp8266-native-toolchain-plumbing
2026-08-22 14:49:42 -05:00
J. Nick Koston
35a1136bea
Merge branch 'esp8266-native-shared-helpers' into esp8266-native-build-surgery
2026-08-22 14:49:41 -05:00
J. Nick Koston
3b091676bf
Drop the unreachable nameless-dependency check in the walk
...
normalize_dependencies guarantees every entry carries a non-empty
string name, so only the version can be absent.
2026-08-22 14:49:39 -05:00
J. Nick Koston
fd82f0f4bf
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 14:44:18 -05:00
J. Nick Koston
0883b6e5aa
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 14:44:18 -05:00
J. Nick Koston
ef93ebb67b
Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
2026-08-22 14:44:17 -05:00
J. Nick Koston
622be18709
Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer
2026-08-22 14:44:17 -05:00
J. Nick Koston
ade6dbabae
Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra
2026-08-22 14:44:17 -05:00
J. Nick Koston
182dc7f636
Merge branch 'esp8266-native-build-surgery' into esp8266-native-toolchain-plumbing
2026-08-22 14:44:17 -05:00
J. Nick Koston
d7af5f37b6
Merge branch 'esp8266-native-shared-helpers' into esp8266-native-build-surgery
2026-08-22 14:44:17 -05:00
J. Nick Koston
121795fa8d
Trim comment and docstring essays
2026-08-22 14:44:12 -05:00
J. Nick Koston
594cc89b38
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 14:41:34 -05:00
J. Nick Koston
8fb771eec8
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 14:41:34 -05:00
J. Nick Koston
38be558603
Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
2026-08-22 14:41:34 -05:00
J. Nick Koston
4e48764bbe
Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer
2026-08-22 14:41:34 -05:00
J. Nick Koston
deecfade13
Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra
2026-08-22 14:41:34 -05:00
J. Nick Koston
ec237a2d06
Merge branch 'esp8266-native-build-surgery' into esp8266-native-toolchain-plumbing
2026-08-22 14:41:33 -05:00
J. Nick Koston
a2267eb686
Merge branch 'esp8266-native-shared-helpers' into esp8266-native-build-surgery
2026-08-22 14:41:33 -05:00
J. Nick Koston
dbd6f323c0
Extract the build-info staleness check so its branches are testable
...
copy_src_tree is always mocked in the writer tests, so the new
missing/stale/unreadable debug branches were unreachable; the decision
moves into _build_info_stale with a test covering every branch.
2026-08-22 14:41:30 -05:00
J. Nick Koston
342b61ef84
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 14:38:09 -05:00
J. Nick Koston
2903aa7c3e
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 14:38:09 -05:00
J. Nick Koston
e4cb1d4f27
Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
2026-08-22 14:38:09 -05:00
J. Nick Koston
62a4cb3fe4
Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer
2026-08-22 14:38:09 -05:00
J. Nick Koston
d3eaac6f47
Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra
2026-08-22 14:38:08 -05:00
J. Nick Koston
2eec194d87
Merge branch 'esp8266-native-build-surgery' into esp8266-native-toolchain-plumbing
...
# Conflicts:
# tests/unit_tests/test_main.py
2026-08-22 14:38:04 -05:00
J. Nick Koston
3a9a6edc0e
Merge branch 'esp8266-native-shared-helpers' into esp8266-native-build-surgery
2026-08-22 14:37:46 -05:00
J. Nick Koston
11875ec040
Dump the main.cpp config comment with sorted keys
...
voluptuous fills schema defaults in set-iteration order, so the
validated dict's key order changes with the process hash seed; the
unsorted dump churned the comment block in main.cpp and relinked the
firmware on every esphome run for any config using a defaults-heavy
action (logger.log in a button's on_press was enough). Affects the
PlatformIO path identically.
2026-08-22 14:37:42 -05:00
J. Nick Koston
f9f642b81d
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 14:31:39 -05:00
J. Nick Koston
2e9ba5fa2d
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 14:31:39 -05:00
J. Nick Koston
eddb5981da
Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
2026-08-22 14:31:39 -05:00
J. Nick Koston
51221688f6
Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer
2026-08-22 14:31:39 -05:00
J. Nick Koston
f695e9dceb
Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra
2026-08-22 14:31:39 -05:00
J. Nick Koston
d8f6368716
Merge branch 'esp8266-native-build-surgery' into esp8266-native-toolchain-plumbing
2026-08-22 14:31:38 -05:00
J. Nick Koston
a97b836012
Merge branch 'esp8266-native-shared-helpers' into esp8266-native-build-surgery
2026-08-22 14:31:38 -05:00
J. Nick Koston
afeb1a5ea1
Name the changed source when the writer flags a rebuild
...
Every sources_changed site now logs which file (or which build-info
staleness) triggered it, so a config that relinks on every run can be
diagnosed from one -v compile instead of diffing the build tree.
2026-08-22 14:31:36 -05:00
J. Nick Koston
007cd61fe4
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 14:21:11 -05:00
J. Nick Koston
b435bb9d4f
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 14:21:11 -05:00
J. Nick Koston
557ba9953d
Fail by name on a missing libraries dir; single frameworks warning; fix a vacuous test
...
A framework tree without libraries/ now raises naming the path instead
of silently rerouting every bundled name to the registry, matching the
empty-bundled-dir error. check_library_data accepts framework=None to
skip the framework check (mirroring platform=None), so the backend-side
platform re-check no longer re-fires the frameworks-mismatch warning
the walk already emitted. The platform-rejection-is-debug test patched
the wrong module and asserted nothing; it now patches the backend's
import and asserts the dependency is absent from the resolved set.
2026-08-22 14:21:08 -05:00
J. Nick Koston
3985ca5d51
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 14:12:57 -05:00
J. Nick Koston
b247df7692
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 14:12:57 -05:00
J. Nick Koston
a890527ab3
Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
...
# Conflicts:
# esphome/platformio/library.py
2026-08-22 14:12:54 -05:00
J. Nick Koston
2d2750e031
Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer
2026-08-22 14:11:40 -05:00
J. Nick Koston
0d508ccbc0
Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra
...
# Conflicts:
# tests/unit_tests/test_framework_helpers.py
2026-08-22 14:11:26 -05:00
J. Nick Koston
bf7a617934
Merge branch 'esp8266-native-build-surgery' into esp8266-native-toolchain-plumbing
2026-08-22 14:11:02 -05:00
J. Nick Koston
803eef7de6
Merge branch 'esp8266-native-shared-helpers' into esp8266-native-build-surgery
2026-08-22 14:11:02 -05:00
J. Nick Koston
fb06b4d631
Download a wave of registry libraries in parallel
...
The walk now drains its frontier, prefetches the wave's registry
archives with a small thread pool (deduped by URL, progress bars
suppressed per thread since parallel bars would interleave), and then
processes the wave sequentially; the sequential download() call stays
authoritative so failures surface with resume exactly as before. Same
approach as the espidf tool prefetch in #18513 .
2026-08-22 14:10:40 -05:00
J. Nick Koston
eb62957b66
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 13:51:48 -05:00
J. Nick Koston
2a86ae572d
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 13:51:48 -05:00
J. Nick Koston
447a411d45
Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
2026-08-22 13:51:48 -05:00
J. Nick Koston
ae2893992a
Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer
2026-08-22 13:51:47 -05:00
J. Nick Koston
6b46e9fd03
Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra
2026-08-22 13:51:47 -05:00
J. Nick Koston
2f053371ce
Guard the honored board_build branch against the empty-list form
...
voluptuous accepts [] for [cv.string], so vals[-1] could raise an
IndexError at codegen time; an empty list now falls through to the
ignored-option warning.
2026-08-22 13:51:35 -05:00
J. Nick Koston
47e87d7eb2
Dedupe the rejection warning and make bundled-name membership case-exact
...
The backend-side bundled filter now checks compatibility silently (the
shared walk owns the warning), so one manifest fault warns once instead
of twice. Bundled-name membership uses the exact on-disk directory
names instead of a per-name is_dir() probe, so a case-insensitive
filesystem cannot match a case-mismatched dependency and build the same
bundled library twice.
2026-08-22 13:50:29 -05:00
J. Nick Koston
255ca06325
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 13:16:00 -05:00
J. Nick Koston
a4a566eac2
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 13:15:59 -05:00
J. Nick Koston
3bd4cdb760
Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer
2026-08-22 13:15:59 -05:00
J. Nick Koston
9533c09b69
Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra
2026-08-22 13:15:59 -05:00
J. Nick Koston
2ea5c87e99
Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
2026-08-22 13:15:59 -05:00
J. Nick Koston
2dac9112be
Pin the scalar shape for the honored board_build options; note the dispatch coupling
...
The schema permits the list form, so the routing now stores the last
value (like a later platformio.ini line) and the generator always sees a
scalar. The using_native_toolchain docstring points at write_cpp_file's
dispatch so NATIVE_TOOLCHAINS membership and the project-writing branch
flip together.
2026-08-22 13:15:47 -05:00
J. Nick Koston
e8ceb241e1
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 13:10:55 -05:00
J. Nick Koston
a9149aef28
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 13:10:55 -05:00
J. Nick Koston
efa3018123
Close the four diagnostic gaps in the library backend
...
An owner-qualified dependency name (Owner/Pkg, both halves safe) is the
converter's to resolve and no longer draws the malformed-entry warning,
which stays for genuinely unsafe shapes. A declared srcFilter matching
only inert files now warns like one matching nothing, while matched
headers still read as a header-only library. The short-name suppression
logs the assumed external at debug so an accidental collision is
attributable. A failing ar batch unlinks the truncated archive before
returning its exit code.
2026-08-22 13:10:44 -05:00
J. Nick Koston
ac227b552c
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 12:52:53 -05:00
J. Nick Koston
aa2cd99a9b
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 12:52:53 -05:00
J. Nick Koston
478584354e
Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer
2026-08-22 12:52:52 -05:00
J. Nick Koston
53228c183a
Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
2026-08-22 12:52:52 -05:00
J. Nick Koston
9c7f68b813
Hoist the boolean spelling tables to helpers so cv.boolean and the env parser share one source
...
cv.boolean's inline tuples and the ccache env tables were two copies of
the same spellings; TRUTHY_BOOL_STRINGS/FALSY_BOOL_STRINGS now live in
esphome/helpers.py, cv.boolean consumes them, and parse_enable_env
derives its tables by adding the 1/0 env convention.
2026-08-22 12:52:38 -05:00
J. Nick Koston
fe357106df
Merge branch 'esp8266-native-build-spec' into esp8266-native-ninja-emission
2026-08-22 12:48:21 -05:00
J. Nick Koston
f4f7492f37
Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec
2026-08-22 12:48:21 -05:00