Re: Modularity and all the things

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Adam!

On Tue, 2019-11-05 at 15:24 -0800, Adam Williamson wrote:
> This has a few consequences I can think of. For a start it means the
> actual problem we're currently having with our current module streams
> wouldn't necessarily be solved by your system - we could've run into
> exactly the same problem, more or less; the libgit2 package could've
> declared a '0.27' stream in F29 and then decided that in F31 it
> wanted
> everyone on the '0.28' stream, or something like that. We still have
> the potential problem of needing to define rules and implement
> mechanisms for stream transitions at release boundaries, essentially.

Yeah agreed, there does need to be a way to express what to do upon
release boundaries. Though Gentoo does not have releases, they do still
have "slots" that go from being "supported" to being unsupported (which
is to say, dropped from the repository). I personally think this is
somewhat similar to "upgrading from F29 to F31", with the obvious
exception that in Gentoo there isn't a coordination point for *when*
packages will do this. This means that on any given day, you could find
out that the stream you are using is gone now. That's part of the fun
of Gentoo! (I'm not saying we should do that).

In Gentoo, when a package goes from supported to unsupported, you are
going to have to switch to a supported slot/stream. Typically, the
package manager does this for you (and it has notation on the upgrade
command that shows you that you are switching slots so you can be
informed.) Sometimes there can be conflicts, but I think "more
conflicts" is just one of the consequences of allowing different
packages to require conflicting dependencies (not every package in
Gentoo is parallel installable, so you can hit conflicts this way.)

I agree with you that "we have to decide what to do" is true here too.

I think that having this one problem in common is OK though, given that
I think it will be easier for our packagers to make use of it.

> Another one - how does this work on the packaging end? Do I have some
> sort of combinatorial explosion of dist-git branches for 
> "release+stream", so that if I introduce a stream called 'foo' I get
> an an f29-foo git branch, an f30-foo git branch, an f31-foo git
> branch and a master-foo git branch? Then I get another four branches
> for each new stream? And each time a release comes out I get X new
> branches, where X is the amount of streams that exist? Or would there
> be another way to do it?

Yeah this is a great question. I do think this problem is the same for
modularity as it is for what I'm suggesting too, like the above
problem. It's just that it splits the combinatorics between two dist-
git repos instead of one.

I can think of a few ways. I've actually been thinking about how our
dist-git works a lot lately, and have some thoughts.

So we could keep doing what modularity has done, where the branch names
are the streams, and not Fedora versions. You don't strictly have to
build a Fedora package from the given release today. I (rarely) have
built the master branch for a stable release, because the spec file had
nothing in it that was special for any particular Fedora version. So we
could just have stream names as the branches, just like modularity
already did, and then just point Koji at it with the build target you
want (to get the matrix of Fedora versions).

Or, we could do things more differently! In Gentoo, their spec files
are called ebuilds, and you just put n ebuilds in the repo at a time,
corresponding to the version of the package that the ebuild is for.
Now, this results in some copying, which is certainly a drawback, but
you could imagine naming the spec file with the stream as part of it or
something like that. Here's an example:

https://github.com/gentoo/gentoo/tree/master/dev-lang/python

Or we could go crazy on the combinatorics with the stream and Fedora
version, like you hinted at above (prob not ideal).

Here's a neat idea though: there was also a thread a month or three ago
where Jeremy Cline suggested using git tags to indicate the version,
release, and even user facing update notes (in the tag message body).
What if we extended that idea to also allow notating the stream and
Fedora/EPEL version in the tag? Then, the meaning of the branches is
completely up to the packager - they can devise a branching strategy
that works for them, as they see fit, and they just tag certain
commits, in any branch they please, with the FNESVR (Where F is the
Fedora/EPEL version) that they want to turn that commit into. For
packagers who want to put the same spec file in all branches today (I
think Kevin Koffler often likes to do this), they can just maintain a
master branch and not bother with all the merging, and just add a few
tags to indicate the releases they want to go out. For packagers who
are maintaining pretty divergent spec files for different Fedora/EPEL
versions, or divergence due to streams, they can make the branches that
make sense to them to help manage that complexity.

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux