Skip to content
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

wxGTK: use GTK 3 by default #73145

Closed
wants to merge 20 commits into from
Closed

Conversation

lopsided98
Copy link
Contributor

@lopsided98 lopsided98 commented Nov 9, 2019

Motivation for this change

wxGTK should switch to using GTK 3 where possible. Currently this PR implements the basic change for wxGTK30 and wxPython 3.0. There are a lot of packages that may be affected by this change, as shown in the following nix-review report:

24 packages failed to build:
89 packages were built:
  • aegisub
  • bossa
  • cl
  • couchdb
  • couchdb2
  • cubicsdr
  • curaByDagoma
  • cura_stable
  • cuter
  • digikam
  • displaycal
  • dvdstyler
  • ejabberd
  • elixir
  • elixir_1_5
  • elixir_1_6
  • elixir_1_7
  • elixir_1_8
  • erlang
  • erlangR18
  • erlangR19
  • erlangR20
  • erlangR21
  • erlang_javac
  • erlang_odbc
  • erlang_odbc_javac
  • far2l
  • flamerobin
  • gnss-sdr
  • gnuradio
  • gr-ais
  • gr-gsm
  • gr-limesdr
  • gr-nacl
  • gr-osmosdr
  • gr-rds
  • gnuradio-with-packages
  • golly
  • gqrx
  • hex2nix
  • hugin
  • inspectrum
  • kicad
  • kicad-with-packages3d
  • lenmus
  • limesuite
  • loxodo
  • lutris
  • lutris-free
  • mercury
  • metamorphose2
  • mmex
  • notmuch-bower
  • odamex
  • perl528Packages.AlienWxWidgets
  • perl530Packages.AlienWxWidgets
  • playonlinux
  • plover.stable
  • printrun
  • python27Packages.pyspread
  • python27Packages.robotframework-ride
  • python27Packages.runsnakerun
  • python27Packages.wxPython
  • qradiolink
  • rabbitmq-server
  • radiotray-ng
  • rebar
  • rebar3
  • relxExe
  • rtl_433
  • saga
  • scyther
  • sdrangel
  • soapysdr-with-plugins
  • torchat
  • truecrypt
  • tsung
  • urh
  • welle-io
  • wings
  • winpdb
  • winusb
  • wxGTK30
  • wxSVG
  • wxmaxima
  • wxsqlite3
  • xylib
  • yaws
  • zeroad

Some of these failures may be prexisting, but many are caused by the switch to GTK 3.

I would like to drop support for GTK 2 altogether in wxGTK, but I'm not sure if this will be possible. I also need to test wxGTK 3.1 with GTK 3.

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.

@evils
Copy link
Member

evils commented Nov 10, 2019

i've addressed some of the failures here
i set withGtk2 = true; where it seemed appropriate (where the source doesn't mention gtk3),
though maybe using wxGTK29 is more appropriate for those?

i also defaulted wxGTK31 to gtk3, nothing was negatively affected.

i'm still seeing these failures

  • dolphinEmu; @delroth seems involved in that, perhaps they can offer clarification?
  • prusa-slicer; wxWidgets not found
  • slade, sladeUnstable; should support gtk3 but can't find it
  • wxsqliteplus; is not fixed by setting withGtk2 = true;

and these which are also broken without this PR

  • electricsheep
  • pcsx2
  • salut_a_toi
  • sasview

@delroth
Copy link
Contributor

delroth commented Nov 10, 2019

Re: dolphinEmu, the UI was migrated from WX to Qt a few years ago. Unfortunately I don't think any stable release has been tagged since that migration to Qt. I would either keep wxGTK2 or drop dolphinEmu stable from nixpkgs in favor of dolphinEmuMaster.

@ofborg ofborg bot requested a review from domenkozar November 10, 2019 18:46
@lopsided98
Copy link
Contributor Author

rigsofrods has a similar problem; master supports GTK 3, but there has not been an official release since 2016. It seems like upstream considered 4.8rc5 to be a stable release. I tried to update it, but ran into a bunch of runtime issues (crashes, missing textures), so I think I'll just have it use GTK2 for now.

I don't know how aggressive we should be in switching to GTK3. Should I apply the patches Debian and Fedora have written to add GTK3 support to the packages that don't officially support it?

@worldofpeace
Copy link
Contributor

I don't know how aggressive we should be in switching to GTK3. Should I apply the patches Debian and Fedora have written to add GTK3 support to the packages that don't officially support it?

@lopsided98 Absolutely, as a gtk maintainer in nixpkgs I'm always glad to come upon these patches where needed 👍 Though if the package appears completely unused and unmaintained, feel free to remove it in a separate PR.

@evils evils mentioned this pull request Nov 11, 2019
10 tasks
@evils
Copy link
Member

evils commented Nov 11, 2019

i've resolved the remaining build failures, still here.

i removed slade-git since it's been surpassed by slade stable, a separate PR may be in order, but i'd rather not introduce a failing build with this one and fixing this just to remove it seem silly.

i also added wrapGAppsHook to most since they otherwise aren't usable without a gnome DE

remaining failures (also fail on master)
electricsheep pcsx2 salut_a_toi sasview

and 110 packages were build aegisub audacity boinc bossa cl couchdb couchdb2 cubicsdr curaByDagoma cura_stable cuter diff-pdf digikam displaycal dvdstyler ejabberd elixir elixir_1_5 elixir_1_6 elixir_1_7 elixir_1_8 erlang erlangR18 erlangR19 erlangR20 erlangR21 erlang_javac erlang_odbc erlang_odbc_javac far2l filezilla fityk flamerobin gnss-sdr gnuradio gr-ais gr-gsm gr-limesdr gr-nacl gr-osmosdr gr-rds gnuradio-with-packages golly golly-beta gqrx grass hex2nix hugin inspectrum kicad kicad-with-packages3d lenmus limesuite loxodo lutris lutris-free mercury metamorphose2 mmex notmuch-bower odamex opencpn perl528Packages.AlienWxWidgets perl528Packages.Wx perl528Packages.WxGLCanvas perl530Packages.AlienWxWidgets perl530Packages.Wx perl530Packages.WxGLCanvas playonlinux plover.stable poedit printrun prusa-slicer pwsafe python27Packages.pyspread python27Packages.robotframework-ride python27Packages.runsnakerun python27Packages.wxPython qradiolink rabbitmq-server radiotray-ng rebar rebar3 relxExe rtl_433 saga scyther sdrangel slade slic3r soapysdr-with-plugins torchat treesheets truecrypt tsung urh welle-io wings winpdb winusb wxGTK30 wxGTK31 wxSVG wxhexeditor wxmaxima wxsqlite3 wxsqliteplus xylib yaws zeroad

@c0bw3b
Copy link
Contributor

c0bw3b commented Nov 13, 2019

@lopsided98 you can drop audacity commit since it was done in #73055

@worldofpeace
Copy link
Contributor

is there a more systemic way to treat this rather than to patch each of them

No, that's simply how packaging gtk3 apps works in nixpkgs. It all revolves around that setup hook.

@evils evils mentioned this pull request Nov 26, 2019
26 tasks
@worldofpeace worldofpeace mentioned this pull request Dec 5, 2019
10 tasks
@peterhoeg
Copy link
Member

#86217 moves filezilla to use gtk3 (and thus wxgtk with gtk3 by extension).

@peterhoeg
Copy link
Member

wxwidgets 3.0.5 is out as of y'day which also updates gstreamer from 0.10 to 1.0 which would be great move.

@FRidh FRidh added this to the 20.09 milestone May 1, 2020
@jonringer
Copy link
Contributor

@lopsided98 I know that this PR is probably very tiring as a lot is going on the master branch. If you want to break this apart into smaller PRs, it will also make them easier to merge as there's less surface area to test

@lopsided98
Copy link
Contributor Author

Yeah, I think that is the only feasible way to move forward with this. We can just make individual packages use GTK3, and then someday go back and change the default.

I don't have a lot of time to work on this right now, but if others want to take commits from this PR and make separate PRs, feel free to go ahead.

@peterhoeg
Copy link
Member

peterhoeg commented May 4, 2020 via email

@stale
Copy link

stale bot commented Jun 18, 2021

I marked this as stale due to inactivity. → More info

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Jun 18, 2021
@peterhoeg peterhoeg removed this from the 21.05 milestone Apr 4, 2022
@stale stale bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Apr 4, 2022
@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Oct 1, 2022
@stale stale bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Oct 1, 2022
@wegank wegank mentioned this pull request Dec 3, 2022
13 tasks
@wegank wegank closed this Jan 13, 2023
@lopsided98 lopsided98 deleted the wxwidgets-gtk3 branch January 13, 2023 16:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet