fuelup icon indicating copy to clipboard operation
fuelup copied to clipboard

Rework the component selection such that we can select versions for individual versions for sway repo as well

Open kayagokalp opened this issue 1 year ago • 3 comments

We can select arbitrary versions at repo level, we can pin fuel-core to x.y.z and sway repo to x.y.z at a specific toolchain. But we cannot change versions of forc-deploy, forc-lsp indiuvally as they are packed in sway repo.

We need this because we from some time to time, require to patch only a single component.

kayagokalp avatar May 06 '24 23:05 kayagokalp

See here for more info on how we have done this manually in the past

JoshuaBatty avatar Jun 25 '24 00:06 JoshuaBatty

We could look at adopting how tracing approaches releases within their mono repo. Instead of releasing everything at once, they are able to release individual components. Would be worth looking closer into. https://github.com/tokio-rs/tracing/releases

JoshuaBatty avatar Jun 25 '24 23:06 JoshuaBatty

That would be great not just for fuelup but for also being able to version library crates separately from binary ones in sway repo. This would enable us to actually adhere to semver for all of our crates. For an intermediate solution or a first step that does not change the release process, we can upload each artifact separately to sway repo artifacts for each release. Currently they are packed, what fuelup does is that for each forc* component it unpacks & find it from the file downloaded from that link. If we upload them seperatly then we can indivually link them in the component.toml file.

date = "2024-04-04"

[pkg.forc]
version = "0.49.3"

[pkg.forc.target.linux_amd64]
url = "https://github.com/FuelLabs/sway/releases/download/v0.49.3-patch.1/forc-binaries-linux_amd64.tar.gz"
hash = "..."

[pkg.forc.target.linux_arm64]
url = "https://github.com/FuelLabs/sway/releases/download/v0.49.3-patch.1/forc-binaries-linux_arm64.tar.gz"
hash = "..."

[pkg.forc.target.darwin_amd64]
url = "https://github.com/FuelLabs/sway/releases/download/v0.49.3-patch.1/forc-binaries-darwin_amd64.tar.gz"
hash = "..."

[pkg.forc.target.darwin_arm64]
url = "https://github.com/FuelLabs/sway/releases/download/v0.49.3-patch.1/forc-binaries-darwin_arm64.tar.gz"
hash = "..."

[pkg.forc-deploy]
version = "0.50.0"

[pkg.forc.target.linux_amd64]
url = "https://github.com/FuelLabs/sway/releases/download/v0.50/forc-binaries-linux_amd64.tar.gz"
hash = "...."

[pkg.forc.target.linux_arm64]
url = "https://github.com/FuelLabs/sway/releases/download/v0.50/forc-binaries-linux_amd64.tar.gz"
hash = "...."

[pkg.forc.target.darwin_amd64]
url = "https://github.com/FuelLabs/sway/releases/download/v0.50/forc-binaries-linux_amd64.tar.gz"
hash = "...."

[pkg.forc.target.darwin_arm64]
url = "https://github.com/FuelLabs/sway/releases/download/v0.50/forc-binaries-linux_amd64.tar.gz"
hash = "...."

Uploading them individually would enable us to mix & match different versions. On top of this, if we add the ability to release individual members of the workspace from sway repo, we can do any arbitrary release without interfering it manually.

kayagokalp avatar Jun 26 '24 13:06 kayagokalp