-
Notifications
You must be signed in to change notification settings - Fork 72
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
separate gtk4 from gtk-3 #329
Comments
Hi! I would not mind in principle (certainly not if this is really needed for packaging to be possible at all!), but I would like to understand the situation better, if you don't mind. Why is it not possible to have two fedora packages from different versions of the same hackage package? It feels a little bit strange to me having to use the name of the package to encode the major version, having a version field just for that. One thing that worries me is that having separate packages, together with the original Would it be possible at all to create a Thanks! |
We can think about it - it is not really urgent yet - gtk4 adoption is just in the early stage now. |
Also if you think in terms of Stackage, it would mean having to decide whether to use gtk3 or gtk4. Personally I would vote for moving to gi-gtk3 and gi-gtk4. |
Thanks for the comments! I am still a bit unclear, sorry. Is it technically not possible to have separate gi-gtk4.spec and gi-gtk3.spec files that wrap different versions of the same haskell package? (Perhaps Fedora is doing something more sophisticated than individual spec files?) At the level of Haskell one can have different versions installed, at least with the nix-style cabal store, but perhaps there is an issue installing things globally?
Yes, I was thinking about this. I agree that we'll need to choose, but it might actually be a good thing. In fact, in the past I have considered removing the The biggest upside to keeping the Anyway, this is just a long way to say that if someone sent a pull request for making separate |
Just a thought: even if it's a little confusing, keeping Does this sound reasonable? |
Yeah that could work - but it makes app dependencies more awkward I fear? This may also affect Debian/Ubuntu - I don't know if Debian Haskell supports multiple lib versions - Since gtk3 and gtk4 are basically incompatible I am not sure keeping them under the same gi-gtk |
I think I could certainly help with gi-gtk4. Naively it looks like roughly all that is needed is I am slightly confused about gdk4 - I thought gtk4 uses gdk3 (at least in current Fedora), but I am no expert on this - maybe it can use either? |
Sorry for the slow reply!
On the technical side I think that's pretty much it :) The part that is less clear to me is the more "social" part, so to speak. It is a bit too late to get rid of But, as you say, this is problematic for fedora and stack, which seem to have trouble with parallel installation. Having separate So my preference, as it stands, would be to support just the latest (or no) version of Fedora is less clear to me, because I don't have a good idea of what's involved. Ideally it would be possible to generate
This sounds surprising to me, I think that <include name="Gdk" version="4.0"/> |
Coming back to this... Happy New Year! I would like to move Stackage Nightly to gi-gtk-4 soon, but we can't because taffybar is still on gtk3 and probably will be for the foreseeable future... As the maintainer also mentioned, I too really wish that haskell-gi would provide multiple versions of gtk (gtk3, gtk4 (and yes gtk5 will be coming)). |
Happy New Year! I agree, for stackage it seems necessary to provide separate gi-gtk3, gi-gtk4 packages (and a few others, I expect: gi-gdk and webkitgtk come to mind). It is a bit of a question to me what to do with the packages without the version in the name. It seems reasonable to me to keep them functioning as they do now: gi-gtk-4.x would just re-export everything from gi-gtk4-4.x, and gi-gtk-3.x would re-export everything from gi-gtk3-3.x. Keeping the links in the haddock documentation working might also require a little work. The other option is to do things the other way around: make gi-gtk3-3.x re-export everything from gi-gtk-3.x, and keep gi-gtk as the main package. We would then remove gi-gtk itself from stack, and ask people who want to have gi-gtk-3.x dependent packages in stackage to depend on gi-gtk3. Would this work? I don't know if technically stack can deal with this, but if so it might be a bit simpler. Or, finally, we could just remove the gi-* packages from stackage. As I mentioned above, the gi-* packages are a little special, so I am not sure the benefits of stackage apply to them, and there are drawbacks with keeping them there. Is it possible to keep packages in stackage if their dependencies are not in stackage? |
Thanks :-)
Right, and also for Linux distros, etc. Actually porting apps from gtk3 to gtk4 is non-trivial: so consumers should expect to have to change the dependency.
I think this ^^ is the correct approach This will also be better when gtk5 appears. Dependent packages don't want to have to update their deps suddenly from gi-gtk to gi-gtk4, just because gtk5 appeared.
I don't think that can work, since gi-gtk3 would depend on gi-gtk, right? So we are back to the same problem.
I feel that would be sad - I see a definite benefit in having gi-* in Stackage.
Not really, no |
To me it’s very obvious that there must be separate packages for |
Hi, Could you please elaborate why you think separate packages are very obvious? Neither (modern) In any case I am not opposed, I would be receptive to someone writing a PR along the following lines:
The second one is probably not acceptable for stackage, but it's fine in hackage, and I'd like to keep it. It should be little extra work anyway. |
Thanks @garetxe for all your work on this! It's a really great project. |
Thanks! :) |
Hi! FWIW, nixpkgs package is also suffering from the shared name for the two bindings. Is there some work started on the solution proposed in @garetxe's previous comment? Any way one could help with the effort ? |
@amazari I am not aware of any - been meaning to come back to this but not finding time ;-( I would like to have gi-gtk-4 in Fedora as well as gi-gtk-3. I think it is needed for most distros (except debian/ubuntu perhaps?) |
@garetxe I appreciate your desire for backward-compatibility, but I feel offering two packages providing the same API with different names is probably worse and more confusing in the long-term. Some packages may choose to stay with gi-gtk and others switch gi-gtk4, etc. |
@amazari There has been no progress on this as far as I am aware, but I am still supportive of the plan. I had hoped to look into this during the summer, but I couldn't find the time. And realistically I don't think I will have the time in the near future, so contributions are very much welcome! @juhp Could you please elaborate about why you would like to have a hardbreak? I would very much like to avoid breaking backwards compatibility, but I have no feeling for how much work it would be to exclude the unversioned |
Basically I think having 3 different upstream overlapping source packages is a bad idea: how to choose which to use? Naively all that is really needed in the short term is two packages: one for v3 and one for v4. That will allow easy parallel packaging. The simplest naive solution would be to either create gi-gtk3 or alternatively gi-gtk4 (but just the former is not a good long term solution as we discussed before: ie for v5). I see in Repology.org that Arch/Manjaro/Parabola already have a forked (renamed) gi-gtk3. I could perhaps do that for Fedora too, but we can't for Stackage, unless someone uploads it to Hackage. Anyway it doesn't make sense for each distro to do this separately. |
How do you think about making gtk4 is separate package from gtk-3?
I think GTK 3 and 4 will coexist for a long time, so while Hackage packages
can be parallel installed - for distros it is less simple: if we want to parallel
installing in Fedora for example we really need gi-gtk(3) and gi-gtk4.
This became more topical with the first official release of Gtk 4.0 recently.
The text was updated successfully, but these errors were encountered: