Skip to content

Make bump a verb, http.tool() public and allow specifying a custom go toolchain - #321

Merged
daandemeyer merged 5 commits into
amutable-systems:mainfrom
daandemeyer:push-ptuxsyovvsol
Oct 16, 2026
Merged

daandemeyer merged 5 commits into
amutable-systems:mainfrom
daandemeyer:push-ptuxsyovvsol

Conversation

@daandemeyer

Copy link
Copy Markdown
Member

No description provided.

Updating the pins takes `tine buck run tine//bump`, which only covers the
tine.lock.json of tine itself. A consuming project has to find the driver
target and pass its own tine.lock.json and ty configuration by hand. The
command also needs a working Buck2 from the current pins, and the Buck2 pin is
one of the pins it updates. Let's move bump into bin/ and run it as `tine
bump`, on the tine.lock.json and the ty configuration of the project that it
runs in. Like a Buck command, the verb runs the bin/tine of the project's tine
cell.

Signed-off-by: Daan De Meyer <daan@amutable.com>

@martinpitt martinpitt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

Comment thread docs/user/http.md Outdated
http_tool is defined in tools/defs.bzl, which isn't part of tine's public API. A
project that wants a prebuilt tool has no supported way to declare one. Let's
move http_tool and its zstd decompressor into http/ and export it as
http.tool.

Signed-off-by: Daan De Meyer <daan@amutable.com>
http.tool only downloads GitHub release assets, and it only outputs a single
program. Go publishes its releases on go.dev, and go reads its standard library
from the directory around bin/go, so http.tool can't download a Go toolchain.
Let's take a download url as an alternative to a GitHub repository, and add
directory to output the whole unpacked archive.

Signed-off-by: Daan De Meyer <daan@amutable.com>
bump only knows GitHub releases. A tool that is published elsewhere, such as Go
on go.dev, has to be updated by hand: someone looks up the newest release and
every digest and size. `bump --all` also fails on such a pin. Let's support
pins with a url. A pin can name an index of releases and a pattern, and we take
the highest version that matches the pattern. The index can be any page, so we
don't rely on it to list digests. We download each artifact of the new release
to compute its digest and size, and fail when a download ends early.

Signed-off-by: Daan De Meyer <daan@amutable.com>
go.package always builds with the go that the box installs, so a project can
only use the Go version that its distribution ships. A project that pins an
older release or needs a patched fork can't build. Let's add toolchain, a Go
root directory such as an unpacked upstream release. The toolchain's go runs
the module fetch and the build, so the box doesn't need the golang package.
We pin Go in tine.lock.json for the example and download it with http.tool.

Signed-off-by: Daan De Meyer <daan@amutable.com>
@daandemeyer

Copy link
Copy Markdown
Member Author

Just a comment change, not waiting for CI

@daandemeyer
daandemeyer merged commit d6bb2ca into amutable-systems:main Oct 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants