Re: Guarantee of no broken dependencies?
Hi Peter, Peter Polidoro 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
Re: Guarantee of no broken dependencies?
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 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?
Guarantee of no broken dependencies?
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?