vcswatch reports that
this package seems to have new commits in its VCS but has
not yet updated debian/changelog. You should consider updating
the Debian changelog and uploading this new version into the archive.
Here are the relevant commit logs:
commit 7abcabf3b68c75551be00751b36e79fd9cbf2c2b
Merge: 8ecf696 82fa3d5
Author: Juan Manuel Méndez Rey <juan.mendezr@proton.me>
Date: Sun Nov 1 19:20:19 2026 +0000
Merge branch 'debian/latest' into 'debian/latest'
New upstream 1.6.7+ds; correct ppc64el PIE attribution
See merge request go-team/packages/siso!11
commit 82fa3d582c44837758707899a695df5ed45da145
Merge: 84321f6 8ecf696
Author: Juan Manuel Méndez Rey <juan.mendezr@proton.me>
Date: Sun Nov 1 20:15:04 2026 +0100
Merge origin/debian/latest
commit 84321f640bee93674e762e65d2f80f7ea2abb9af
Author: Juan Manuel Méndez Rey <juan.mendezr@proton.me>
Date: Sun Nov 1 19:29:02 2026 +0100
Finalize changelog for 1.6.7+ds-1
commit 5970c7f93da84c07829743c700df756640b1c10c
Author: Juan Manuel Méndez Rey <juan.mendezr@proton.me>
Date: Sun Nov 1 19:21:30 2026 +0100
Package new upstream 1.6.7+ds
commit 8e8fdb19c97a852f5e885ca78d9dc7f207bbb934
Merge: 7914936 d8ada4c
Author: Juan Manuel Méndez Rey <juan.mendezr@proton.me>
Date: Sun Nov 1 19:16:49 2026 +0100
Update upstream source from tag 'upstream/1.6.7+ds'
Update to upstream version '1.6.7+ds'
with Debian dir be608e01b515bb680e1007d29bb9669178781028
commit d8ada4c06b08cfa751894868d9f940ee8f1d3be9
Merge: c9732ef dfc32e4
Author: Juan Manuel Méndez Rey <juan.mendezr@proton.me>
Date: Sun Nov 1 19:16:48 2026 +0100
New upstream version 1.6.7+ds
commit dfc32e4edca158cff2b64a1658ee3940f0116b3a
Author: Jihoon Kang <jihoonkang@google.com>
Date: Thu Oct 22 17:42:59 2026 -0700
siso: normalize "." REAPI working_directory so 2PC digests match
When two-phase caching (2PC) is enabled, Builder.twoPhaseCachingLookup
unconditionally sets step.cmd.CanonicalizeDir = false so that input
roots can match local paths. This setting persists when remote action
execution occurs after a 2PC cache miss.
In REAPI, "" and "." are semantically equivalent (both represent the
input root directory), but produce different Command proto serializations
and digests. Android ABFS dev-warmup builds with 2PC had 0% action digest
overlap with CI because working_directory was "." instead of "".
Instead of mutating Siso's internal Path representation (where "." is
the canonical non-empty relative root representation used across paths,
casts, and Dir(), and New is unchanged), normalize "." to "" strictly
at the REAPI boundary:
- Introduce Cmd.WorkingDirectory() which normalizes "." to "" when
building rpb.Command. RemoteChroot output remains unchanged as
path.JoinRoot(root, "") and path.JoinRoot(root, ".") both return New(root).
Use it in Cmd.CommandDigest when setting Command.working_directory.
- Introduce Path.Equal to report whether two Paths are the same after
canonicalization, treating "" and "." as the same root path.
- Use Path.Equal in reapiTwoPhaseCaching.matchAction to compare
step.cmd.WorkDir and cmd.GetWorkingDirectory(), preserving compatibility
with existing cache entries recorded with ".".
- Guard subcmd/recall against empty working_directory, as filepath.IsLocal("")
is false and recall would otherwise reject commands with working_directory "".
Keep TestCommandDigest_DotWorkDir, TestCommandDigest_NonRootWorkDir, and
TestCommandDigest_RemoteChrootDotWorkDir as separate top-level tests with
isolated hashFS instances and t.Context(), and add direct tests for
Cmd.WorkingDirectory and Path.Equal.
Bug: b/576384060
Change-Id: I1f1332aac8a4f236d80e17c9684b56d80971068c
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8616931
Reviewed-by: Fumitoshi Ukai <ukai@google.com>
Commit-Queue: Jihoon Kang <jihoonkang@google.com>
commit 07dd00714f1ff29232e9b65e10b6bdf0df7d7c21
Author: Junji Watanabe <jwata@google.com>
Date: Thu Oct 22 01:02:45 2026 -0700
siso: preserve remote-only entries in .siso_fs_state during -t cleandead
When siso ninja -t cleandead runs without -output_local_strategy,
c.outputLocalStrategy defaults to "full", causing HashFS initNotExist
to treat non-materialized remote outputs (from a prior greedy/minimum
build) as missing locally-needed files and strip them when saving
.siso_fs_state on exit.
Since subtool "cleandead" only cleans dead generated files and does
not materialize build outputs, set c.outputLocal to return false so
remote-only entries in .siso_fs_state are preserved regardless of
-output_local_strategy.
Bug: 576369882
Change-Id: Ief1d1b5add77ccd8e4aedaef4ee03bd58fa8af05
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8629287
Reviewed-by: Fumitoshi Ukai <ukai@google.com>
Commit-Queue: Junji Watanabe <jwata@google.com>
Auto-Submit: Junji Watanabe <jwata@google.com>
commit 0dd1534d3e492132314afd7e60ef5c8bdbb3899b
Author: Junji Watanabe <jwata@google.com>
Date: Thu Oct 22 00:48:24 2026 -0700
siso: fix -cleandead flag overwritten by resolveFlags
In crrev.com/c/7278456, resolveFlags was refactored to assign:
c.cleandead, err = checkSubtool(c.subtool)
When -cleandead is passed without -t cleandead, c.subtool is empty and
checkSubtool("") returns (false, nil), overwriting c.cleandead back to
false.
Only set c.cleandead = true when checkSubtool returns true so the
-cleandead flag is preserved.
Bug: 576369882
Change-Id: I2974afa648554a7fe3aac62846b4b3aa1da87243
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8629267
Reviewed-by: Fumitoshi Ukai <ukai@google.com>
Auto-Submit: Junji Watanabe <jwata@google.com>
Commit-Queue: Junji Watanabe <jwata@google.com>
commit 46a923d6d6ef6cc063b94b4a039652ff29707a07
Author: Andrew Paseltiner <apaseltiner@google.com>
Date: Wed Oct 21 06:16:15 2026 -0700
siso: update target state cache in checkLocalOutputs
When a step with a stale .siso_deps entry stats a pre-existing generated
file in inputMtime before the local action that regenerates that file
has executed, b.targets caches {mtime: old, changed: false} for the
generated file.
Unlike (*Builder).outputs, (*Builder).checkLocalOutputs did not update
b.targets after local execution completed, leaving the stale
changed=false entry in b.targets and causing downstream steps that
genuinely depend on the regenerated file to skip rebuilding.
Update b.targets in (*Builder).checkLocalOutputs for declared file and
directory outputs. Also store dirtyErr in b.targets when walking a
directory output fails in both (*Builder).checkLocalOutputs and
(*Builder).outputs, matching inputMtime.
Fixed: b/575838859
Change-Id: Ie72decf3d685d21ccc1b7ed2c59f3359d923bd76
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8620378
Commit-Queue: Andrew Paseltiner <apaseltiner@chromium.org>
Reviewed-by: Fumitoshi Ukai <ukai@google.com>
commit 649804301f76355453dad74e151f7693dd2d8066
Author: Fumitoshi Ukai <ukai@google.com>
Date: Tue Oct 20 16:55:24 2026 -0700
siso: ensure parent directory for symlink before flush
with SISO_EXPERIMENTS=disable-ensure-output-dirs,
cache result of step generates symlink would fail
since parent directory of symlink output doesn't exist
and local fallbacks.
ensure parent directory for symlink exists before flush it.
Bug: b/461917619
Change-Id: Id7dbb91bdcd61254505cc9aac7d9546c3c7df5ea
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8602173
Auto-Submit: Fumitoshi Ukai <ukai@google.com>
Commit-Queue: Fumitoshi Ukai <ukai@google.com>
Reviewed-by: Junji Watanabe <jwata@google.com>
commit 9b0ad4285e3d00523cb74f0f39b62739970a01b3
Author: Cole Faust <colefaust@google.com>
Date: Tue Oct 20 14:25:14 2026 -0700
Remove restat-content-applies-to-empty-files experiment
We want this to always be the behavior.
Bug: 561799494
Test: go test
Change-Id: I1880e11bd9a1009e8e7bb3c0ed1f1d927e4e4832
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8614211
Reviewed-by: Junji Watanabe <jwata@google.com>
Auto-Submit: Cole Faust <colefaust@google.com>
Commit-Queue: Cole Faust <colefaust@google.com>
Reviewed-by: Philipp Wollermann <philwo@google.com>
commit 48b658d07af9d51b1a7077ff8e4cda8ba88a0cf0
Author: Fumitoshi Ukai <ukai@google.com>
Date: Tue Oct 20 06:31:21 2026 -0700
siso: gcc scandepsparams skips output flags
In gccutil.ExtractScanDepsParams, -o and -MF are not skipped in switch arg.
When the -o argument ends in .mm, filepath.Ext(arg) matches it
and adds the output file to res.Sources.
Without disable-ensure-output-dirs, that output directory exists in HashFS,
so scandeps includes it in the input_root.
With disable-ensure-output-dirs, the output directory does not exist in
HashFS, causing two phase caching misses.
argument of -o etc should not be treated as source, so skip next args
for such arguments.
Bug: b/461917619
Change-Id: I4bacec1c126b929a590796f7972b60a24842286b
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8610367
Commit-Queue: Junji Watanabe <jwata@google.com>
Auto-Submit: Fumitoshi Ukai <ukai@google.com>
Reviewed-by: Junji Watanabe <jwata@google.com>
commit 98bf05acefd4f9af79d4f07501253fad73e2c722
Author: Fumitoshi Ukai <ukai@google.com>
Date: Mon Oct 19 22:20:22 2026 -0700
[go] update toolchain go 1.27.2 -> 1.27.3
https://groups.google.com/g/golang-announce/c/66pojueaQek/m/tmWX2Pq9AgAJ
Change-Id: I300f320dac955dd808d343e68adc5ccc87dcd98e
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8611187
Reviewed-by: Richard Wang <richardwa@google.com>
Auto-Submit: Fumitoshi Ukai <ukai@google.com>
Commit-Queue: Richard Wang <richardwa@google.com>
commit 4bd5cc456fb4c98e4820da1d8482288ec59f867e
Author: Fumitoshi Ukai <ukai@google.com>
Date: Mon Oct 19 19:30:31 2026 -0700
siso: show missing deps message for deps=msvc
Bug: b/575574842
Change-Id: I0f41e1be68fffaf2755923b7601a625719dfdc3a
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8609550
Reviewed-by: Yuke Liao <liaoyuke@google.com>
Auto-Submit: Fumitoshi Ukai <ukai@google.com>
Reviewed-by: Junji Watanabe <jwata@google.com>
Commit-Queue: Fumitoshi Ukai <ukai@google.com>
commit 25de01425f142d7ba86f8bcc3d9999e722083602
Author: Cole Faust <colefaust@google.com>
Date: Mon Oct 19 15:24:37 2026 -0700
Don't consider empty files changed with restat_content
Empty files should not be considered changed.
This is an attempt to work around actions that depend on
timestamp files, but the real solution to that is to
enable action sandboxing, which will force you to depend
on all the files you need instead of using timestamp
files as a proxy.
Bug: 561799494
Test: go test
Change-Id: I7e10b73516ca7b69fccb942f955e3df21034f3c7
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8491757
Auto-Submit: Cole Faust <colefaust@google.com>
Commit-Queue: Cole Faust <colefaust@google.com>
Reviewed-by: Junji Watanabe <jwata@google.com>
Reviewed-by: Philipp Wollermann <philwo@google.com>
commit 146ec3de7c46e95cf7adac91927e2dd634047908
Author: Takuto Ikuta <tikuta@chromium.org>
Date: Mon Oct 19 01:58:54 2026 -0700
siso: wait for in-flight RPC handlers when stopping reapitest server
Since bcf193fd ("siso: detach CAS upload operations from the requesting
step"), CAS uploads run on the reapi.Client's background uploader and
can outlive the step that requested them. When a test returns while a
BatchUpdateBlobs RPC is already in flight on the fake REAPI server
(e.g. TestRunRacing_LocalFailure_DoesNotWaitForRemote), testServer.Close
called grpc.Server.Stop(), which by default returns without waiting for
running RPC handlers to finish. The still-running BatchUpdateBlobs
handler could then create/rename files in cas/sha256 concurrently with
t.TempDir's os.RemoveAll cleanup, failing with "directory not empty".
Pass grpc.WaitForHandlers(true) to grpc.NewServer in reapitest so that
serv.Stop() waits for all in-flight RPC handlers to exit before
returning.
Bug: 575196094
Change-Id: I31ae9bdb8a422bb0576c02212467280fb9cd8535
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8609448
Commit-Queue: Takuto Ikuta <tikuta@chromium.org>
Reviewed-by: Fumitoshi Ukai <ukai@google.com>
Auto-Submit: Takuto Ikuta <tikuta@chromium.org>
commit efea3c1cce6f8d464daada8b8615a394abbf6175
Author: Yuke Liao <liaoyuke@google.com>
Date: Sun Oct 18 23:40:46 2026 -0700
siso: snapshot pre-outputs on RBE cache hits for restat
When a step configured with restat or restat_content hits the RBE
action cache, pre-existing outputs were not recorded prior to applying
the cached result unless two-phase caching was active. Without the
pre-output snapshot, restat comparison had no baseline digests or
mtimes to compare against and unconditionally marked outputs as
changed, forcing unnecessary rebuilds of downstream actions even when
output contents were identical.
Additionally, cloning a command for the local racer in racing execution
cleared the pre-output snapshot instead of preserving it, losing the
restat baseline when the snapshot is recorded before dispatching the
execution strategy.
Record pre-outputs once before running the step's execution strategy
when restat is enabled, and preserve the snapshot across command
clones so all execution and cache-hit paths share a consistent baseline.
Bug: 561799494
Test: go test ./build ./execute
Change-Id: I52c7175c9c1b9266a43535243213e272e4b79a0a
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8602671
Reviewed-by: Fumitoshi Ukai <ukai@google.com>
Commit-Queue: Yuke Liao <liaoyuke@google.com>
commit 5dff5f06371c86defce0cec1d377e771fca3190a
Author: Fumitoshi Ukai <ukai@google.com>
Date: Sun Oct 18 19:10:55 2026 -0700
upgraded github.com/ebitengine/purego v0.10.2 => v0.11.2
ebitengine/purego v0.11.2 fixes crash by
signal 27 received on thread with no signal stack
Bug: b/478710493
Change-Id: I42d05b5bc3dbae5800b473146d668a6c70d56f66
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8602670
Reviewed-by: Takuto Ikuta <tikuta@chromium.org>
Commit-Queue: Fumitoshi Ukai <ukai@google.com>
Commit-Queue: Takuto Ikuta <tikuta@chromium.org>
Auto-Submit: Fumitoshi Ukai <ukai@google.com>
commit 46b7d1380e5d038f228d0d1f8d59ed055ebccd42
Author: Fumitoshi Ukai <ukai@google.com>
Date: Sun Oct 18 18:23:27 2026 -0700
siso: update version string to v1.6.7
v1.6.6 is rolled out as pinned version at
git_revision:7ab4814901b3c7afc2dddf2ed1a6ff238a0d85c5
https://crrev.com/c/8607647
http://ag/43086542
Bug: b/572950292
Change-Id: I7d987bce4415320a6fe64c5eaea9029450c16f60
TAG=agy
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8608927
Reviewed-by: Yuke Liao <liaoyuke@google.com>
Commit-Queue: Fumitoshi Ukai <ukai@google.com>
commit 79149362158c3587d200994bb38f222e8966df95
Author: Juan Manuel Méndez Rey <juan.mendezr@proton.me>
Date: Sat Oct 17 18:15:00 2026 +0200
ppc64el: build without -buildmode=pie until golang-1.27 is fixed
Go 1.27 produces ppc64el PIE binaries that die at startup, so the 'siso man' step in override_dh_auto_build could not run and the package FTBFS on that arch. The fault is in the toolchain, not in siso: the same source builds and runs fine without -buildmode=pie, and 1.5.x built fine on ppc64el under golang-1.26.
Scoped to ppc64el only; every other architecture keeps PIE hardening. Verified with clean sbuilds: ppc64el Status: successful, amd64 Status: successful with -buildmode=pie. Drop the conditional and restore -buildmode=pie everywhere once golang-1.27 is fixed.
commit bb5ab7b2e5ab10377590fd5a5e6a00d8dfc099b5
Author: Juan Manuel Méndez Rey <juan.mendezr@proton.me>
Date: Sat Oct 17 15:30:46 2026 +0200
Package new upstream 1.6.5+ds
Upstream siso/go.mod now declares go 1.27.2, so bump the golang-any Build-Depends from (>= 2:1.26~) to (>= 2:1.27~). All five quilt patches apply unchanged, and siso/subcmd/man is still not upstream, so patch 0003 stays.
Not uploadable yet: 1.6.5 still fails to build on ppc64el with golang-1.27 (the freshly built binary crashes at startup, so the man page step in override_dh_auto_build fails).
commit 59084c27af383573c3154977eee6ad970065fbfb
Merge: 7cc2d5a c9732ef
Author: Juan Manuel Méndez Rey <juan.mendezr@proton.me>
Date: Sat Oct 17 14:16:35 2026 +0200
Update upstream source from tag 'upstream/1.6.5+ds'
Update to upstream version '1.6.5+ds'
with Debian dir 5bf7d9942a38b6d2f7d19296bedf2b26ed15f60d
commit c9732ef298678cab8c13146f2f0ff68626714d6a
Author: Juan Manuel Méndez Rey <juan.mendezr@proton.me>
Date: Sat Oct 17 14:16:34 2026 +0200
New upstream version 1.6.5+ds
commit 7ab4814901b3c7afc2dddf2ed1a6ff238a0d85c5
Author: Amith Dsouza <amithds@google.com>
Date: Fri Oct 16 10:02:51 2026 -0700
siso: wait for remote when the local racer is killed by a signal
When racing, a local racer killed by a signal (typically SIGKILL from
the kernel OOM killer; with the oom-score-adj experiment, local actions
run with oom_score_adj=1000 so they are chosen before siso) was treated
as the race winner. runRacing then canceled the in-flight remote
execution and failed the step, even though the remote racer was
unaffected.
If the local racer finishes first because it was killed by a signal
(exit=-1 from localexec, or exit=137 from sandbox wrappers such as
nsjail), keep the remote racer running and use its result. If the
remote racer fails too, apply the usual remote failure policy
(remoteClaimFallbackIfAllowed) and run the step locally once more when
allowed. Ordinary local failures, such as compile errors, still win the
race immediately.
TAG=agy
CONV=906a689f-ee03-4ec6-9a82-add0b950e2ce
Bug: b/571235311
Test: go test ./build/ -run TestRunRacing -race
Change-Id: Ibb132b258275de9fbf38bcea5fca66b67fe185b9
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8551236
Reviewed-by: Takuto Ikuta <tikuta@chromium.org>
Commit-Queue: Amith Dsouza <amithds@google.com>
Auto-Submit: Amith Dsouza <amithds@google.com>
commit c8a256c7d897c47882151f0f3c303d97e0e3e4fd
Author: Neri Marschik <nerima@google.com>
Date: Thu Oct 15 23:02:21 2026 -0700
siso: reuse WalkDir's maps
Two phase caching walks a candidate's input tree on every lookup, and
each WalkDir call built three fresh maps (dirs, waiting, known) that
grew as the walk went. Keep the maps in a sync.Pool and clear them for
reuse. Maps that grew above 4k entries are dropped, so one huge tree
does not keep their memory alive.
Measured on cached cf_x86_64_phone builds on ABFS, siso with and
without this change (then with a 16k cap):
before after
dirs/waiting/known allocs 45 GB 3.6 GB
two phase caching lookups 81.3 s [78.9-86.1] 75.4 s [70.6-79.0]
Allocations: one heap profile each on a 96-core cloudtop, of 440 GB
allocated in total before. Lookups: from the first ready step until
95% of the two phase caching hits have landed, mean [range] of 6
interleaved runs each on a 128-core cloudtop, leaving out one baseline
run with ~150 fewer cache hits; 6.0 ± 4.2 s (95% CI) sooner.
Change-Id: I01c30110045a2dec97547de41e874153db21c69e
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8505798
Commit-Queue: Neri Marschik <nerima@google.com>
Reviewed-by: Philipp Wollermann <philwo@google.com>
commit 7f1b778c407810366c1b79bd5197e5e8a9cee871
Author: Neri Marschik <nerima@google.com>
Date: Thu Oct 15 23:02:11 2026 -0700
siso: hash GetTree directories as received
GetTree streams every directory without its digest, once for every
place it occurs in the tree, so WalkDir decoded, re-marshalled and
hashed each copy. Receive each GetTreeResponse as grpc's buffer
through a call-scoped codec, hash each directory's wire bytes, and
decode only the directories the walk waits for. Directories whose
bytes match no listed digest fall back to decoding and re-hashing as
before. The codec has an empty name so the call keeps the
content-type "application/grpc"; RBE rejects
"application/grpc+proto".
On a cached Android build (cf_x86_64_phone on ABFS), GetTree sends
22.5M directories, 20.6M (92%) of them already known to the walk
(repeated by the stream or taken from walkdirCache), all of which
WalkDir used to decode, re-marshal and hash.
Measured with siso 1aa29e09 with and without this change, on cached
cf_x86_64_phone builds on ABFS, alternating the two binaries. The time
from the first ready step until 95% of the two phase caching hits have
landed, mean [range]:
machine runs before after
96-core cloudtop 4 + 4 73.9 s [72.1-75.9] 66.9 s [65.3-68.4]
128-core cloudtop 6 + 6 82.5 s [80.7-88.1] 76.6 s [74.0-79.5]
That is 6.3 ± 2.2 s (95% CI) sooner.
Change-Id: I7b6211bc8b17edf41cfbd7e53d0571d988ad82cd
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8503861
Reviewed-by: Philipp Wollermann <philwo@google.com>
Commit-Queue: Neri Marschik <nerima@google.com>
commit cecb410cd2fec4bb9254b8bed3e549fc635790a3
Author: Neri Marschik <nerima@google.com>
Date: Thu Oct 15 23:01:36 2026 -0700
siso: do not look up inputs under precomputed subtrees
Android's C/C++ steps list every file of the clang toolchain as an
input (~6,600 per step, declared by Soong for action sandboxing), while
the toolchain also goes into the input root as a precomputed subtree,
whose inputs treeDigest ignores. inputTree still looked each of them up
in HashFS, built a merkletree entry and sorted it. Drop inputs at or
under a precomputed subtree before the lookup: the input root digest is
unchanged, and the step's Inputs are not, so local execution still sees
every file. Of overlapping subtrees, only those SetTree accepts count.
Nothing is dropped under a remote chroot, with remote_inputs, or if a
subtree name is invalid.
Measured on a 96-core cloudtop with siso alone on prebuilt ninja files,
building a fixed set of 36,355 C++ objects of a cached Android build
(cf_x86_64_phone; all remote cache hits with the same action digests
either way): the siso run takes 44.7-46.2 s (mean 45.6 s) instead of
69.8-73.0 s (mean 71.9 s), 3 runs each.
Change-Id: Ifa5912fdfb8803a4269c0c93822f11ce55043602
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8578777
Reviewed-by: Philipp Wollermann <philwo@google.com>
Commit-Queue: Neri Marschik <nerima@google.com>
commit e0074ecc716d743d8b4c1d52b38be670eee6d784
Author: Takuto Ikuta <tikuta@chromium.org>
Date: Thu Oct 15 22:09:58 2026 -0700
siso: claim remote fallback only after receiving first race result
Previously in runRacing, the remote racer goroutine called
b.remoteClaimFallbackIfAllowed and b.setupFallback before sending its
result to ch. This caused two issues:
1. If the local racer finished first and won the race while the remote
racer failed just before observing raceCancel(), the remote goroutine
still incremented b.numFallback, logged a FALLBACK entry, and mutated
step.metrics and step.cmd concurrently with the main goroutine.
2. Because raceRemoteFallback could be sent into ch by the remote
goroutine as the second result, if the local racer was canceled first
and remote failed second, winner became raceRemoteFallback, which hit
the default branch of switch winner.resultType ("both sides canceled")
instead of falling back or reporting the remote error.
Fix this by moving the remote fallback check out of the remote goroutine
and running it in runRacing right after receiving the first result from
ch when first.resultType == raceRemote && first.err != nil.
TAG=agy
CONV=b2c24917-7a75-477d-bade-2445788fb85e
Bug: 571235311
Change-Id: Ib15b452876449e9433dd89c1ffcff9513468e563
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8416705
Auto-Submit: Takuto Ikuta <tikuta@chromium.org>
Reviewed-by: Junji Watanabe <jwata@google.com>
Commit-Queue: Junji Watanabe <jwata@google.com>
commit f4e0fdfeba1251fe15b74c9cc300efc513a4b568
Author: Fumitoshi Ukai <ukai@google.com>
Date: Thu Oct 15 02:39:21 2026 -0700
siso: need to prepare output dirs
if SISO_EXPERIMENTS=disable-ensure-output-dirs,
output dirs are not created at scheduling time,
so need to create output dir at step start time.
restore prepareLocalOutdirs from https://crrev.com/c/5183297
Bug: b/461917619
Change-Id: Ie9fecb9f7cd05e7ba381d741229da59eab831053
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8582467
Auto-Submit: Fumitoshi Ukai <ukai@google.com>
Reviewed-by: Junji Watanabe <jwata@google.com>
Commit-Queue: Junji Watanabe <jwata@google.com>
commit bcf193fd2b80d34d51db31c50d064c52fc96722b
Author: Junji Watanabe <jwata@google.com>
Date: Thu Oct 15 01:03:36 2026 -0700
siso: detach CAS upload operations from the requesting step
In racing mode, when the local racer won while the remote racer was
still uploading inputs to the CAS, runRacing blocked until that upload
finished: uploads used the build context (so that race cancellation
would not poison the uploadOps shared via knownDigests), but runRacing
has to drain the remote goroutine before it can return.
Run uploads independently of the steps that request them. UploadAll
still partitions blobs via knownDigests, but hands the new blobs as
one request to an uploader owned by the reapi.Client, which runs it
under the "reapi-upload" semaphore with the client's lifetime context.
The requester only waits, with its own ctx: canceling it stops the
wait, while the request still completes the shared uploadOps for the
other waiters. Client.Close cancels requests and waits for them.
The semaphore capacity is Limits.Upload (SISO_LIMITS=upload=N). It
defaults to 10*GOMAXPROCS, matching the remoteexec digest semaphore
that already bounds how many steps are in UploadAll, and is reported
in SemaStats. Nested uploads from chunkUpload run inline and never
wait on another request's op, to avoid deadlock under the semaphore.
Bug: 565765743
Change-Id: I3d3877fc698ea271069d1fed9226eda4587dae0b
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8530786
Commit-Queue: Junji Watanabe <jwata@google.com>
Reviewed-by: Fumitoshi Ukai <ukai@google.com>
Auto-Submit: Junji Watanabe <jwata@google.com>
commit f4adb97ffe7581f013b37882dd92f663f8434bd9
Author: Fumitoshi Ukai <ukai@google.com>
Date: Wed Oct 14 22:30:51 2026 -0700
siso: fix typo for disable-ensure-output-dirs
Bug: b/461917619
Change-Id: I16b0ed96ecef20c24eb2f12b131cf68d7bc7e503
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8582328
Auto-Submit: Fumitoshi Ukai <ukai@google.com>
Reviewed-by: Junji Watanabe <jwata@google.com>
Commit-Queue: Fumitoshi Ukai <ukai@google.com>
commit f9cd3004701a196e58f0dd4dc4231aef504fc0b1
Author: Fumitoshi Ukai <ukai@google.com>
Date: Wed Oct 14 22:03:19 2026 -0700
siso: introduce SISO_EXPERIMENTS=disable-ensure-output-dirs
Soong would not require ensure output directory b/461917619
ensureActionOutputDirs.run runs on a single background goroutine
and executes os.MkdirAll(dir.OSPath(), 0755) on ABFS for every
unique output parent directory across all 441,729 outputs!
It slows down in scheduling, nop build.
Bug: b/461917619, b/559843941
Change-Id: Ic9b048568abc98df5a874d6db01e7f6814b8212c
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8576183
Auto-Submit: Fumitoshi Ukai <ukai@google.com>
Reviewed-by: Junji Watanabe <jwata@google.com>
Commit-Queue: Fumitoshi Ukai <ukai@google.com>
commit f267db38f2afdf9aa2b31230a7bff19b0f76c855
Author: Fumitoshi Ukai <ukai@google.com>
Date: Wed Oct 14 19:52:27 2026 -0700
siso: use replacePhony to expand :inputs
sysroot provisioning target may be phony or include phony,
so need to expand phony to create actual sysroot :headers
input deps used for scandeps
Bug: b/570710848
Change-Id: Id4a3151e87d0c6cc85ab0a515de5a29d98554e04
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8547431
Auto-Submit: Fumitoshi Ukai <ukai@google.com>
Reviewed-by: Philipp Wollermann <philwo@google.com>
Commit-Queue: Fumitoshi Ukai <ukai@google.com>
commit 76ef7de898ce466095310d748a9d3a48a4a1d43d
Author: Richard Wang <richardwa@google.com>
Date: Wed Oct 14 00:38:53 2026 -0700
siso: webui share step JSON between pages with steps-store.js
The step viewer table and aggregates pages both use the same data, and
if we're going to start supporting client-side navigation then it's
time to cache them so there's no need for a second metrics load.
Start simple by only caching one build at a time, if you swap builds
the other one gets evicted.
Future pages or components when you navigate around pages for the
same build can still remain fast.
Bug: 533258244
Change-Id: I1f4ec0abd547415b92e910f8cb2a82c56a6a6964
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8492291
Reviewed-by: Junji Watanabe <jwata@google.com>
Commit-Queue: Richard Wang <richardwa@google.com>
commit 1a57612014f50a11d38c5b97945918dcc891ffe2
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 20:02:00 2026 -0700
kajiya: let each executor declare its concurrency cap
The execution service ran at most GOMAXPROCS actions at once, whatever
the executor. That suits local execution, which is CPU-bound, but it
also held the upstream proxy to one action per core while a client can
keep many times more in flight, so proxied actions queued for a local
slot although the upstream schedules them on its own workers.
Add MaxParallelism to ExecutorInterface and size the service's
execution slots from it. The local executor keeps GOMAXPROCS, and the
upstream proxy asks for no limit.
Change-Id: I89d65695bba72dbca66ff46e8e832b1b3d69dee3
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/7806554
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit 9d9ce9322792d9a04dd66cffbe036bd5f0dc917f
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:49:57 2026 -0700
kajiya: add RBE upstream proxy execution mode
A build that uses a remote execution service such as RBE pays a
wide-area round trip for every action cache lookup and blob transfer,
while Kajiya can only run actions on the local machine. Add a mode,
enabled with -upstream_proxy, that forwards Execute to an upstream REAPI
service and keeps the CAS and action cache local: Kajiya uploads the
inputs the upstream lacks and downloads the outputs, so a repeated
action is served from its local action cache without contacting the
upstream. In this mode, ExecutionCapabilities.digest_functions lists
only the functions negotiated with the upstream; the cache keeps serving
all configured functions.
Change-Id: I47c946d438eb9f0b001f3e88be37dc3e0bbca745
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/7806069
Commit-Queue: Philipp Wollermann <philwo@google.com>
Reviewed-by: Neri Marschik <nerima@google.com>
commit b0495fab487b58488fb89fd72718d1201443bd31
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:49:37 2026 -0700
kajiya: pass skip_cache_lookup to executors
Executors see only the model.Action that the service loads from the
Action proto, but an executor that forwards actions to a remote service
must honor the request's skip_cache_lookup by skipping the remote action
cache too.
Record skip_cache_lookup in the model.Action. Merged requests share one
execution and the Action of the request that started it, so merge
requests only when they agree on skip_cache_lookup: REAPI requires that
a request with it set gets a result that was not visible before the
request was sent.
Change-Id: Idd8efd64e065b292dfc975be0ade5b28d9233833
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561834
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit 22025a2c748c69d9b5bbf69bdf8059629b82fa8b
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:49:23 2026 -0700
kajiya: accept TreeDigest in cached ActionResult validation
The action cache's startup validation rejected every output directory
with a TreeDigest, but the local executor reports output directories
only by TreeDigest. Once the cache held such a result, validation failed
on the next start and Kajiya refused to start.
Accept TreeDigest, RootDirectoryDigest, or both, as REAPI allows. For a
TreeDigest, check the Tree blob and the files that it lists.
Change-Id: I311bd4e737d0c29779aca38ea20a7fd5274c1caf
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561833
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit e4a228db520dc6a275e923ba3a78f928b2915f49
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:47:55 2026 -0700
kajiya: don't crash on batch blobs without a digest
With -max_batch_total_size_bytes set, BatchUpdateBlobs added up the
blobs' sizes before it parsed their digests, and dereferenced the digest
of a blob that had none. One such request crashed the server, because
no interceptor recovers from a panic in a handler. BatchReadBlobs had
the same dereference for in-process callers.
Add up the sizes with the protobuf getters, so that a blob without a
digest counts as empty there and fails the digest check as
INVALID_ARGUMENT.
Change-Id: I6a0db66bdbc70532f5700c3afecb1d5a5feed62b
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561832
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit d7a5b0968307a75705e3eb12ee78c9cf00b0dfb2
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:47:48 2026 -0700
kajiya: report real mtimes for FuseFS inputs without one
Siso sends no NodeProperties for inputs. Under the FuseFS sandbox, such
a file reported an mtime in year 1, and such a directory reported the
Unix epoch. Python's datetime.fromtimestamp raises on year 1, and
zipfile rejects any timestamp before 1980, so tools that read input
mtimes failed.
Report the CAS blob's mtime for a file, which the other sandboxes show
through their hard links to the CAS, and the registration time for a
directory, as a directory created for the sandbox would show.
Change-Id: I7c13e844cb1df69d8c6123927962f1e3e66e2fe9
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561831
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit 1660a5f9fa1c7853e47618d25917954ec53a3eb2
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:47:41 2026 -0700
kajiya: keep identical FuseFS input files independent
With the FuseFS sandbox, input files with the same content shared one
inode. That inode reported the mode and mtime of whichever path
registered it first, in any sandbox, so an executable input could lose
its execute bits. Since the inode also reported no links, overlayfs
took all its paths in one sandbox for the same file: a write to one of
them showed through the others.
Share a file inode only among paths with the same attributes, and
report two links. overlayfs then gives each path an inode of its own
and breaks the link on copy-up, as it does for the CAS hard links that
the OverlayFS sandbox uses. Actions see a link count of 2 instead of 0
on input files.
Change-Id: I0ddfb3167ac9c264d60940a2893b303cf763fb69
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561830
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit 99e16c923a665c2819cc98b2c49966571ec59b24
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:40:34 2026 -0700
kajiya: fix ESTALE on a FuseFS input directory at two paths
With the FuseFS sandbox, an action whose input root holds the same
directory at two paths failed with "Stale file handle" once one of the
paths had an upper directory, for example when two empty directories
each hold a declared output. FuseFS cached directory inodes by digest
and served one at every path with that digest, in every sandbox. The
kernel keeps one dentry per directory inode and moves it to each path
that is looked up. overlayfs gives all paths of one lower directory a
single inode, whose upper directory can belong to only one of them.
Create a directory inode for each path in each sandbox, and share only
file inodes, which may have any number of names. When unregistering a
sandbox, unlink its files from the shared inodes and invalidate its
dentries, so that neither go-fuse nor the kernel keeps its directories
alive.
BenchmarkFuseE2E gives every sandbox the same 65536-file directory,
the best case for the digest cache. About 60% of the slowdown is
linking every file into each sandbox. The rest is rereading files
whose page cache the kernel drops with the sandbox's dentries, about
900 READs per op (AMD Ryzen 9 9950X3D, 32 parallel workers, medians
of 8 runs):
before: 4.5 ms/op, 2.5 MiB/op, 61k allocs/op
after: 11.5 ms/op, 45.8 MiB/op, 616k allocs/op
Change-Id: I22baa5498248ca9f7e504fca843519e6745ff566
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561829
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit 990663a13e66e7dcd017a92243a4c65a5686fe7f
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:40:26 2026 -0700
kajiya: keep symlink outputs that dangle in the sandbox
Kajiya tried to strictly implement REAPI 2.0's semantics for the
output_file_symlinks and output_directory_symlinks fields, which
requires stat'ing all symlink outputs to determine the type of file they
point to. This by design means that dangling symlinks were not possible
to support, and also caused symlink outputs that pointed to input files
to get accidentally dropped when using the overlayfs sandbox. REAPI 2.1
recognized that splitting outputs by type is problematic and merged the
lists into just output_symlinks. In practice, Bazel and Siso just merge
these lists into one anyway when they talk to a REAPI 2.0 server.
Kajiya now simply reports each symlink output in the list matching the
type that the action expects them to have, which resolves the issues and
works for all our clients.
Change-Id: I88d07d1563dcee2e62b8cfe4c79631f8e5d9f5f7
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561828
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit ebb6f6e7781856e0862587e698e95e5b2ff56f39
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:40:19 2026 -0700
kajiya: tell GetTree clients which directories are missing
GetTree failed with NOT_FOUND when any Directory of the tree was missing
from the CAS, and named only the first one. REAPI reserves NOT_FOUND
for a missing root, so a client couldn't tell a missing root from a
missing subdirectory, or learn which directories to upload.
Return NOT_FOUND only for a missing root. For other missing directories,
fail with FAILED_PRECONDITION and a MISSING violation for each one that
the present part of the tree refers to, as Execute does for missing
inputs.
This deliberately deviates from REAPI, which asks GetTree to succeed
with only the part of the tree that is present, without telling the
client that anything is missing. Failing is safer, because no client
can mistake a partial tree for a complete one, and it spares careful
clients from hashing every Directory they receive to look for gaps. It
also keeps paging simple. The breadth-first order of a complete tree
depends only on its root digest, so a resumed stream can't skip or
repeat directories that were uploaded between two pages. RBE and
NativeLink also fail instead of returning a partial tree.
Change-Id: Ibbc993685007e36894c8eef06da43b2bfa2e714f
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561827
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit 5775d18c4c7c42029fcbd84bd0096d00b05b7d42
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:40:12 2026 -0700
kajiya: build the missing-blobs status in MissingBlobsError
Execute turned a *MissingBlobsError into a FAILED_PRECONDITION status
with a MISSING violation per blob in a private helper, so no other RPC
could report missing blobs the same way. Move it to a Status method on
MissingBlobsError. This changes no behavior.
Change-Id: Iac650983b4a04c71fc78cc7aeeab56eee2b143ea
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561826
Commit-Queue: Philipp Wollermann <philwo@google.com>
Reviewed-by: Neri Marschik <nerima@google.com>
commit eda3c3660539e08fecd88f32dae494f317723de5
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:40:04 2026 -0700
kajiya: advertise node properties under their REAPI names
GetCapabilities listed the supported node properties as "MTime" and
"UnixMode", but REAPI keys the standard properties by their field names
in NodeProperties, which clients such as BuildStream send as "mtime".
Advertise "mtime" and "unix_mode" instead.
Change-Id: I45162ae958fb07f220b5bc975bc71e20f698c246
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561825
Commit-Queue: Philipp Wollermann <philwo@google.com>
Reviewed-by: Neri Marschik <nerima@google.com>
commit 84b2151e768a41f9d2e53d4a3ea23de51d14215b
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:32:57 2026 -0700
kajiya: stop EnsureDirectory at the first failed directory
EnsureDirectory walked every directory of an input tree and stored each
directory's result in the same error variable, so a failure in any
directory but the last one walked was overwritten and EnsureDirectory
returned nil. The nested overlayfs sandbox then set up an overlay mount
whose lower directory didn't exist, and the client never got the error
that names the missing blobs. Stop the walk at the first failure and
return its error.
Change-Id: I360119e9a6a546a1d5600f9fd5cd96ec44a4c8f0
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561824
Commit-Queue: Neri Marschik <nerima@google.com>
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit f60375bb35e6d271d49a4098a7aed379e29351dd
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:32:22 2026 -0700
kajiya: reject UpdateActionResult without an action result
An UpdateActionResultRequest without an action_result made the handler
dereference a nil pointer. No gRPC interceptor recovers from panics, so
one such request crashed the server. Reject it with INVALID_ARGUMENT
before using the result.
Change-Id: I4030842fa3cd4f305146ec57e073f3cddb1d63b4
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561823
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit f9d467b4260e2597e65d766ddbb756a8f47a119e
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:32:14 2026 -0700
kajiya: remove sandboxes with unreadable directories
When RemoveAll fails, deleteSandbox adds the owner's write bit to every
directory and tries again. But RemoveAll also has to read a directory
to list it and search it to unlink its entries, so a non-empty
directory that an action left without those bits, such as one with
mode 0000, kept the sandbox on disk. Give the owner read, write and
search permission instead.
Change-Id: I5bd4932c1fc9da8235eb52f40da118e247d3b36e
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561822
Commit-Queue: Philipp Wollermann <philwo@google.com>
Reviewed-by: Neri Marschik <nerima@google.com>
commit 898a686bb11751e2c1fd3e38e1c49087fa17c0f2
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:32:06 2026 -0700
kajiya: don't crash removing a sandbox without work/
The WalkDir callbacks in deleteSandbox used d without checking err, but
WalkDir passes a nil d when it can't stat the root. The first walk
starts at the sandbox's overlayfs work/ directory, which the files
strategy (the default outside Linux) never creates, and which the other
strategies lack when Prepare fails before creating it. The resulting
panic in Execute's deferred cleanup crashed the server and left the
sandbox behind, so every later start crashed again while removing it.
Skip entries that WalkDir reports an error for.
Change-Id: I5ec79b9f5ce8120ae5f2cbcc67e3400a1dd7e511
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561821
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit def04ba3555ab5a0da7ea8b71e0bc37bb689e9d0
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:31:58 2026 -0700
kajiya: report symlinks in output directories as symlinks
buildMerkleTree treated every non-directory entry of an output
directory as a file, so a symlink was hashed through the link and
reported as a copy of its target. When the target's content wasn't in
the CAS yet, the link itself became the CAS blob. A symlink to a
directory or a dangling symlink failed the action.
Record each symlink as a SymlinkNode with the target stored in the
link, and leave it out of the CAS.
Change-Id: Ia4a3ad96330f366ba405c36cfb0880ef91a670f2
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561820
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit 95f859b7ca82e93d13eda68b113e6a78f3ecdffe
Author: Philipp Wollermann <philwo@google.com>
Date: Tue Oct 13 19:30:16 2026 -0700
kajiya: report symlink outputs with their stored target
UploadOutputs set OutputSymlink.target from the os.Stat result, which
follows the link, so every symlink output was reported with its own
basename as the target, and a client that materialized it got a link
pointing at itself. Read the target with os.Readlink instead.
Change-Id: I07f883602040d813b2f4fa84097daa772b4fa70d
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8561819
Reviewed-by: Neri Marschik <nerima@google.com>
Commit-Queue: Philipp Wollermann <philwo@google.com>
commit 642d76ad3bb4d44a0a510e7aa2e3be949dd4ed13
Author: Fumitoshi Ukai <ukai@google.com>
Date: Tue Oct 13 05:32:30 2026 -0700
siso: concurrent compute in digester.stop
Bug: b/360961799
Change-Id: Id83efb5bddb6d0b387e1f264eed1c4ed09d1d604
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8547170
Auto-Submit: Fumitoshi Ukai <ukai@google.com>
Reviewed-by: Junji Watanabe <jwata@google.com>
Commit-Queue: Junji Watanabe <jwata@google.com>
commit 15b2b130964f2e78f585a76d4ec43890dfa0d28f
Author: Richard Wang <richardwa@google.com>
Date: Tue Oct 13 02:20:49 2026 -0700
Enforce subtest name linter on majority of the repo
That is, bench, hashigo, kajiya, kzipinfo, remote-apis,
infra/subtestanalyzer.
gong and siso-tap are excluded.
Bug: 539831698
Change-Id: If321855bc6553eb447174f2119027dba6a6a6964
Reviewed-on: https://chromium-review.googlesource.com/c/build/+/8567400
Reviewed-by: Takuto Ikuta <tikuta@chromium.org>
Commit-Queue: Richard Wang <richardwa@google.com>