* Guarantee of no broken dependencies?
@ 2023-11-10 12:37 Peter Polidoro
2023-11-10 14:00 ` Ignas Lapėnas
2023-11-10 14:22 ` Maxim Cournoyer
0 siblings, 2 replies; 3+ messages in thread
From: Peter Polidoro @ 2023-11-10 12:37 UTC (permalink / raw)
To: help-guix
For every commit to the Guix master branch, is there a guarantee that there are no packages with broken dependencies?
I have not experienced packages with broken dependencies, so I am curious how that is checked. In theory, someone could make a commit that accidentally breaks other packages correct? Aren’t most inputs just found by name, not name and version or hash?
Do packages not get broken, though, because right before every commit the updated package is built, along with every package that depends on the updated package? Is that enough to make sure all dependencies are fine? There are no race conditions with other people making updates at the same time?
How can we do such a consistency check or have such a guarantee when we use multiple channels? Does we just rebuild every package in every non-Guix channel every time we update Guix to find out what breaks?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Guarantee of no broken dependencies?
2023-11-10 12:37 Guarantee of no broken dependencies? Peter Polidoro
@ 2023-11-10 14:00 ` Ignas Lapėnas
2023-11-10 14:22 ` Maxim Cournoyer
1 sibling, 0 replies; 3+ messages in thread
From: Ignas Lapėnas @ 2023-11-10 14:00 UTC (permalink / raw)
To: Peter Polidoro; +Cc: help-guix
If a borked dependency will be uploaded, every build that depends on such a
dependency will change hash, and therefore will have to be rebuilt. The build
process also includes testing.
Since all updates are atomic, if any one package fails nothing gets updated, and
you can continue using your stable Guix system.
There is a possibility that an update to a common dependecy will break some of
the child packages (API changes). Unless you are affected by such a child
package your update will gladly use the breaking dependency.
If you need to find out if a child package still works after an update, then you
have to build it and test it with a new package. Normal development workflow
continues.
Peter Polidoro <peter@polidoro.io> writes:
> For every commit to the Guix master branch, is there a guarantee that there are no packages with broken dependencies?
>
> I have not experienced packages with broken dependencies, so I am curious how
> that is checked. In theory, someone could make a commit that accidentally breaks
> other packages correct? Aren’t most inputs just found by name, not name and
> version or hash?
>
> Do packages not get broken, though, because right before every commit the
> updated package is built, along with every package that depends on the updated
> package? Is that enough to make sure all dependencies are fine? There are no
> race conditions with other people making updates at the same time?
>
> How can we do such a consistency check or have such a guarantee when we use
> multiple channels? Does we just rebuild every package in every non-Guix channel
> every time we update Guix to find out what breaks?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Guarantee of no broken dependencies?
2023-11-10 12:37 Guarantee of no broken dependencies? Peter Polidoro
2023-11-10 14:00 ` Ignas Lapėnas
@ 2023-11-10 14:22 ` Maxim Cournoyer
1 sibling, 0 replies; 3+ messages in thread
From: Maxim Cournoyer @ 2023-11-10 14:22 UTC (permalink / raw)
To: Peter Polidoro; +Cc: help-guix
Hi Peter,
Peter Polidoro <peter@polidoro.io> writes:
> For every commit to the Guix master branch, is there a guarantee that
> there are no packages with broken dependencies?
There's no strong guarantee; we rely on people having well tested their
changes and reviewing what QA had to say about it. Any unexpected
breakage can be caught by Cuirass notifications and hopefully acted on
quickly.
In the future, we'd want to have QA and or Cuirass gate the merge, to
ensure the change (and all impacted packages) were properly built before
being merged.
> I have not experienced packages with broken dependencies, so I am
> curious how that is checked. In theory, someone could make a commit
> that accidentally breaks other packages correct? Aren’t most inputs
> just found by name, not name and version or hash?
The inputs are referenced exactly, via their Scheme variable name.
> Do packages not get broken, though, because right before every commit
> the updated package is built, along with every package that depends on
> the updated package? Is that enough to make sure all dependencies are
> fine? There are no race conditions with other people making updates at
> the same time?
No race condition, thanks to Git; but after rebasing a change on master,
it should be rebuilt and retested ideally.
> How can we do such a consistency check or have such a guarantee when
> we use multiple channels? Does we just rebuild every package in every
> non-Guix channel every time we update Guix to find out what breaks?
I'd suggest setting up a private Cuirass instance testing your channel.
That's actually easier painful than it sounds.
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-11-10 14:23 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-10 12:37 Guarantee of no broken dependencies? Peter Polidoro
2023-11-10 14:00 ` Ignas Lapėnas
2023-11-10 14:22 ` Maxim Cournoyer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).