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

[20.09] Build some KDE Applications with Qt 5.15 #98657

Merged

Conversation

ttuegel
Copy link
Member

@ttuegel ttuegel commented Sep 24, 2020

Motivation for this change

Some KDE PIM Applications are broken without Qt 5.15.

Fixes #98834

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 nixpkgs-review --run "nixpkgs-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.

Copy link
Contributor

@jonringer jonringer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all-packages.nix still needs cantata to be updated:

error: while evaluating 'callPackageWith' at /home/jon/.cache/nixpkgs-review/pr-98657/nixpkgs/lib/customisation.nix:117:35, called from /home/jon/.cache/nixpkgs-review/pr-98657/nixpkgs/pkgs/top-level/all-packages.nix:2600:13:
while evaluating 'makeOverridable' at /home/jon/.cache/nixpkgs-review/pr-98657/nixpkgs/lib/customisation.nix:67:24, called from /home/jon/.cache/nixpkgs-review/pr-98657/nixpkgs/lib/customisation.nix:121:8:
anonymous function at /home/jon/.cache/nixpkgs-review/pr-98657/nixpkgs/pkgs/applications/audio/cantata/default.nix:1:1 called with unexpected argument 'vlc', at /home/jon/.cache/nixpkgs-review/pr-98657/nixpkgs/lib/customisation.nix:69:16

@ttuegel
Copy link
Member Author

ttuegel commented Sep 26, 2020

Needs #98862

@worldofpeace worldofpeace added this to To Do in 20.09 Blockers via automation Sep 26, 2020
@worldofpeace worldofpeace added this to the 20.09 milestone Sep 26, 2020
@worldofpeace
Copy link
Contributor

@ttuegel Merged. Please rebase.

Copy link
Contributor

@worldofpeace worldofpeace left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good

@jonringer
Copy link
Contributor

@GrahamcOfBorg eval

@ttuegel ttuegel force-pushed the release-20.09--kde-applications-qt-5.15 branch from a649a52 to 38a7ffa Compare September 27, 2020 11:18
@ofborg ofborg bot removed the 6.topic: python label Sep 27, 2020
@jonringer
Copy link
Contributor

I did a nixpkgs-review, if this looks right @ttuegel feel free to merge

https://github.com/NixOS/nixpkgs/pull/98657
70 packages marked as broken and skipped:
akonadi akregator calligra elisa k9copy kaddressbook kgpg kitinerary kleopatra kmail kmymoney kontact korganizer kpkpass kwave libsForQt5.akonadi-calendar libsForQt5.akonadi-contacts libsForQt5.akonadi-import-wizard libsForQt5.akonadi-mime libsForQt5.akonadi-notes libsForQt5.akonadi-search libsForQt5.baloo-widgets libsForQt5.breeze-qt5 libsForQt5.calendarsupport libsForQt5.eventviews libsForQt5.grantleetheme libsForQt5.incidenceeditor libsForQt5.kalarmcal libsForQt5.kcalutils libsForQt5.kdegraphics-mobipocket libsForQt5.kdepim-addons libsForQt5.kdepim-apps-libs libsForQt5.kdepim-runtime libsForQt5.kdewebkit libsForQt5.khotkeys libsForQt5.kidentitymanagement libsForQt5.kimap libsForQt5.kipi-plugins libsForQt5.kitinerary libsForQt5.kldap libsForQt5.kmail-account-wizard libsForQt5.kmailtransport libsForQt5.kmbox libsForQt5.kmime libsForQt5.kontactinterface libsForQt5.kpimtextedit libsForQt5.kpkpass libsForQt5.kqtquickcharts libsForQt5.kreport libsForQt5.ksmtp libsForQt5.ktnef libsForQt5.libgravatar libsForQt5.libkcddb libsForQt5.libkdcraw libsForQt5.libkdegames libsForQt5.libkdepim libsForQt5.libkexiv2 libsForQt5.libkgapi libsForQt5.libkipi libsForQt5.libkleo libsForQt5.libkmahjongg libsForQt5.libkomparediff2 libsForQt5.libksane libsForQt5.libksieve libsForQt5.mailcommon libsForQt5.mailimporter libsForQt5.messagelib libsForQt5.pim-sieve-editor libsForQt5.pimcommon minuet

40 packages failed to build:
digikam libsForQt512.akonadi-calendar libsForQt512.akonadi-contacts libsForQt512.akonadi-import-wizard libsForQt512.akonadi-mime libsForQt512.akonadi-notes libsForQt512.akonadi-search libsForQt512.calendarsupport libsForQt512.eventviews libsForQt512.grantleetheme libsForQt512.incidenceeditor libsForQt512.kalarmcal libsForQt512.kcalutils libsForQt512.kdepim-addons libsForQt512.kdepim-apps-libs libsForQt512.kdepim-runtime libsForQt512.kidentitymanagement libsForQt512.kimap libsForQt512.kitinerary libsForQt512.kldap libsForQt512.kmail-account-wizard libsForQt512.kmailtransport libsForQt512.kmbox libsForQt512.kmime libsForQt512.kpimtextedit libsForQt512.kpkpass libsForQt512.ksmtp libsForQt512.ktnef libsForQt512.libgravatar libsForQt512.libkdepim libsForQt512.libkgapi libsForQt512.libkleo libsForQt512.libksieve libsForQt512.mailcommon libsForQt512.mailimporter libsForQt512.messagelib libsForQt512.pim-sieve-editor libsForQt512.pimcommon virtmanager-qt zanshin

165 packages built:
amarok ark bomber bovo dolphin ffmpegthumbs filelight granatier gwenview heaptrack k3b kalzium kapman kapptemplate kate katomic kblackbox kblocks kbounce kcachegrind kcalc kcharselect kcolorchooser kdeconnect kdev-php kdev-python kdevelop kdevelop-unwrapped kdf kdialog kdiamond kdiff3 keditbookmarks kexi kfind kfloppy kget kgraphviewer khelpcenter kig kigo kile killbots klettres klines kmag kmines kmix kmplot knavalbattle knetwalk knights kollision kolourpaint kompare konsole konversation krdc krename kreversi krfb kronometer krusader kshisen ksquares kstars ksystemlog kteatime ktimer ktimetracker ktorrent ktouch kturtle kwalletmanager libsForQt5.kdiagram libsForQt5.kdoctools libsForQt512.baloo-widgets libsForQt512.breeze-qt5 libsForQt512.kdegraphics-mobipocket libsForQt512.kdewebkit libsForQt512.kdiagram libsForQt512.kdoctools libsForQt512.kipi-plugins libsForQt512.kontactinterface libsForQt512.kqtquickcharts libsForQt512.kreport libsForQt512.libkcddb libsForQt512.libkdcraw libsForQt512.libkdegames libsForQt512.libkexiv2 libsForQt512.libkipi libsForQt512.libkmahjongg libsForQt512.libkomparediff2 libsForQt512.libksane libsForQt514.akonadi-calendar libsForQt514.akonadi-contacts libsForQt514.akonadi-import-wizard libsForQt514.akonadi-mime libsForQt514.akonadi-notes libsForQt514.akonadi-search libsForQt514.baloo-widgets libsForQt514.breeze-qt5 libsForQt514.calendarsupport libsForQt514.eventviews libsForQt514.grantleetheme libsForQt514.incidenceeditor libsForQt514.kalarmcal libsForQt514.kcalutils libsForQt514.kdegraphics-mobipocket libsForQt514.kdepim-addons libsForQt514.kdepim-apps-libs libsForQt514.kdepim-runtime libsForQt514.kdewebkit libsForQt514.kdiagram libsForQt514.kdoctools libsForQt514.khotkeys libsForQt514.kidentitymanagement libsForQt514.kimap libsForQt514.kipi-plugins libsForQt514.kitinerary libsForQt514.kldap libsForQt514.kmail-account-wizard libsForQt514.kmailtransport libsForQt514.kmbox libsForQt514.kmime libsForQt514.kontactinterface libsForQt514.kpimtextedit libsForQt514.kpkpass libsForQt514.kqtquickcharts libsForQt514.kreport libsForQt514.ksmtp libsForQt514.ktnef libsForQt514.libgravatar libsForQt514.libkcddb libsForQt514.libkdcraw libsForQt514.libkdegames libsForQt514.libkdepim libsForQt514.libkexiv2 libsForQt514.libkgapi libsForQt514.libkipi libsForQt514.libkleo libsForQt514.libkmahjongg libsForQt514.libkomparediff2 libsForQt514.libksane libsForQt514.libksieve libsForQt514.mailcommon libsForQt514.mailimporter libsForQt514.messagelib libsForQt514.pim-sieve-editor libsForQt514.pimcommon marble massif-visualizer okteta okular partition-manager peruse picmi rsibreak skanlite skrooge soundkonverter spectacle tellico trojita yakuake

@jonringer
Copy link
Contributor

also used this as a good example to improve nixpkgs-review Mic92/nixpkgs-review#131

@ttuegel ttuegel merged commit ddb27d8 into NixOS:release-20.09 Sep 28, 2020
20.09 Blockers automation moved this from To Do to Done Sep 28, 2020
@tbenst
Copy link
Contributor

tbenst commented Sep 30, 2020

@ttuegel I'm getting the following error after the recent changes to KDE applications:
error: undefined variable 'dolphin-plugins' at /Computer/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix:284:11 (use '--show-trace' to show detailed location information)

@jonringer
Copy link
Contributor

@tbenst thanks for mentioning something, I did a fix in #99139

@edolstra
Copy link
Member

edolstra commented Oct 1, 2020

Why does KDE require multiple versions of Qt? I noticed after rebuilding my system on 20.09 that I now have three different versions of Qt in the system closure, which IMHO is not really an acceptable amount of bloat. Surely upstream KDE is supposed to build against a single version of Qt?

@ttuegel
Copy link
Member Author

ttuegel commented Oct 2, 2020

Why does KDE require multiple versions of Qt? I noticed after rebuilding my system on 20.09 that I now have three different versions of Qt in the system closure, which IMHO is not really an acceptable amount of bloat.

The basic Plasma installation, including the desktop and base applications like Dolphin and Konsole, depends only on Qt 5.12, which is the latest version that is compatible with Plasma and also in Nixpkgs. Some applications may require a newer version (most notably, the KDE PIM suite) and they get the latest compatible version.

Surely upstream KDE is supposed to build against a single version of Qt?

There is no monolithic KDE upstream; there is the Plasma desktop (which we build with a single Qt version) and there are independent applications. Other distros deal with this by building packages with whatever version of Qt is required and dynamically linking at runtime to whatever version of Qt happens to be in /usr/lib. Obviously, that's not an option for us. The alternatives considered were:

  1. The present situation: build everything with the latest compatible Qt version.
  2. Use Qt 5.15 (the latest) for everything. Drawback: Plasma is pretty broken at runtime. This configuration is not supported upstream.
  3. Use Qt 5.12 (LTS) for everything. Drawback: Plasma works, but many KDE PIM applications are broken.

@worldofpeace worldofpeace added this to In progress in 20.09 Blockers via automation Oct 5, 2020
@worldofpeace worldofpeace removed this from Done in 20.09 Blockers Oct 5, 2020
@worldofpeace worldofpeace moved this from In progress to Done in 20.09 Blockers Oct 5, 2020
@nixos-discourse
Copy link

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/what-should-stable-nixos-prioritize/9646/1

@doronbehar
Copy link
Contributor

doronbehar commented Oct 28, 2020

This will be slightly reverted once #101369 will be backported.

EDIT: Slightly.

@jonringer
Copy link
Contributor

If it improves the user experience, I'm okay with backporting.

I would just like for someone to verify with plasma as their DM, as we've had sever awkward runtime issues in the past

@worldofpeace
Copy link
Contributor

@doronbehar Because @ttuegel is the maintainer of Qt I would only permit a backport if he approves of it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

None yet

7 participants