all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* upgrade to new version of packages with lots of dependencies--installing new versions along first?
@ 2024-09-06 20:54 Andy Tai
  2024-09-10 21:26 ` Greg Hogan
  0 siblings, 1 reply; 2+ messages in thread
From: Andy Tai @ 2024-09-06 20:54 UTC (permalink / raw)
  To: guix-devel

Hi, this is nothing new and clearly has been the case for a number of
packages in Guix.

For packages that have not of dependencies (say 300 or more) updating
to new versions have been increasingly difficult, as lots of rebuilds
needed and Guix QA is really overwhelmed  (it seems).

For other reasons like API compatibility some such packages exist in a
state of multiple versions, with old versions sticking around to
satisfy other packages depending on them. Example: samba and
samba-next

Maybe this can be generalized for packages with lots of dependencies,
say for any package A with 300 (or 1000) dependencies, when upgrading
to a new version, add that as A-next so existing A is not touched.
Then A-next can be added without any dependencies, and Guix QA just
needs to check if A-next builds.   Then people working on any package
depending on A can move that package to depending on A-next later
independently.   This avoid triggering world rebuilds.  And A's
dependents migrate at their own flow.

Or a feature branch can still be used for these migrating dependencies
but A-next can be added to master first and made available, without
waiting for a feature branch to be merged

Is this workable idea?


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: upgrade to new version of packages with lots of dependencies--installing new versions along first?
  2024-09-06 20:54 upgrade to new version of packages with lots of dependencies--installing new versions along first? Andy Tai
@ 2024-09-10 21:26 ` Greg Hogan
  0 siblings, 0 replies; 2+ messages in thread
From: Greg Hogan @ 2024-09-10 21:26 UTC (permalink / raw)
  To: Andy Tai; +Cc: guix-devel

On Fri, Sep 6, 2024 at 4:56 PM Andy Tai <atai@atai.org> wrote:
>
> Maybe this can be generalized for packages with lots of dependencies,
> say for any package A with 300 (or 1000) dependencies, when upgrading
> to a new version, add that as A-next so existing A is not touched.
> Then A-next can be added without any dependencies, and Guix QA just
> needs to check if A-next builds.   Then people working on any package
> depending on A can move that package to depending on A-next later
> independently.   This avoid triggering world rebuilds.  And A's
> dependents migrate at their own flow.

Does the manual upgrade of dependent packages happen in practice
outside of receiving an error due to an unsatisfied minimum version?
For example, `fmt-9` (the default) has 1812 dependent packages whereas
`fmt-10` and 'fmt-11' have none even though the former was added in
June 2023.

It would be handy to automate the dependency upgrade process when a
new package version can be built with a new library version. Likewise,
automated, bulk migrations of dependent packages when adding a new
library version. An example of the former: when upgrading mariadb and
after a successful build, `guix` could be requested to upgrade and
build with `fmt-11`, then on failure upgrade and build with `fmt-10`,
then on failure leave the input unchanged as `fmt-9`.

When upgrading the library itself, for example switching the default
`fmt` from `fmt-9` to `fmt-10`, it is almost certain that many
packages will break even after the long delay for those dependent
packages to be upgraded. I believe this to be a major contributor to
the number of broken builds on the master branch, and automating
piecewise upgrades should reduce this problem and ease the burden on
the contributor.

As I understand, there would be cases where multiple packages need to
be upgraded together, in particular when propagating inputs. This
works today when we upgrade a common default version but we could see
an increase in package conflicts as dependencies diverge.

It would be necessary, or at least very helpful, to couple the package
versions together (ordered by precedence) alongside the package
definitions.

Greg


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-09-10 21:27 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-06 20:54 upgrade to new version of packages with lots of dependencies--installing new versions along first? Andy Tai
2024-09-10 21:26 ` Greg Hogan

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.