FS#48145 - [wxgtk] Split out common files to allow wxGtk-Gtk2 and wxGtk-Gtk3 to both exist

Attached to Project: Arch Linux
Opened by Star Brilliant (m13253) - Thursday, 11 February 2016, 16:37 GMT
Last edited by Antonio Rojas (arojas) - Wednesday, 07 June 2017, 19:48 GMT
Task Type Feature Request
Category Packages: Extra
Status Closed
Assigned To Eric Belanger (Snowman)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 5
Private No

Details

Since wxWidgets 3.0, Gtk3 is now an available backend option. So I packaged wxGtk-Gtk3 on [unsupported], making it available side-by-side with wxGtk-Gtk2 from [extra].
However, some files are common between these two packages, e.g. /usr/lib/libwx_base*.so, forcing me to delete the conflicting files in wxGtk-Gtk3 [1], but that will require the user to install both package to get wxGtk-Gtk3 working.

According to wxWidgets website, a wxQt port is being developed and released soon [2]. Further confusion would be introduced when we package wxQt/wxMotif/wxX11. So I suggest we solve this problem by splitting the "wxgtk" package:

* wxgtk-gtk2 / wxgtk-gtk3 / wxqt / wxmotif / wxx11 will depend on package named "wxwidgets" or "wxbase", containing common files
* According to documentation [3], "wxBase" contains everything necessary to develop a CLI-only application, without depending on any GUI toolkit
* Other packages provide toolkit-dependent files, thus, "wxgtk-gtk3" will not depend on "gtk2"
* Change "/usr/bin/wx-config" from a symlink, to a Bash script that chooses the best backend based on user installation


After doing these, I suggest we port existing wxGtk applications to Gtk3, because Gtk3 supports HiDPI screens, smooth scrolling, touchscreen, trackpad gestures.

* Most applications requires nothing else, but a command line argument added: "wx-config --toolkit=gtk3", to work with Gtk3
- Example: wxMaxima
* Some applications have deformed controls, e.g. texts are truncated, input boxes are not big enough
- Example: Audacity
* I have not noticed an application that fails to run with Gtk3


Notes:
[1]: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=wxgtk-gtk3#n43
[2]: https://wiki.wxwidgets.org/WxQt/Status
[3]: http://docs.wxwidgets.org/3.0/page_libs.html
This task depends upon

Closed by  Antonio Rojas (arojas)
Wednesday, 07 June 2017, 19:48 GMT
Reason for closing:  Implemented
Comment by Mingye Wang (arthur2e5) - Thursday, 11 February 2016, 17:18 GMT
After some brief talk with m13253 over this on #archlinux-cn, I ended up with some sub-AUR-quality, WIP PKGBUILD at https://gist.github.com/Arthur2e5/9852ec41a17adf45d042. You will find `build` terribly slow since it builds everything without considering what you want to install (wanna use ccache? do it). And it also gives you a really long `makedepends[]`.

All these packages provide to a dummy package called wxwidgets (rename to wxgui?), since m13253 actually talked about "satisfying qt/x11/motif enthusiasts" by allowing them to only install the wx GUI backend for their respective toolkits.

PS. Looks like I should rename wx-common to wxbase. Added to TODO.
- Done: looks like nothing needs to be done. The only important constraint is that we should sync all the versions together.

PPS. From m13253's screenshot published on ##Orz, wxMaxima looks quite nice and Gnome-3-ish with wxgtk-gtk3.

* All IRC channels mentioned are on freenode.net.
Comment by Star Brilliant (m13253) - Tuesday, 01 March 2016, 15:04 GMT
wxQt-Qt5 was released with wxWidgets 3.1.0 today.
The trouble is more complicated now.

I hope we can solve this problem as soon as possible, either in the way I have said earlier, or a more appropriate way.

I'll wait a couple of days: If it is not solved, I will unofficially port a separate wxQt package to AUR.
Comment by John Beard (jjbeard) - Thursday, 05 January 2017, 08:16 GMT
What headers should wxbase provide, and which should be provided by the toolkit-specific packages? wx{gtk2|gtk3|qt|...} will all need the "common" GUI headers, for examples <wx/artprov.h> and each will need its own special headers, e.g. <wx/gtk/...>. It might be a bit fiddly to pick these all out by hand in each toolkit package, but using --disable-gui in the wxbase package build doesn't include the GUI headers.
Comment by Antonio Rojas (arojas) - Sunday, 04 June 2017, 22:55 GMT
I've pushed wxgtk2 and wxgtk3 packages to [testing] and rebuilt wxmaxima with gtk3, seems to work fine (amule OTOH segfaults when compiled with gtk3). Please give it some testing.

Loading...