* `pcb bom` now accepts a directory path
This is consistent with the other pcb subcommands.
* Revert "`pcb bom` now accepts a directory path"
This reverts commit 3d1d7d8b8312438b30f4fb091bc782718c5e3cc6.
* ENG-175: standardize path handling
* Update CHANGELOG
* Fix release test
* Fix review comments
* Delete <workspace>/.pcb/cache symlinking for v1 dep resolution
* Symlink ~/.pcb/cache to workspace/.pcb/cache
Results in more stable fp-lib-table
* Patch fp-lib-table to point to vendor/ in release
* Run DRC on staged source layout directory
* Use source layout directly in release instead of separate copy
* Update tests, fix snapshots
* Run layout before release
* Dont ignore test
* Migrate test-workspaces/with-pcb-toml to v2
* Skip symlinks in release zip creation
* Buffer zip write
* Skip availability hydration on un-auth'd pcb bom
* Share cache directory for v2
* Update changelog
* Use repo-specific GITHUB_TOKEN token
More secure, and has enough permissions.
* Reduce stdlib-version-check cron freq to once a day
The stdlib -> pcb dispatch workflow actually works. So the cron job is
only needed as a fallback in case the dispatch fails due to some github
outage (which is unfortunately very likely). But once a day should still
be enough.
* Use pcb build <path/to/dir> in CI
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Fix Windows flakiness by improving SQLite concurrency handling
Assets are indexed in parallel using par_iter(), which causes multiple threads
to access the SQLite cache index simultaneously. On Windows, this was causing
intermittent "Missing cache entry" failures.
Windows has more aggressive file locking than Unix. SQLite's default journal
mode uses exclusive file locks that cause immediate SQLITE_BUSY errors under
contention, whereas Unix handles this more gracefully via fcntl().
Changes:
- Enable WAL (Write-Ahead Logging) mode for better concurrent access
- Add 5-second busy timeout so SQLite retries instead of failing immediately
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Don't respect global templates for machine-managed cache directories
This slightly improves checkout performance
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Add toolchain packaging v2 doc
* Add v2 pcb.toml config
* Add v2 test workspaces
* Add v2 resolve hook
* Dep resolution - wip 1
* Implement full, transitive dep resolution
* Replace chrono with jiff
Fix a sparse checkout issue.
* Phase 3: fetch dependency contents after resolution
* Phase 4: write pcb.sum
* Store hashes in marker file
* Pre-seed pcb.sum and use it to optimize dep resolution
* Fix canonical tar issue, add pcb package for debugging purposes
* v1 to v2 live manifest translation
* Only collect package .zen files in v2
* v2 dep resolution
* Fix clippy lints
* Filter v2 build paths correctly
* Prune nested packages for content tar hash
* Split v2 resolution
* Removed global local_path_deps map
* Add sparse checkout of subdirs
* Drop support for workspace dependencies
* Add, validate package.path
* Auto resolve workspace members
* wip - no aliases
* Remove workspace.aliases support
* Add asset dependencies
* Don't preseed asset dependencies
* Add back aliases
* Remove unnecessary checks
* Auto alias from deps, add workspace.path
* Move resolver version and pcb-version to workspace config
* Don't preseed pcb.sum into MVS
* Split workspace.path into workspace.repository, workspace.path
* migrate - wip1
* Auto add deps to pcb.toml on build
* migrate - wip2
* migrate - wip3
* migrate - wip4
* Use sorted dependencies, assets, patch
* Use tags to auto-choose version
* Add pcb info v2 support
* pcb build always fixes local versions
* Improve workspace package detection
* process dirs by depth
* Add unpublished, dirty package detection
* pcb publish - wip1
* Make pcb info, pcb publish fast
* wave publishing
* Update docs on pcb publish
* Don't require main to be in sync for publish
* wave publish w/ commits
* Better commit messages
* Fix wave publish when no changes
* Compute publish content hashes in parallel
* Point to proper repos
Add --force to publish
* Skip vendor/ in migrate/
* Delete unused test workspaces
* Dedup skip_vendor
* Expand "@registry" in migrate
* Add auto dep for remote dependencies
* Simplify remote discovery
* Add registry path corrections
* Add another correction
* Combine phases 1 and 3
* Parallelize dep fetching using waves
* Fix pruning of nested packages
* Canonical hashing fixes
* Only include files in canonical tar
* Improve is_v2() detection
* Better integrate v2 migration into codemods
* Consolidate git commands to git.rs
* Update unstable ref snapshots
* Remove unstable ref tests
* simplify
* Remove secondary pass
* Standardize on members
* simplify
* Correct everything into workspace info
* Add cache_base()
* Factor out canonical
* Dedup canonical tar gen
* Consolidate workspace info types
* Remove intermediate states
* Compute dirty state on demand
* Update doc
* Add v2 vendor support
* Auto vendor on pcb build
* Add proper offline support for v2
* Fix pcb vendor
* Bump pcb version to 0.3.0
* Drop workspace.resolver, just use workspace.pcb-version
* Convert non-zen paths in escape_paths codemod
* Create modules for graphics/ during pcb migrate
* Replace cache marker files with sqlite index
* Vendor assets as .tar.zst files
* Add v2 release support
* revert d8e8842
* Auto dep subpaths of assets
* Use vendor_deps in pcb release
* Copy from workspace vendor/ opportunistically
* Default v2 manifest to vendor registry
* Fix tests, add inline pcb.toml support
* Update packaging doc
* Fix tests
* HTTP archive download support for package fetching
* Fetch assets in parallel
Preseed download wave 1 with pcb.sum
* Add snapshot tests for canonicalization
* Build before publish
* Fix stdout, add bom, layout support
* Add snapshot tests for auto-dep
* Add interactive version selector to pcb publish/update
* Cleanup
* Always run tidy on --tidy
* Add a versioning page to docs site
* Add workspace.exclude support
* Auto dep should respsect workspace packages
* Filter v2 zen files to member packages
* Fix tests, lsp, pcb open
* Update pcb zen wasm
* Fix single file subpath canonical tar hashing
* Fix diagnostic crash
* Fix wasm asset paths
* Allow omitting path in pcb vendor
Default to current dir.
* Add context to errors
* Opportunistically verity paths on auto-dep
* Fix clippy lints
My last PR added a transitive dependency on pcb-kicad to pcb-zen-wasm,
which caused the wasm build to fail.
Build wasm bundle in CI to prevent future regressions.
* sync zones and text
* add initial test for zone sync
* add zones to groups
* simpler zone test
* fix zone sync
* fix net determinism
* add more interesting test
* hack: amend tests with (0,0) positioning for now
* wip: fix nets for zones
* hack: keep old tests to make sure we don't mess up
* add zone sync
* fix sync graphics
* add complex test
* deterministic snapshot
* fix snapshots with no files
* add graphics test
* add timout
* bump timout
* reduce complexity
* move methods to virtual item
* add graphics groups
* use Duplicate
* add hatching to complex test
* Use smart rust cache
Out cache sizes are blowing up:
Cache Size: ~8914 MB (9346691088 B)
"C:\Program Files\Git\usr\bin\tar.exe" -xf C:/a/_temp/277318a1-9141-472d-bf1b-4d0461835b0b/cache.tzst -P -C C:/a/pcb/pcb --force-local --use-compress-program "zstd -d"
Cache restored successfully
Cache restored from key: Windows-cargo-02b001115c33129b2426bd7db7faa11329497685bfa1d1e328c20e41bc781dca
Which is slowing down builds. Just fetching cargo cache took 6 mins.
Swatinem/rust-cache has much better default behavior:
- Cleans dependencies no longer used
- Cleans incremental build artifacts
- Cleans anything older than 1 week
It also only caches dependencies (and their built artifacts). Caching
workspace crates is not that useful.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Reuse build pcb for stdlib testing
Also use actions/checkout for faster cloning.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Switch to larger github runners
The "xlarge" in "macos-15-xlarge" doesn't actually mean extra large. The
"x" indicates arm64 as opposed to Intel.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Remove dep on deprecated actions-rs/toolchain@v1
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Update Cargo.lock
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Add pcb vendor
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Copy pcb.toml to release if it exists
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Use vendor dir in resolver
Add --offline support to build, layout.
Standardize behavior of find_workspace_root. Most of the callsites would
fallback on parent dir of target .zen file. We should just do that
universally to reduce conditional code paths.
Add an option to the resolve to not use the vendor dir in case that's
useful in some cases.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Drop vendor alias
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Only support pcb vendor in pcb.toml workspaces
Attempting to resolve a common workspace root from multiple zen files in
a dir without pcb.toml just got way too complicated. We can add support
for this in the future if needed.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Canonicalize zen_path
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>