Page MenuHomeSolus

2022 Tracking: Update wxwidgets to 3.2.0, update wxPython to 4.2.0, nuke GTK2 and Py2 support
Closed, ResolvedPublic

Description

Current blockers

  • prusa-slicer
  • hugin

To do items:-

  • Update {lib}filezilla to latest version
  • Update hugin to 2021
  • Update erlang

Current testing (all items successfully rebuilt)

wxsvg - Not tested
wxmaxima - Seems OK, layout doesn't look great on plasma
wxsqlite3 - test via hugin
VisualBoyAdvance-M - Seems OK, no ROMS tested
aegisub - OK
audacity - Updated to 3.3.1, OK
codeblocks - lots of patches but OK
cubicsdr - OK
dfarc - OK, but no ROMS tested
erlang - Not tested
filezilla - OK
gnuplot - OK
hugin - NOT OK segfaults on startup.
kicad - OK
mediainfo - OK
megaglest - OK
poedit - OK
radiotray-ng - OK
spek - OK
trelby - Switched to python3 fork, OK
veracrypt - OK
woeusb - Switched to woeusb-ng, seems OK
displaycal - Switched to python3 fork, OK
playonlinux - Updated to 4.4, OK
printrun - Updated to 2.0.0rc8, needs updated pyglet but OK
prusa-slicer - NOT OK
pcsx2 - Updated to 1.7.x pre-release, not tested with any ROMS but startup okay
codelite - OK
guayadeque - OK
eviacam - Needed a couple of patches to build against newest toolchain but functional.
freefilesync - Updated to 11.22 needs patches and layout looks bad on plasma but ok.

wxwidgets:

wxPython:

Event Timeline

I'll fix up the formatting eventually. Any of the listed todo items are up for grabs. The idea here is to update as much as we can and make the eventually switch over as painless as possible.

joebonrichie changed the task status from Open to In Progress.Aug 30 2022, 11:46 PM
joebonrichie triaged this task as High priority.
joebonrichie moved this task from Backlog to Improvement on the Software board.

Apparently, kicad is moving to wxwidgets so this also affects it in the 6.X series ( T10090)

vba-m I can attest that it'll always work with the most recent developmental version of wxwidgets, we basically track that while maintaining current stable. Now that current stable is out.

Also regarding wxwidgets, 3.0 and 3.2 can live side by side, that way if any application needs 3.0 still, I can still rely on that until they don't need it anymore.

We've discussed about creating a new package for the current (old) version of wxwidgets and updating the main wxwidgets to the latest version. That way we could move the majority of things to the new wxwidgets version but keeping packages which don't work with the new version on the old version instead of forcing them through. To do this, we would need to have both versions of wxwidgets co-installable which may prove tricky.

We've discussed about creating a new package for the current (old) version of wxwidgets and updating the main wxwidgets to the latest version. That way we could move the majority of things to the new wxwidgets version but keeping packages which don't work with the new version on the old version instead of forcing them through. To do this, we would need to have both versions of wxwidgets co-installable which may prove tricky.

It's a lot easier than you think, by default wxwidgets 3.2 installs to /usr/include/wx-3.2/ the only thing we would need to handle is the wxrc and wx-config script and binary since those would conflict with 3.0

Haven't found the time to look at co-installable wxwidgets versions yet unfortunately, but in theory it should be quite simple.

Here's my attempt at a coinstallable package:

name       : wxwidgets3.2
version    : 3.2.0
release    : 1
source     :
    - https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.0/wxWidgets-3.2.0.tar.bz2 : 356e9b55f1ae3d58ae1fed61478e9b754d46b820913e3bfbc971c50377c1903a
license    : LGPL-2.0-or-later WITH WxWindows-exception-3.1
component  : desktop.library
summary    : Cross-platform UI toolkit library
description: |
    wxWidgets gives you a single, easy-to-use API for writing GUI applications on multiple platforms that still utilize the native platform's controls and utilities. Link with the appropriate library for your platform and compiler, and your application will adopt the look and feel appropriate to that platform. On top of great GUI functionality, wxWidgets gives you: online help, network programming, streams, clipboard and drag and drop, multithreading, image loading and saving in a variety of popular formats, database support, HTML viewing and printing, and much more.
emul32     : yes
patterns   :
    - 32bit-devel :
        - /usr/share/wxwidgets3.2/wx-config32
    - devel :
        - /usr/bin
        - /usr/share/wxwidgets3.2/wx-config
builddeps  :
    - pkgconfig(gstreamer-plugins-base-1.0)
    - pkgconfig32(atk)
    - pkgconfig32(cairo)
    - pkgconfig32(expat)
    - pkgconfig32(fontconfig)
    - pkgconfig32(freetype2)
    - pkgconfig32(gdk-pixbuf-2.0)
    - pkgconfig32(gio-2.0)
    - pkgconfig32(gl)
    - pkgconfig32(glu)
    - pkgconfig32(gnutls)
    - pkgconfig32(gtk+-3.0)
    - pkgconfig32(ice)
    - pkgconfig32(liblzma)
    - pkgconfig32(libnotify)
    - pkgconfig32(libpng)
    - pkgconfig32(libtiff-4)
    - pkgconfig32(libturbojpeg)
    - pkgconfig32(pangocairo)
    - pkgconfig32(sm)
    - pkgconfig32(x11)
    - pkgconfig32(xcomposite)
    - pkgconfig32(xcursor)
    - pkgconfig32(xdamage)
    - pkgconfig32(xext)
    - pkgconfig32(xfixes)
    - pkgconfig32(xinerama)
    - pkgconfig32(xrandr)
    - pkgconfig32(xrender)
    - pkgconfig32(xxf86vm)
    - pkgconfig32(zlib)
setup      : |
    export exOpts=""
    if [ ! -z "${EMUL32BUILD}" ]; then
        exOpts="--disable-gtktest --disable-mediactrl"
    else
        exOpts="--enable-mediactrl"
    fi

    %configure \
        --disable-precomp-headers \
        --enable-printfposparam \
        --with-gtk=3 \
        $exOpts
build      : |
    %make
install    : |
    %make_install

    # Nuke/move some files to make things coinstallable with old wxwidgets
    rm -rf $installdir/usr/share/bakefile
    rm -rf $installdir/usr/share/aclocal
    mv $installdir/usr/bin/wxrc $installdir/usr/bin/wx3.2rc
    mv $installdir/usr/bin/wxrc-3.2 $installdir/usr/bin/wx3.2rc-3.2 # This one's just for fun

    # Ensure wx-config supports multilib.
    install -dm00755 $installdir/usr/share/wxwidgets3.2
    mv $installdir/usr/bin/wx-config $installdir/usr/share/wxwidgets3.2/wx-config
    if [ ! -z "${EMUL32BUILD}" ]; then
        mv $installdir/usr/share/wxwidgets3.2/wx-config $installdir/usr/share/wxwidgets3.2/wx-config32
    fi
    install -Dm00755 $pkgfiles/wx3.2-config -t $installdir/usr/bin

Also made some slight tweaks to files/wx-config. Renamed to wx3.2-config and adjusted the script to point to /usr/share/wxwidgets3.2.

I'm not sure how important the bits I nuked are, but hopefully this puts things on the right track.

In the repository wxwidgets2.8 is already a patch for making parallel install possible:
https://dev.getsol.us/source/wxwidgets2.8/browse/master/files/wxGTK-collision.patch

Maybe it is as easy as copying that patch for new wxwidgets3.2.

vba-m is always tested against newer wxwidgets typically, so it should be alright, next version that's upcoming also fixes a few things... Mainly wayland side