-
-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat/cobble #218
base: main
Are you sure you want to change the base?
Feat/cobble #218
Conversation
When installing cobbled packages, they won't be known on sync. Discard those packages from state instead of erroring out. TODO: How can we pin cobbled packages?
Perhaps my expectations are the issue here, but in my head, the whole point of cobble is to be able to run commands "as-is" on .stones without having to install them? My test case (which doesn't work):
|
Yeah the dropping of stones seems wrong to me tbh. Really sideloaded means "i'm pushing this in and above the defaults" so would need the concept of pinning by way of state selections I would imagine. Until the user unpins or restores the cobbled package (ie. "my system is cobbled together from these stones ...") we continue trying to resolve transactions until they inevitably break our dependency graph. |
A potential "workaround" here actually is layering cobble atop a repo plugin. Such that, any time we "sideload" a stone (or set of stones) we promote from their evaluation site into a staged cobble repository, which just so happens to have a higher priority than everything else. Eliminates the need for pinning support, and deviates from the |
The only time cobble has interest for me is for when I'm doing quick tests for packaging validation purposes. Hence, to me, cobble should be explicitly designed to support that use-case. That said, is there a use-case here where we might use cobble to drive bootstrap logic via building "dirty" .stones outside of containment (so using local environment deps instead of boulder-controlled .stone deps)? If so, those are the two use-cases I could see as being useful for cobble. To me, sideload equates creating a convenient shorthand for using a "normal" local repo and managing that. That might imply that we're better off having I think we need to be very careful re. using the cobble plugin only for very well defined edge cases, such that normal users don't get caught in a trap they can't easily get out of if they use it by mistake -- or because the "sideload" terminology tempts them into building a mental model which is not actually accurate from a moss perspective. |
The other option here is that cobble completely removes the need for local repos to be indexed -- cobble takes care of that? In this scenario, cobble actually becomes the mechanism for handling local repos, with the caveat that you can only have one "saved state" of a cobble repo and that's always "what it looks like now". FWIW, this is basically the model Ikey described above (just worded a bit differently) I think? I'm still on the fence re. which model I prefer; in this scenario, cobble basically replaces the idea of having to manually index local repos? I have to admit that I haven't quite sussed out the implications of the model where cobble replaces indexed local repos. There's a part of me that insists that this is not a good idea, because it trains users to have the wrong expectations re. how a moss-format repo is managed on a larger scale... |
I think we need to accept that with the idea of a versioned recipe repo being brought into being as a versioned moss-format repo revision, we MUST therefore only pin to a distribution revision. This also has implications for the FWIW, full-repo revisions (supported by "rebuild until sane" DAG logic) is what Conary did, and it worked brilliantly with the |
Resolves #205
Currently cobble installed packages are "ephemeral" and will get dropped on the next
sync
. Users should add the stones to a local repo to get persistence, or we need to come up with some idea of pinning cobbled stones.