On Thu, Jun 23, 2022 at 03:57:17PM +0000, Klemens Nanni wrote:
> telegram-desktop upstream has been defaulting to Qt6 for some time
> and >=3.6.3beta already requires it, but first we lacked behind in our
> Qt6 ports and later I noticed regressions with Qt6.
> 
> So at the moment our tdesktop port uses Debian's patch to reenable Qt5
> builds, but newer telegram-desktop versions already require updates to
> this patch and we can't carry it forever anyway.
> 
> 
> On a simple cwm(1) setup without any DE, I noticed the following
> (see net/tdesktop/Makefile r1.31):
> 
>     opening videos/pictures worked only once, i.e. clicking on the first
>     photo after startup would show it in Qt's media viewer, another attempt
>     would show nothing (video's audio would still be played)
> 
> Quickly running fvwm(1) instead of cwm(1) does NOT show this behaviour,
> i.e. telegram-desktop with Qt6 on fvwm(1) seems to work.
> 
> 
> My idea was to `pkg_add tdesktop-- tdesktop--qt6` to provide
> conflict-free `telegram-desktop` and `telegram-desktop-qt6` so you can
> test both versions and check for (desktop environment specific)
> regressions.

Same diff but with fixed FULLPKGNAME for the -qt6 flavor so pkg_add'ing
both actually works (thanks sthen!), but like this now:

        # TRUSTED_PKG_PATH=/usr/ports/packages/amd64/all pkg_add tdesktop-- 
tdesktop-qt6--
        tdesktop-3.7.5p0->3.7.5p1: ok
        tdesktop-qt6-3.7.5p1: ok

Also zapped an added BDEP that was not used.

> So here's a diff adding the -qt6 flavor.
> 
> The default unflavored port remains the same and -qt6 has all files
> renamed to contain this suffix to avoid conflicts.
> 
> I'd appreciate feedback on anything that used to work with Qt5 in your
> setup but is broken using Qt6.
> 
> Feedback? OK?
> 
> PS: buildling tdesktop takes hours on my machine so having binary
> packages available for both Qt versions helps me alot.


Index: net/Makefile
===================================================================
RCS file: /cvs/ports/net/Makefile,v
retrieving revision 1.1306
diff -u -p -r1.1306 Makefile
--- net/Makefile        6 Jun 2022 17:39:02 -0000       1.1306
+++ net/Makefile        22 Jun 2022 18:18:46 -0000
@@ -694,6 +694,7 @@
      SUBDIR += tcptrace
      SUBDIR += tcptraceroute
      SUBDIR += tdesktop
+     SUBDIR += tdesktop,qt6
      SUBDIR += tdlib
      SUBDIR += telegram-purple
      SUBDIR += telepathy
Index: net/tdesktop/Makefile
===================================================================
RCS file: /cvs/ports/net/tdesktop/Makefile,v
retrieving revision 1.31
diff -u -p -r1.31 Makefile
--- net/tdesktop/Makefile       23 May 2022 01:49:40 -0000      1.31
+++ net/tdesktop/Makefile       23 Jun 2022 16:22:09 -0000
@@ -6,7 +6,7 @@ NOT_FOR_ARCHS =         ${BE_ARCHS} i386
 COMMENT =              Telegram Desktop messenger
 PORTROACH =            limit:-full$$
 V =                    3.7.5
-REVISION =             0
+REVISION =             1
 DISTNAME =             tdesktop-${V}-full
 PKGNAME =              ${DISTNAME:-full=}
 CATEGORIES =           net
@@ -20,7 +20,8 @@ MASTER_SITES0 =               https://salsa.debian.or
 FORCE_QT5_COMMIT =     93b4a99d86eb60141612767935b038b29db65345
 FORCE_QT5_ORIGPATCH =  ${FORCE_QT5_COMMIT}/debian/patches/Compatible-setScreen
 FORCE_QT5_NEWPATCH =   
tdesktop-force-qt5-${FORCE_QT5_COMMIT:C/(........).*/\1/}
-PATCHFILES +=          ${FORCE_QT5_NEWPATCH}{${FORCE_QT5_ORIGPATCH}}.patch:0
+FORCE_QT5_PATCHFILE =  ${FORCE_QT5_NEWPATCH}{${FORCE_QT5_ORIGPATCH}}.patch:0
+SUPDISTFILES +=                ${FORCE_QT5_PATCHFILE}
 
 PATCH_DIST_STRIP =     -p1
 
@@ -31,12 +32,10 @@ MAINTAINER =                Andrew Krasavin <noiseless
 # rlottie: LGPL 2.1 with freetype, LGPL, MIT, BSD dependencies
 PERMIT_PACKAGE =       Yes
 
-WANTLIB += ${COMPILER_LIBCXX} Qt5Core Qt5Gui Qt5Network Qt5Svg
-WANTLIB += Qt5Widgets absl_strings avcodec avformat avutil c crypto
-WANTLIB += gio-2.0 giomm-2.4 glib-2.0 glibmm-2.4 gobject-2.0 hunspell-1.7
-WANTLIB += jpeg lz4 m openal qrcodegencpp rnnoise sigc-2.0 swresample
-WANTLIB += swscale tg_owt xcb xcb-keysyms xcb-record xcb-screensaver
-WANTLIB += xxhash z
+WANTLIB += ${COMPILER_LIBCXX} absl_strings avcodec avformat avutil c crypto
+WANTLIB += gio-2.0 giomm-2.4 glib-2.0 glibmm-2.4 gobject-2.0 hunspell-1.7 jpeg
+WANTLIB += lz4 m openal qrcodegencpp rnnoise sigc-2.0 swresample swscale tg_owt
+WANTLIB += xcb xcb-keysyms xcb-record xcb-screensaver xxhash z
 
 # C++17 set below
 COMPILER =             base-clang ports-gcc
@@ -45,8 +44,7 @@ COMPILER =            base-clang ports-gcc
 # CCACHE_ENV +=                CCACHE_SLOPPINESS=pch_defines,time_macros
 
 MODULES =              devel/cmake \
-                       lang/python \
-                       x11/qt5
+                       lang/python
 MODPY_RUNDEP =         No
 
 BUILD_DEPENDS =                devel/microsoft-gsl \
@@ -64,12 +62,10 @@ LIB_DEPENDS =               archivers/lz4 \
                        graphics/qr-code-generator>=1.7.0p1 \
                        net/tg_owt>=0.0.0.20220507 \
                        sysutils/xxhash \
-                       textproc/hunspell \
-                       x11/qt5/qtsvg
+                       textproc/hunspell
 
 RUN_DEPENDS =          devel/desktop-file-utils \
-                       x11/gtk+3,-guic \
-                       x11/qt5/qtimageformats
+                       x11/gtk+3,-guic
 
 # look for system libraries and build a shared library, despite upstream
 # treating it as "community effort" with less support
@@ -83,8 +79,7 @@ CONFIGURE_ARGS +=     -DTDESKTOP_API_ID=6113
 
 # disable unported/unwanted components
 CONFIGURE_ARGS +=      -DDESKTOP_APP_DISABLE_JEMALLOC=ON \
-                       -DDESKTOP_APP_DISABLE_WAYLAND_INTEGRATION=ON \
-                       -DDESKTOP_APP_QT6=OFF
+                       -DDESKTOP_APP_DISABLE_WAYLAND_INTEGRATION=ON
 
 # match standard version with abseil
 CONFIGURE_ARGS +=      -DCMAKE_CXX_STANDARD=17
@@ -99,6 +94,45 @@ CFLAGS +=            -DIOAPI_NO_64
 
 # unported and required
 NEEDED_BUNDLES +=      rlottie tgcalls
+
+
+FLAVORS =              qt6
+FLAVOR ?=              # empty
+.if ${FLAVOR:Mqt6}
+# avoid conflict with unflavored package to allow installing both
+FULLPKGNAME =          tdesktop${FLAVOR_EXT}-${V}
+WANTLIB += Qt6Core Qt6Core5Compat Qt6Gui Qt6Network Qt6OpenGL Qt6OpenGLWidgets
+WANTLIB += Qt6Svg Qt6Widgets
+
+MODULES +=             x11/qt6
+# tdesktop 3.6.3beta and later require Qt 6.2+
+LIB_DEPENDS +=         x11/qt6/qt5compat \
+                       x11/qt6/qtbase>=6.2 \
+                       x11/qt6/qtsvg
+RUN_DEPENDS +=         x11/qt6/qtimageformats
+
+post-install:
+       mv ${PREFIX}/bin/telegram-desktop{,${FLAVOR_EXT}}
+       mv ${PREFIX}/share/applications/telegramdesktop{,${FLAVOR_EXT}}.desktop
+       sed -i \
+           -e /Name=/s,$$,' (${FLAVOR_EXT})', \
+           -e /Exec=/s,desktop,\&${FLAVOR_EXT}, \
+           -e /Icon=/s,$$,${FLAVOR_EXT}, \
+           ${PREFIX}/share/applications/telegramdesktop${FLAVOR_EXT}.desktop
+       find ${PREFIX} -type f -name telegram.png -execdir \
+           mv {} telegram${FLAVOR_EXT}.png \;
+       mv ${PREFIX}/share/metainfo/telegramdesktop{,${FLAVOR_EXT}}.metainfo.xml
+.else
+PATCHFILES +=          ${FORCE_QT5_PATCHFILE}
+
+WANTLIB += Qt5Core Qt5Gui Qt5Network Qt5Svg Qt5Widgets
+
+MODULES +=             x11/qt5
+LIB_DEPENDS +=         x11/qt5/qtsvg
+RUN_DEPENDS +=         x11/qt5/qtimageformats
+CONFIGURE_ARGS +=      -DDESKTOP_APP_QT6=OFF
+.endif
+
 
 post-extract:
        # All bundles:
Index: net/tdesktop/pkg/DESCR
===================================================================
RCS file: /cvs/ports/net/tdesktop/pkg/DESCR,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 DESCR
--- net/tdesktop/pkg/DESCR      26 Jan 2022 19:38:06 -0000      1.1.1.1
+++ net/tdesktop/pkg/DESCR      22 Jun 2022 18:22:49 -0000
@@ -1,2 +1,6 @@
 Telegram Desktop is the official desktop client for the Telegram messenger,
 based on the Telegram API and the MTProto secure protocol.
+
+Available flavors:
+
+  qt6: Built against Qt6 (default upstream, buggy on OpenSD) instead of Qt5
Index: net/tdesktop/pkg/PLIST
===================================================================
RCS file: /cvs/ports/net/tdesktop/pkg/PLIST,v
retrieving revision 1.2
diff -u -p -r1.2 PLIST
--- net/tdesktop/pkg/PLIST      9 Mar 2022 16:48:18 -0000       1.2
+++ net/tdesktop/pkg/PLIST      23 Jun 2022 16:04:52 -0000
@@ -1,13 +1,13 @@
-@bin bin/telegram-desktop
-share/applications/telegramdesktop.desktop
-share/icons/hicolor/128x128/apps/telegram.png
-share/icons/hicolor/16x16/apps/telegram.png
-share/icons/hicolor/256x256/apps/telegram.png
-share/icons/hicolor/32x32/apps/telegram.png
-share/icons/hicolor/48x48/apps/telegram.png
-share/icons/hicolor/512x512/apps/telegram.png
-share/icons/hicolor/64x64/apps/telegram.png
+@bin bin/telegram-desktop${FLAVOR_EXT}
+share/applications/telegramdesktop${FLAVOR_EXT}.desktop
+share/icons/hicolor/128x128/apps/telegram${FLAVOR_EXT}.png
+share/icons/hicolor/16x16/apps/telegram${FLAVOR_EXT}.png
+share/icons/hicolor/256x256/apps/telegram${FLAVOR_EXT}.png
+share/icons/hicolor/32x32/apps/telegram${FLAVOR_EXT}.png
+share/icons/hicolor/48x48/apps/telegram${FLAVOR_EXT}.png
+share/icons/hicolor/512x512/apps/telegram${FLAVOR_EXT}.png
+share/icons/hicolor/64x64/apps/telegram${FLAVOR_EXT}.png
 share/metainfo/
 @tag update-desktop-database
 @tag gtk-update-icon-cache %D/share/icons/hicolor
-share/metainfo/telegramdesktop.metainfo.xml
+share/metainfo/telegramdesktop${FLAVOR_EXT}.metainfo.xml

Reply via email to