Hi,

So I've noticed that my backups haven't been run for several weeks because vorta didn't start up because wayland. (I should make an automated check for that...)

Therefore, I made a script to find all similarly broken packages, which are:

Packages that use qt but (don't use qtwayland or don't use qt-build-system).

Because qt-build-system does the automatic wrapping of the programs in bin (and cmake-build-system doesn't).
And qtwayland... supports wayland in qt.

I also attached the output of the script run (qt-wayland-packages.txt).

For all those packages, let's slowly add qtwayland-5 (or whatever is appropriate) as an input--and also switch them to qt-build-system if they use cmake-build-system now.

Ideally, you would do that if you are using the package yourself. That way, you can also test it without undue burden to you (by setting the environment variable QT_QPA_PLATFORM=wayland you can make sure that qt tries to use wayland). I say that because in the case of vorta, adding qtwayland is not enough since the qt-wrap phase doesn't wrap already-wrapped files, so since python already wrapped a file, it won't be qt-enabled and thus will not work. So one has to test it.

My script is not (yet) smart enough to only include packages that have something in /bin in the installation [1]. Nevertheless, I would suggest not to add qtwayland to library packages but only to packages which contain programs.

I would like such a script to be a permanent feature in CI, checking periodically once a week or something. CI because (AFAIK) you have to build the packages so you know whether they have something in /bin, and because it includes KDE. We should also have a guix lint thing.

(Alternatively, we could make qtbase propagate qtwayland or something. That would cause a cyclic dependency, so we would need a qtbase-bootstrap package or directly bundle qtwayland with qtbase or something)

(Alternatively, we could add qtwayland to all the package as propagated-input. I'm against that since it will be bound to conflict if you nest environments and since it's an implementation detail)

(Alternatively, we could make the user add qtwayland to their guix home configuration (or guix system configuration, hell no). I'm against that since it will be bound to conflict if you nest environments and since it's an implementation detail)

WDYT?

[1] I do have the equivalent of the following running... but it's gonna take a while:

for s in $(guix build $(cat qtwayland-packages.txt))
do
  if [ -d "${s}/bin" ]
  then
     echo "$s"
  fi
done
ableton-link@3.0.3
akregator@24.05.2
alsa-modular-synth@2.2.1
android-file-transfer@4.3
anki@2.1.16
antimicrox@3.4.1
appstream-qt@1.0.3
appstream-qt6@1.0.3
aseba@1.6.0-0.3b35de8
atelier@0.1-pre-1.93d7d44
attica@5.116.0
attica@6.5.0
audacious@4.3.1
ausweisapp@2.2.2
ausweisapp2@2.2.2
avidemux@2.7.8
avogadro2@1.93.0
avogadrolibs@1.93.0
baloo@6.5.0
bandage@0.8.1
barrier@2.4.0
bitcoin-core@28.1
bitcoin-unlimited@2.1.0.0
bitmask@0.21.11
bluedevil@6.1.4
bluez-qt@6.5.0
bomber@24.12.1
bovo@24.12.1
brdf-explorer@1.0.0-1.5b2cd46f3
breeze-icons@6.5.0
calcmysky@0.3.3
calcmysky-qt5@0.3.3
calibre@5.44.0
calindori@24.05.2
calligra@4.0.1
candle@1.2b-1.3f763bc
cantata@2.5.0
carla@2.4.1
carla@2.6.0-0.aa40053
chessx@1.5.6
choqok@1.7.0
ckb-next@0.4.4-0.967f440
clementine@1.4.0rc1-450-g2725ef99d
cmst@2020.11.01
confclerk@0.6.4
converseen@0.12.0.2
cool-retro-term@1.2.0
copyq@8.0.0
cutecom@0.60.0-RC1
cutter@2.3.4
cvassistant@3.1.0
ddcui@0.5.4
diffpdf@2.1.3.1-1.ba68231
discover@6.1.4
djview@4.12
dolphin-emu@5.0-13669.f9deb68
dolphin-plugins@24.05.2
dotherside@0.9.0
drawpile@2.1.17-1.ed1a75deb
dream@2.2
drkonqi@6.1.4
drumkv1@1.2.0
dtk@1.7.1
electron-cash@4.4.1
elisa@24.05.2
enki@2.0pre-0.afd2d8e
evtest-qt@0.2.0
fcitx5-chinese-addons@5.1.8
fcitx5-configtool@5.1.8
fcitx5-qt@5.1.9
fcitx-qt5@1.2.7
feathernotes@0.10.0
fet@6.28.4
fielding@0.1-pre-2.4ee9aea
filelight@24.05.2
flacon@11.4.0
flameshot@12.1.0
flightgear@2020.3.18
flowee@2020.04.1
flyer-composer@1.0rc2
fmit@1.2.14
fontobene-qt@1.0.0
fontobene-qt5@1.0.0
francis@24.05.2
freecad@1.0.0
frescobaldi@3.3.0
fritzing@0.9.6
fulcrum@1.9.1
gcompris-qt@4.1
ghostwriter@24.12.1
gimagereader@3.4.2
glnemo2@1.21.0
gmic-qt@3.4.3
gmic-qt-gimp@3.4.3
gnuradio@3.10.11.0
gplates@2.5
gpsbabel@1.9.0
gpsd@3.23.1
gpxsee@13.22
gqrx@2.17.6
granatier@24.12.1
grantlee@5.3.1
gr-framework@0.69.1
gst-plugins-good-qt@1.22.3
haruna@1.3.2
hedgewars@1.0.2
heimdall@1.4.2
highlight@4.11
hime@0.9.11
hotspot@1.5.1
hydrogen@1.2.4
inspectrum@0.3.1
itinerary@24.05.2
itk-snap@3.8.0
jacktrip@1.6.8
jalv@1.6.8
jami@20240524.0
js8call@2.2.0
jtdx@2.2.158
juk@24.05.2
julia-qt5base-jll@5.15.2+0
kaccounts-providers@24.05.2
kactivities@5.116.0
kaffeine@2.0.18
kaidan@0.9.0
kajongg@24.12.1
kamoso@24.05.2
kapidox@6.5.0
kapman@24.12.1
karchive@5.116.0
karchive@6.5.0
kauth@5.116.0
kauth@6.5.0
kbackup@24.05.2
kblackbox@24.12.1
kblocks@24.12.1
kbookmarks@5.116.0
kbookmarks@6.5.0
kbounce@24.12.1
kbreakout@24.12.1
kcachegrind@24.05.2
kcalendarcore@6.5.0
kcmutils@5.116.0
kcmutils@6.5.0
kcodecs@5.116.0
kcodecs@6.5.0
kcolorscheme@6.5.0
kconfig@5.116.0
kconfig@6.5.0
kconfigwidgets@6.5.0
kcontacts@6.5.0
kcoreaddons@5.116.0
kcoreaddons@6.5.0
kcrash@5.116.0
kdbusaddons@5.116.0
kddockwidgets@2.1.0
kdeclarative@5.116.0
kdeclarative@6.5.0
kde-cli-tools@6.1.4
kded@5.116.0
kded@6.5.0
kde-frameworkintegration@6.5.0
kdegraphics-mobipocket@24.05.2
kdelibs4support@5.114.0
kdenlive@24.12.2
kdepim-runtime@24.05.2
kdeplasma-addons@6.1.4
kdesignerplugin@5.114.0
kdesu@6.5.0
kdevelop@24.05.2
kdevelop-pg-qt@2.2.2
kdf@24.05.2
kdiagram@3.0.1
kdiamond@24.12.1
kdiskmark@3.1.4
kdnssd@5.116.0
kdnssd@6.5.0
kdoctools@5.116.0
kdoctools@6.5.0
kdsoap@2.2.0
kdsoap-qt6@2.2.0
kemoticons@5.116.0
keysmith@24.05.2
kfilemetadata@5.116.0
kfilemetadata@6.5.0
kfind@24.05.2
kfourinline@24.12.1
kglobalaccel@5.116.0
kglobalaccel@6.5.0
kgoldrunner@24.12.1
kgraphviewer@2.5.0
khealthcertificate@24.05.2
khelpcenter@24.05.2
kholidays@6.5.0
khtml@5.116.0
ki18n@5.116.0
ki18n@6.5.0
kiconthemes@5.116.0
kiconthemes@6.5.0
kid3@3.9.5
kidletime@5.116.0
kidletime@6.5.0
kigo@24.12.1
killbots@24.12.1
kimageannotator@0.7.1
kimageformats@5.116.0
kimageformats@6.5.0
kinfocenter@6.1.4
kinit@5.116.0
kio@5.116.0
kio@6.5.0
kio-extras@24.05.2
kio-fuse@5.1.0
kirigami@5.116.0
kirigami@6.5.0
kirigami-addons@1.3.0
kiriki@24.12.1
kirogi@0.1-pre-1.73b009f
kitemmodels@5.116.0
kitemmodels@6.5.0
kitinerary@24.05.2
kitsas@5.7
kiwix-desktop@2.3.1
kjobwidgets@5.116.0
kjobwidgets@6.5.0
kjs@5.116.0
kjumpingcube@24.12.1
kldap@24.05.2
klines@24.12.1
kmahjongg@24.12.1
kmail@24.05.2
kmail-account-wizard@24.05.2
kmailcommon@24.05.2
kmailtransport@24.05.2
kmessagelib@24.05.2
kmines@24.12.1
kmix@24.05.2
kmousetool@24.05.2
kmouth@24.05.2
knavalbattle@24.12.1
knetwalk@24.12.1
knewstuff@5.116.0
knewstuff@6.5.0
knights@24.12.1
knotifications@5.116.0
knotifications@6.5.0
knotifyconfig@5.116.0
knotifyconfig@6.5.0
kochmorse@3.5.1
kolf@24.12.1
kollision@24.12.1
kongress@24.05.2
konquest@24.12.1
konsole@24.05.2
kontrast@24.05.2
konversation@24.08.0
kopeninghours@24.05.2
kopete@23.04.3
kosmindoormap@24.05.2
kpackage@5.116.0
kpackage@6.5.0
kparts@5.116.0
kparts@6.5.0
kpeople@6.5.0
kpeoplevcard@0.1
kpimcommon@24.05.2
kpimtextedit@24.05.2
kpipewire@6.1.4
kpmcore@24.05.2
kpty@6.5.0
kpublictransport@24.05.2
kqtquickcharts@24.05.2
kquickcharts@5.116.0
kquickcharts@6.5.0
kreversi@24.12.1
kristall@0.3-1.204b08a
krita@5.2.9
kronometer@2.3.0
krunner@5.116.0
krunner@6.5.0
krusader@2.8.1
kscreen@6.1.4
kscreenlocker@6.1.4
kseexpr@4.0.4.0
kservice@5.116.0
kservice@6.5.0
kshisen@24.12.1
ksirk@24.12.1
ksnakeduel@24.12.1
kspaceduel@24.12.1
ksquares@24.12.1
ksudoku@24.12.1
ksvg@6.5.0
ksyntaxhighlighting@5.116.0
ksyntaxhighlighting@6.5.0
ktextaddons@1.5.4
ktexteditor@5.116.0
ktexteditor@6.5.0
ktexttemplate@6.5.0
ktextwidgets@5.116.0
ktextwidgets@6.5.0
ktimer@24.05.2
ktorrent@24.05.2
ktouch@24.05.2
ktuberling@24.12.1
kubrick@24.12.1
kunitconversion@6.5.0
kuserfeedback@1.3.0
kvirc@5.2.6
kwallet@5.116.0
kwallet@6.5.0
kwave@24.05.2
kwindowsystem@5.116.0
kwindowsystem@6.5.0
kxmlgui@5.116.0
kxmlgui@6.5.0
kxstitch@2.2.0
labplot@2.10.1
latte-dock@0.10.9
leela-zero@0.17
leocad@23.03
lgogdownloader@3.15
lightburn@1.2.01
lightly@0.4.1
linphone-desktop@5.0.14
lmms@1.2.2
lskat@24.12.1
luminance-hdr@2.6.0
lximage-qt@2.1.0
lxqt@2.1.0
lxqt-archiver@1.1.0
lxqt-build-tools@2.1.0
lxqt-menu-data@2.1.0
lxqt-panel@2.1.4
lxqt-session@2.1.1
lyx@2.3.7
maliit-framework@2.3.0
maliit-keyboard@2.3.1
mame@0.252
manuskript@0.16.1
marble-qt@24.05.2
massif-visualizer@24.12.1
mcrl2@202307.1
medinria@4.0.0-0.de16bed
merkuro@24.05.2
meshlab@2022.02
mgba@0.10.4
milou@6.1.4
mimetreeparser@24.05.2
mixxx@2.5.0
mkvtoolnix@80.0
mlt@6.26.1
mlt@7.28.0
modemmanager-qt@6.5.0
molequeue@0.9.0
monero-gui@0.18.3.4
moonlight-common@6.1.0-1.8599b60
moonlight-qt@6.1.0
movim-desktop@0.14.0-3.83d583b
mpvqt@1.0.1
mumble@1.5.634
musescore@4.3.2
mygnuhealth@2.2.1
networkmanager-qt5@5.116.0
networkmanager-qt@6.5.0
nextcloud-client@3.8.2
nextpnr-ice40@0.7
nheko@0.12.0
nimf@1.2
nitrokey-app@1.4.2
nm-tray@0.5.0
nomacs@3.16.224
nvidia-system-monitor@1.5
obconf-qt@0.16.5
obs@30.1.2
obs-advanced-masks@1.1.0
obs-composite-blur@1.1.0
obs-gradient-source@0.3.2
obs-move-transition@3.0.1
obs-multi-rtmp@0.3.0.2-OBS29.1.1
obs-nvenc@30.1.2
obs-shaderfilter@2.0.0
obs-source-clone@0.1.5
obs-source-copy@0.2.4
obs-websocket@30.1.2
obs-with-cef@30.1.2
ocean-sound-theme@6.1.4
octave@9.3.0
okteta@0.26.15
openboard@1.7.3
openclonk@8.1
openconnect-sso@0.8.0
openmolar@1.1.6-g81838c85
openmw@0.48.0
openorienteering-mapper@0.9.5
openrgb@0.9
openscad@2021.01
openshadinglanguage@1.13.10.0
openshot@3.3.0
orange@3.32.0
owncloud-client@2.9.0.5150
oxygen-icons@6.0.0
packagekit-qt5@1.1.1
packagekit-qt6@1.1.1
padthv1@1.2.0
palapeli@24.12.1
papagayo@2.0b1-1.e143684b3
paraview@5.11.1
pavucontrol-qt@2.1.0
pencil2d@0.6.6
phonesim@1.21
phonon@4.12.0
phonon-backend-gstreamer@4.10.0
phonon-backend-vlc@0.12.0
photoflare@1.6.10
picmi@24.12.1
pinentry-qt@1.3.1
pinentry-qt5@1.3.1
plasma5support@6.1.4
plasma@6.1.4
plasma-active-window-control@1.7.3-1.0b1c091
plasma-activities@6.1.4
plasma-activities-stats@6.1.4
plasma-browser-integration@6.1.4
plasma-firewall@6.1.4
plasma-framework@5.116.0
plasma-mobile@5.24.3
plasma-mobile-settings@22.02
plasma-nano@6.1.4
plasma-nm@6.1.4
plasma-pa@6.1.4
plasma-pass@1.2.2
plasma-phonebook@0.1
plasma-phone-components@5.23.4
plasma-systemmonitor@6.1.4
plasmatube@24.12.1
plasma-vault@6.1.4
plasma-welcome@6.1.4
plover@4.0.0.dev12
pokerth@1.1.2
polkit-kde-agent@6.1.4
polkit-qt@0.200.0
polkit-qt6@0.200.0
poppler-qt5@22.09.0
poppler-qt6@22.09.0
powertabeditor@2.0.0-alpha19
poxml@24.12.1
print-manager@6.1.4
prison@6.5.0
psi@1.5.1484
psi-plus@1.5.1484
pulseaudio-qt@1.5.0
pulseview@0.4.2
pumpa@0.9.3
purpose@5.116.0
purpose@6.5.0
pyotherside@1.6.0
pyotherside-for-qt5@1.6.0
q5go@2.1.3
qbittorrent@5.0.3
qbittorrent-enhanced@5.0.3.10
qca@2.3.9
qca-qt6@2.3.9
qcheckers@0.9.0
qcoro-qt5@0.11.0
qcoro-qt6@0.11.0
qcustomplot@2.1.0
qdirstat@1.8.1
qdmr@0.12.1
qelectrotech@0.9.0
qgis@3.34.6
qgpgme@1.24.1
qgpgme-qt6@1.24.1
qhexedit@0.8.9
qhttp@3.1
qite@0-74.75fb3b6
qjackctl@1.0.3
qjackrcd@1.2.2
qjson@0.9.0
qlogo@0.92
qmapshack@1.17.1
qmdnsengine@0.0.1-1.b7a5a9f
qmidiarp@0.6.5
qmidiroute@0.4.0
qmmp@2.1.9
qoauth@2.0.0
qolibri@2.1.4
qpageview@0.6.2
qpdfview@0.5.0
qpwgraph@0.8.0
qqc2-breeze-style@6.1.4
qqc2-desktop-style@6.5.0
qsstv@9.5.8
qsynth@0.9.9
qt3d@5.15.15
qt5compat@6.7.2
qt5ct@1.8
qt6ct@0.9
qtcharts@5.15.15
qtcharts@6.7.2
qtcolorwidgets@2.2.0
qtconnectivity@5.15.15
qtconnectivity@6.7.2
qt-creator@14.0.1
qtdatavis3d@5.15.15
qtdcm@4.0
qtdeclarative@5.15.15
qtdeclarative@6.7.2
qterminal@2.1.0
qtermwidget@2.1.0
qtgamepad@5.15.15
qtgraphicaleffects@5.15.15
qthttpserver@6.7.2
qtimageformats@5.15.15
qtimageformats@6.7.2
qtimgui@0.0-0.48d64a7
qtkeychain@0.14.3
qtkeychain-qt6@0.14.3
qtlanguageserver@6.7.2
qtmips@0.7.5
qtox@1.17.6
qtpass@1.4.0
qtractor@1.4.0
qtremoteobjects@6.7.2
qtrvsim@0.9.5
qtscript@5.15.15
qtscxml@5.15.15
qtscxml@6.7.2
qtshadertools@6.7.2
qtsolutions@0-53.9568abd
qtspeech@5.15.15
qtspeech@6.7.2
qtspell@1.0.1
qtvirtualkeyboard@5.15.15
quassel@0.14.0
quaternion@0.0.95.1
quazip@0.9.1
quazip@1.4
qutebrowser@3.3.1
qview@6.1
qwindowkit@1.0.1
qwt@6.1.5
qxlsx@1.4.6
qxlsx-qt5@1.4.6
qxmpp@1.4.0
recoll@1.37.5
retroarch@1.20.0
retroarch-minimal@1.20.0
robocut@1.0.11
rosegarden@24.12
rpi-imager@1.8.5
rsibreak@0.12.15
ruqola@2.4.1
samplv1@1.2.0
scantailor-advanced@1.0.16-3d1e74e
screengrab@2.9.0
scribus@1.6.2
sdrangel@7.22.2
seer-gdb@1.16
shotcut@24.11.17
simplescreenrecorder@0.4.2
single-application-qt5@3.2.0-dc8042b
sioyek@2.0.0
sirikali@1.5.1
smb4k@3.2.92
smplayer@23.12.0
snorenotify@0.7.0
solarus@1.6.5
solarus-quest-editor@1.6.5
solid@5.116.0
solid@6.5.0
sonnet@5.116.0
sonnet@6.5.0
soqt@1.6.2
speedcrunch@0.12.0
sqlitebrowser@3.13.0
stellarium@24.4-0.60b6bec
strawberry@1.0.21
suil@0.10.20
supercollider@3.13.0
syncplay@1.7.3
syndication@6.5.0
synergy@1.11.1
synthv1@1.2.0
system-settings@6.1.4
tetzle@2.2.2
texmaker@5.0.4
the-butterfly-effect@0.9.3.1
threadweaver@5.116.0
threadweaver@6.5.0
tiled@1.8.6
tipp10@3.3.0
twinkle@1.10.2
uefitool@0.28.0
uim-qt@1.8.8
unixcw@3.6.0
uranium@4.13.1
v4l-utils@1.22.1
valeronoi@0.2.0
veusz@3.3.1
vite@1.4
vlc@3.0.21
vorta@0.9.1
vtk@8.1.2
wacomtablet@3.2.0
warsow-qfusion@2.5-1.c4de15d
warzone2100@4.3.5
welle-io@2.5
wfview@2.03
wireshark@4.4.1
wpa-supplicant-gui@2.10
wsjtx@2.6.1
x2goclient@4.1.2.3
xpdf@4.05
xygrib@1.2.6.1
yakuake@24.05.2
yggtray@0.1.7
yubikey-manager-qt@1.2.5
zbar@0.23.90
zeal@0.7.1
(use-modules (guix packages)
             (gnu packages)
             (guix build-system qt)
             (srfi srfi-1)
             (ice-9 match))

(define qt-inputs?
  (lambda (pkg)
    (or (find (match-lambda
               ((name dependency rest ...)
                (and (package? dependency)
                     (string-prefix?
                      "qt"
                      (package-name dependency)))))
              (append
                (package-inputs pkg)
                (package-propagated-inputs pkg))))))

(define qt5-inputs?
  (lambda (pkg)
    (or (find (match-lambda
               ((name dependency rest ...)
                (and (package? dependency)
                     (and (string-prefix? "qt" (package-name dependency))
                          (string-prefix? "5" (package-version dependency))))))
              (append
                (package-inputs pkg)
                (package-propagated-inputs pkg))))))

(define qtwayland-inputs?
  (lambda (pkg)
    (or (find (match-lambda
               ((name dependency rest ...)
                (and (package? dependency)
                     (string-contains
                       (package-name dependency)
                        "qtwayland"))))
              (append
                (package-inputs pkg)
                (package-propagated-inputs pkg))))))

(define qt-build-system?
  (lambda (pkg)
    (eq? (package-build-system pkg)
         qt-build-system)))

(for-each
  (lambda (pkg)
    (format #t "~a@~a~%" (package-name pkg) (package-version pkg)))
  (filter (lambda (pkg)
            (and (qt-inputs? pkg)
                 (or (not (qtwayland-inputs? pkg))
                     (not (qt-build-system? pkg)))))
          (fold-packages cons '())))
  • Waylandify all th... dannym

Reply via email to