Hi Spence, all that I'm watching is the difference between the version_code
values as published on the ASU server and on the downloads site, as this was historically a major issue. The downloads site should be the "source of truth" as it's all populated by the build bots at the end of a specific target build, then the ASU server picks up the changes and publishes them there.
The when some client (auc
, owut
, LuCI Attended Sysupgrade, Firmware Selector) submits a build request, they can pickup (or not!) the version code from either site and submit it (or not!) in the build request. If it is submitted, it becomes part of the hash key that becomes the signature for the build cache (basically hash = sum(packages requested) + version_code + other stuff).
If the signature doesn't get a cache hit, then ASU build server creates a new docker imagebuilder by downloading target/board/imagbuilder.tar.gz and tries to use that for the build. One of the first steps that the ASU server takes is to make sure that if the client explicitly specified version_code
, that it matches what the imagebuilder is actually building. All that happens here: https://github.com/openwrt/asu/blob/main/asu/build.py#L72
If the version code was not specified, ASU server just carries on and gives you whatever it has on hand. This is what LuCI ASU does - no version_code
, which is why sometimes it "works" when FS croaks on "incorrect version blah blah".
But, getting back to the question at hand after my wall-of-text preamble: The package versions play no role in any of this. They are not part of the hashing and thus the signature is identical regardless of whether they've been rebuilt. That may be the root cause of @ahuman's issue, I need to look deeper into this (if it's not deep enough already).
Anyhow, at the bottom is what I've been monitoring. I have an hourly cron job that grabs both the ASU server and download sites' metadata, and compares the version codes. If they differ, then that's logged. Back in Olden Times, like 2-3 weeks ago, the delays between updates were often many hours, sometimes days. Since Paul's "webhook commit" rewrite of ASU server's update code, this has dwindled to sometimes the builds I'm watching appearing once, on rare occasion twice in a row. This means that the updates are happening within the 60-minute window of my cron job, and probably a lot quicker than that for successful builds.
Example from my log just now "as=" is ASU server's data; "bs=" build server, then date and d=target-version should be obvious. Note here that the ASU server got ahead of the build server. Not sure how this is happening, but it is fairly common now, rather than the old behavior which was reverse and with big lags.
Well, I said a lot of stuff, I hope some of it makes sense and/or clarifies things.
2024-06-28T20:00:04+00:00 bs=r26809-7c9644a7b5 as=r26810-7c32295b00 d=x86/64-snapshots
2024-06-28T20:00:07+00:00 bs=r26809-7c9644a7b5 as=r26810-7c32295b00 d=ipq40xx/generic-snapshots
2024-06-29T00:00:02+00:00 bs=r26810-7c32295b00 as=r26811-007437c225 d=mediatek/mt7622-snapshots