-
-
Notifications
You must be signed in to change notification settings - Fork 5k
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
Add gtk2 #3920
Add gtk2 #3920
Conversation
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
recipes/gtk/build.sh
Outdated
./configure --prefix="${PREFIX}" | ||
|
||
make -j$CPU_COUNT | ||
# make check -j$CPU_COUNT |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Testing this is going to be a bit complex. Suggestions welcome.
recipes/gtk/meta.yaml
Outdated
# Requires Cairo's X11 libs. | ||
# Please see issue ( https://github.com/conda-forge/cairo-feedstock/issues/22 ). | ||
# Also please see PR ( https://github.com/conda-forge/cairo-feedstock/pull/23 ). | ||
skip: true # [osx] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Getting macOS support will require Cairo having X11 libraries. Please see issue ( conda-forge/cairo-feedstock#22 ) and PR ( conda-forge/cairo-feedstock#23 ) for more details.
This is blocked by PR ( conda-forge/atk-feedstock#1 ) ATM. Once that is merged and packages released, we can revisit this. |
d78961c
to
f6800dd
Compare
Built |
cc @ccordoba12 |
I agree that testing can be a bit tricky. I have installed your packages, look at how DSOs get resolved and it all looks good to me. Perhaps what we should do is to build and run something against this to exercise it a bit. Here is our old recipe if it can be of help. |
Thanks for this @jakirkham! Unfortunately, I can offer a hand here because I've never compiled Gtk. |
Borrowed some common flags used to build GTK from various sources (mainly Homebrew and Linuxbrew though MacPorts and the loopbio recipe were looked at as well). Have enabled the macOS build using Quartz (not X11), which is consistent with these sources and seems to build ok. Also made some minor tweaks to the tests at the end. |
Have uploaded new packages to my own channel, |
- toolchain | ||
- pkg-config | ||
- perl 5.22.2.1 | ||
- atk |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure how we want to pin this.
- fontconfig 2.12.* | ||
- freetype 2.7 | ||
- gdk-pixbuf | ||
- gettext |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure how we want to pin these.
- gettext | ||
- glib 2.51.* | ||
- gobject-introspection | ||
- graphite2 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure how we want to pin these.
- icu 58.* | ||
- jpeg 9* | ||
- libffi | ||
- libiconv |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure how we want to pin these, if at all.
- libtiff >=4.0.3,<4.0.8 | ||
- libxml2 2.9.* | ||
- pango 1.40.* | ||
- pcre |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure how we want to pin this.
|
||
extra: | ||
recipe-maintainers: | ||
- jakirkham |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Anyone else want to help maintain? I'm afraid I can't promise lots of time to this myself.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can help.
Can we call this package "gtk2"? Gtk+3 has been around for a looooong time at this point and should be considered the "normal" Gtk. They are parallel-installable and it should be possible for users to have both versions 2 and 3 installed at the same time. |
So this is an interesting question. We have not tended to have SO named packages (with some exceptions like |
That's a choice to be made by the packager, not the user, no? If I'm packaging the |
Sure. I overloaded user here. Meant a packager downstream of
Yes, you can totally choose. Though the question is what if you want to support both |
@jakirkham Based on a lot of experience with Gtk software packages over many years, I will assert that downstream packages virtually never have simultaneous support for Gtk2 and Gtk3; they either have one or the other. I am pretty sure that I've literally never seen this. That might be a bit less true for programs based on PyGtk since it's easier to be loosey-goosey with Python code than C, but even in that case, the recommended Python APIs changed substantially so one generally needed to make a firm choice. (Personal experience here). So basically I don't think issue of downstream packages that want to support either 2 or 3 is one that will arise in practice. |
OpenCV can support Gtk2 or Gtk3. |
The goal being to have a consistent software stack, shouldn't the rule simply be like this?
Now, in the very simplified conda packaging world, where there are very few ways to express relationships between packages, we can read "let two packages be installed together" as "let two packages be named differently". I think there should be no discussion about this. Installing gtk2 and gtk3 on the same environment should be possible. Therefore both packages should be named differently. There is then no trouble downstream. For example, in the rare case we would want to have support for all three gtk2, gtk3 and qt4 as opencv highgui backends, we would then just have three versions of the opencv package bringing along their corresponding dependencies. The concrete version would be selected with the build string, or via a conda feature if you want. The user will install whatever version she needs. And that would not mean other opencv-unrelated packages depending on other gui toolkits to be affected. The gtk2 + gtk3 should be allowed to be installed in the same environment is in clear contrast with other packages that should not be allowed to end up in the same environment but still are not named the same (thinking on the cpu vs gpu versions of some packages in defaults that can be happily and wrongly installed side by side). |
@jakirkham I stand corrected. |
I'm sure you are right that this is hardly the norm. OpenCV is really a behemoth. |
cc @oinizan |
Going to try to bring this back to life.
I don't think we are discussing this point any more. We are in agreement.
This is where we are having a disagreement I think. There is a challenge for downstream packagers to specify this in a consistent manner as there currently isn't one solution. 😄 So what I'm asking is for us to settle on one of these solutions. For BLAS selection, we have the |
I personally find using features a little annoying to develop with. If the string method works, I would be in favor of that. |
I agree with @scopatz. I think that the only proper solution we currently have is to recommend the build string method. Hypothetical downstream dependents that provide two variants, one for gtk2 and one for gtk3, would be selected like To my mind, conda features are not only annoying to use. They simply do not cut it here. Because gtk2 and gtk3 can be installed side by side, each of them need to track a different feature. This is true even with new conda 4.4 key-value features: the feature cannot be "gtk=[2|3]" (which would allow only one of the two gtk variants in the environment) but instead "gtk2=present" and "gtk3=present". If the two downstream package variants only differ on requiring one of the two different features, how will the downstream package be resolved when both features are provided by the environment? I think randomly in conda < 4.4. In conda >= 4.4, if I understand correctly, we could maybe use the [features="gtk2=present"] syntax, which seems clumsy. To allow the user to choose one version or the other via conda features, we would also add a "downstream-gtk2-feature" and "downstream-gtk3-feature" per downstream package. I think that is painful too, both for the packager and the user. Having different downstream package names should also be discarded - for the obvious reason they won't be anymore variants of the same package but two different packages that could wrongly be installed on parallel and that would force further differentiation/split of dependents. |
Just a side note: I think the "blas package tracking feature" is an unfortunate historical event. For example, openblas and MKL can, at the moment, both be installed on parallel. So this discussion could apply also to them. |
[skip appveyor]
Could you please weigh in on this one if you have time, @mingwandroid? It would be very helpful to hear your thoughts on this. In particular how we solve the Gtk2/Gtk3 issue going forward. |
I would ignore Anyway, if it is true that:
.. then I don't agree with with:
.. and I also do not agree with:
Because I do not see it as painful at all for anyone. Legacy software that doesn't work with |
.. overall, the point I am making here is that there's no intrinsic 'value' in ever using |
As we do package legacy software in other cases where we need it, this doesn't seem that unusual. Given we are often using |
cc @conda-forge/staged-recipes |
I think we should take the plunge and fix things in the feedstock, as needed. |
Fixes #3914
Requires conda-forge/atk-feedstock#1Done.Attempts to build GTK 2 from source on Linux and macOS. Feedback and other maintainers welcome.