Commit Graph
100 Commits
Author SHA1 Message Date
J. Nick Koston 9d38ac8d6c Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec 2026-08-22 15:47:12 -05:00
J. Nick Koston 7694ffb5ac Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend
# Conflicts:
#	esphome/platformio/library.py
2026-08-22 15:47:09 -05:00
J. Nick Koston 7f6aaeb46c Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer 2026-08-22 15:46:47 -05:00
J. Nick Koston 7a938af0f8 Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra 2026-08-22 15:46:47 -05:00
J. Nick Koston 776b3844f9 Merge branch 'esp8266-native-build-surgery' into esp8266-native-toolchain-plumbing 2026-08-22 15:46:47 -05:00
J. Nick Koston 689861ffc9 Merge branch 'esp8266-native-shared-helpers' into esp8266-native-build-surgery 2026-08-22 15:46:47 -05:00
J. Nick Koston eec01ea793 Diagnosable prefetch failures, Ctrl-C-safe pool, typed dependency versions
The library prefetch pool now cancels queued futures on interrupt like
the espidf pool it mirrors, prefetch and HEAD failures log their cause
at debug (a suppressed bar is traceable), and non-2xx HEAD statuses read
as unknown size. normalize_dependencies rejects a non-string version in
both spellings (a container would raise from set.add(); an int fails
opaquely in the registry), and the walk's version-less skip logs the
dependency at debug until the arduino-backend reconciliation lands.
2026-08-22 15:46:38 -05:00
J. Nick Koston b888d41cb9 Diagnosable prefetch failures, Ctrl-C-safe pool, typed dependency versions
The library prefetch pool now cancels queued futures on interrupt like
the espidf pool it mirrors, prefetch and HEAD failures log their cause
at debug (a suppressed bar is traceable), and non-2xx HEAD statuses read
as unknown size. normalize_dependencies rejects a non-string version in
both spellings (a container would raise from set.add(); an int fails
opaquely in the registry), and the walk's version-less skip logs the
dependency at debug until the arduino-backend reconciliation lands.
2026-08-22 15:46:06 -05:00
J. Nick Koston 77915bd03e Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec 2026-08-22 15:33:41 -05:00
J. Nick Koston 8b76d61e8f Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend 2026-08-22 15:33:40 -05:00
J. Nick Koston 8bcf42921a Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra 2026-08-22 15:33:40 -05:00
J. Nick Koston 97701122be Merge branch 'esp8266-native-build-surgery' into esp8266-native-toolchain-plumbing 2026-08-22 15:33:40 -05:00
J. Nick Koston b3f058613c Merge branch 'esp8266-native-shared-helpers' into esp8266-native-build-surgery 2026-08-22 15:33:40 -05:00
J. Nick Koston f1d043c840 Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer 2026-08-22 15:33:40 -05:00
J. Nick Koston 1eda5a8534 Skip already-cached archives in the download prefetch
The wave logged 'Downloading N libraries' before checking the
extraction markers, so a warm build announced downloads it never made.
URLSource gains an is_cached probe (best-effort in the prefetch) and a
fully warm wave stays silent.
2026-08-22 15:33:37 -05:00
J. Nick Koston db89d64c4e Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec 2026-08-22 15:25:48 -05:00
J. Nick Koston 040c91259d Mirror the URL rule in the bundled probe; fail on empty converted trees; harden build_tool argv
A URL-pinned dependency now skips the bundled probe (the walk resolves
the fork; adding the bundled copy would double the archive). A versioned
bundled candidate's non-platform manifest fault warns here since it
skips the walk's usability filter via provides(); version-less causes
stay at debug (the walk already warned). The pending drain logs a
manifest-name suppression at debug and drops its unreachable
bundled_names re-check. A converted tree with no sources and no headers
now fails by name at emit like the bundled case (test scaffolds gained
real source files). build_tool validates each mode's operand count and
a failed copy unlinks the partial output.
2026-08-22 15:25:37 -05:00
J. Nick Koston 1652088009 Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer 2026-08-22 15:21:04 -05:00
J. Nick Koston ff8f9786e9 Merge branch 'esp8266-native-framework-installer' into esp8266-native-library-backend 2026-08-22 15:21:04 -05:00
J. Nick Koston 4cbfdd3200 Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra
# Conflicts:
#	tests/unit_tests/test_framework_helpers.py
2026-08-22 15:21:01 -05:00
J. Nick Koston 1f2b532394 Merge branch 'esp8266-native-build-surgery' into esp8266-native-toolchain-plumbing 2026-08-22 15:20:42 -05:00
J. Nick Koston 520bf3f63b Merge branch 'esp8266-native-shared-helpers' into esp8266-native-build-surgery 2026-08-22 15:20:42 -05:00
J. Nick Koston 1cf5df3d59 Merge the espidf parallel-prefetch branch and give library downloads its combined bar
Brings in #18513 (BatchDownloadProgress and the download_with_resume
progress callback) and extends the plumbing one level:
download_from_mirrors passes a progress callback to both target kinds,
Source/ConvertedLibrary.download thread it through, and the library
wave prefetch draws one combined bar sized by parallel HEAD requests
(no sizes, no bar). The thread-local bar suppression this replaces is
removed; a batch caller passing a tracker also owns the messaging, so
the per-file Downloading line only prints for solo downloads.
2026-08-22 15:19:58 -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 a2a93cc186 Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer 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 6171561b70 Merge branch 'esp8266-native-toolchain-plumbing' into esp8266-native-build-infra 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 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 4aba6c4670 Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer 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 241e804879 Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec 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 961bff4790 Merge branch 'esp8266-native-build-infra' into esp8266-native-framework-installer 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 9be1a67400 Merge branch 'esp8266-native-library-backend' into esp8266-native-build-spec 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 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 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 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 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 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 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 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 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