-
-
Notifications
You must be signed in to change notification settings - Fork 14.5k
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
chatterino2: fix install on macOS #79067
Conversation
On Darwin/macOS, chatterino2's install phase copies no files into the output. `make install` does not copy chatterino2.app. Copy the .app manually, fixing the installation. With this patch, chatterino2 almost works on macOS. Issue NixOS#42893 applies, so to make chatterino2 work, you must install qtbase in your environment. For example: $ nix-env -iA nixpkgs.qt5.qtbase $ open ~/.nix-profile/Applications/chatterino.app
You should be able to use |
Thanks for pointing this out to me! It looks like that feature has no effect on macOS binaries installed in Applications. I'll look into fixing that. EDIT: Actually, it looks like wrapQtAppsHook's automatic wrapping is ELF-specific [1]. I'll explicitly call wrapQtApp here as a workaround. [1]
|
wrapQtAppsHook ignores Mach-O binaries [1]. Additionally, wrapQtAppsHook doesn't look inside $out/Applications [2], which is where chatterino2 is installed. This means chatterino2 for Darwin/macOS is not wrapped properly, causing the following error when launched: > qt.qpa.plugin: Could not find the Qt platform plugin "cocoa" in "" > > This application failed to start because no Qt platform plugin could > be initialized. Reinstalling the application may fix this problem. On macOS, explicitly wrap chatterino2's executable. [1] pkgs/development/libraries/qt-5/hooks/wrap-qt-apps-hook.sh line 85 [2] pkgs/development/libraries/qt-5/hooks/wrap-qt-apps-hook.sh line 76
Ohh nice find, would be good if this was fixed in wrapQtAppsHook directly |
@@ -10,8 +10,15 @@ mkDerivation rec { | |||
sha256 = "0i2385hamhd9i7jdy906cfrd81cybw524j92l87c8pzrkxphignk"; | |||
fetchSubmodules = true; | |||
}; | |||
nativeBuildInputs = [ qmake pkgconfig ]; | |||
nativeBuildInputs = [ qmake pkgconfig wrapQtAppsHook ]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this already uses the custom deriver that add wrapQtAppsHook
, so you don't need to add it here explicitly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand that the dependency is implied. I think it's clearer if the dependency is explicit, though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not implied, the deriver adds the dependency by design, and in 19.09 we had fix several 100+ expressions to use mkDerivation
instead of stdenv.mkDerivation
because people didn't read the docs.
It was even requested in the PR that initially was meant fix this #78296 https://github.com/NixOS/nixpkgs/compare/c2ce79000873d1936c07ec0261c200927c2bb40c..717c2207c2a0fe702ff678af230e583e05deb177
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not implied, the deriver adds the dependency by design
That's what I meant when I said "the dependency is implied". The dependency is implied when using mkDerivation from pkgs/development/libraries/qt-5/mkDerivation.nix (instead of stdenv.mkDerivation).
On line 20, we call wrapQtApp in postFixup (on Darwin). wrapQtApp requires a dependency on wrapQtAppsHook. That's why I added the dependency here on line 13. If expressing the dependency here is a bug, let me know so I can remove it. My current understanding is that expressing the dependency here is merely optional.
ping cc @rexim, @doronbehar |
Can't test on darwin @strager Sorry :/. |
On Darwin/macOS, chatterino2's install phase copies no files into the output.
make install
does not copy chatterino2.app. Copy the .app manually, fixing the installation.Additionally, apply a workaround for issue #42893. Otherwise, the installed .app crashes unless qtbase is separately installed in the user's environment.
Motivation for this change
Things done
sandbox
innix.conf
on non-NixOS linux)nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
./result/bin/
)nix path-info -S
before and after)