Closed llucps closed 3 years ago
I didn't know that the x86 binary dmg was running at all on arm, I have no way of testing it. But Qt does not have full support yet for macOS arm, and there are known issues. I think they plan to support it in Qt 6.2 which should be released in September. I might add a note on the homepage about it. Looking at the backtrace, it looks to be Qt related, not specific to strawberry code at all. See: https://bugreports.qt.io/browse/QTBUG-85279
I don't know why but I just downloaded the latest build and now it runs really well under rossetta 2. I'll close the ticket.
Thanks.
Nice. How is the performance?
Coming from a Macbook Pro 13 Late 2013 to a Mac mini M1 is like night and day in terms of performance :) Even running under rossetta 2 (emulating X86 instructions) it's way more responsive than the running it natively on the Macbook. I guess if one day arm builds are available it will fly :D
Hopefully one day arm64 builds will be reality :) I don't want to install Homebrew in case it mess up with Macports.
I made instructions to compile with macports here: https://github.com/strawberrymusicplayer/strawberry/wiki/Compile-and-install-on-macOS-using-macports
Thank you @jonaski ,
Unfortunately the fftw and gstreamer1-gst-plugins-good packages don't have builds for arm64, so I'll have to wait, nothing you can do about it I'm afraid ;).
Although I tried to compile it anyway just to give it a try and two things I noticed right off the bat:
Oh well thank you anyway, I guess as soon of those two packages are available for arm64 I'll be able to compile a working strawberry build.
But the make -j$ choking up my computer it's a mystery.. and I tried several times.
Thanks!
fftw is only required for moodbar. But gst plugins good is needed for most formats, flac, mp3, etc, but if libav works, it might still for flac and mp3, etc. You can just do; make without the nproc to be safer, but it will be slow.
I managed to install all the packages except ffwt and gstreamer1-gst-plugins-good and compile it.
Strawberry launches and runs successfully but and when I try to play a song I get:
GStreamer could not create the element: osxaudiosink
Backend preferences with Strawberry arm64 compiled build:
Backend preferences with Strawberry OSX86 build:
Any idea what I could try?
Thanks.
Then it won't work without the good plugins, because osxaudiosink is part of good, not base. https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good/html/gst-plugins-good-plugins-osxaudiosink.html
Oh well, I'll have to wait until it's available for arm64. It's just a matter of time :)
Thanks!
Good news :) the gstreamer1-gst-plugins-good package was successfully compiled yesterday and I have been able to build Strawberry for Apple Silicon with macports
By the way, the result binary is just 32MB in size compared to the regular x86 build which is 175MB or so.
Now the next thing it will be compile it with QT6, let's how long it takes to ba available on macports, although I see no difference in performance between QT5 and QT6.
Thanks for your help!
I'm curious if it is possible to compile a minimal Strawberry build using only the components that I need which I only use Subsonic support and whether it would have an impact on the RAM used when using Strawberry, currently it takes 175MB after launching.
So running
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH=/opt/local/lib/cmake -DBUILD_WITH_QT5=ON -DUSE_BUNDLE=OFF -DENABLE_SPARKLE=OFF
I get:
Building strawberry version: 0.9.3-281-g5b7fc80f
The following components will be built:
D-Bus support
Devices: Audio CD support
Devices: MTP support
Devices: UDisks2 backend
Engine: GStreamer backend
Global shortcuts
Moodbar
MusicBrainz integration
PulseAudio integration
Qobuz support
Song fingerprinting and tracking
Subsonic support
Tidal support
Translations
The following components WILL NOT be built:
ALSA integration (missing alsa)
Devices: GIO device backend (missing Unix or Windows)
Devices: iPod classic support (missing libgpod)
Engine: VLC backend (missing libvlc)
Sparkle integration (disabled in CMake config)
X11 global shortcuts (missing X11, qpa/qplatformnativeinterface.h)
How can discard some of the components? for example I don't need Audio CD support, MTP, Moodbar, Qobuz and Tidal. Is it possible?
Thanks!
You can type ccmake ..
after cmake
to show the different options.
But I doubt disabling anything will have much impact on memory usage.
You can definitely disable dbus and udisks2, they usually do not have any function on macOS.
-DENABLE_DBUS=OFF -DENABLE_UDISKS2=OFF
Thanks I'll give it a try and let you know.
Yes you're right, it made no difference ;)
Thanks.
Sorry to re-open an old issue, but it seemed the best place to ask:
Would it make sense to create an issue that's basically a feature request for Apple Silicon support so people who are interested can subscribe to it, so we'll know when something happens on that front?
I just started using Strawberry yesterday. (First time on Mac, coming from Ubuntu). I like it so far, but I imagine going native instead of relying on Rosetta would improve performance and possibly solve some quirks I've experienced. (I'm new to Strawberry, so I have no way of knowing if those quirks are architecture-related or a separate issue.)
It's not very likely that I'll make an ARM based macOS release any time soon. The best I can do is to publish releases for x64_86 that can be used with rosetta. The problem is that GitHub actions CI does not have macOS/arm support, only intel. If this changes it will be no problem and I will of course add it. You can see the progress here: https://github.com/actions/runner/issues/805 The other alternative is that someone else volunteers to manually build releases. I will probably make a new release shortly after the release of Qt 6.2 (scheduled to be released today) is available that will hopefully work better on arm based macs even if it's compiled for x64_86.
[...] The problem is that GitHub actions CI does not have macOS/arm support, only intel. If this changes it will be no problem and I will of course add it. You can see the progress here: actions/runner#805
Seems, the above referenced issue with actions project got closed meantime. Seems, self-hosted M1 machines now generally available: https://github.com/actions/runner/issues/805#issuecomment-1255021755 - which is probably not helping for Strawberry M1 builds... But it also seems github-hosted M1 machines now in Beta. https://github.com/github/roadmap/issues/528
May you could give it a try for Strawberry? 🤩
@llucps said:
But the make -j$ choking up my computer it's a mystery.. and I tried several times
I hit this, & realised it was because nproc
isn't a command (on Ventura/M1) & rather than fail this runs make -j
which imposes no limit on the number of concurrent jobs.
My build failed with some missing include files:
/Users/richard.barnett/build/strawberry/build/ext/libstrawberry-tagreader/tagreadermessages.pb.h:11:10: fatal error: 'google/protobuf/port_def.inc' file not found
This file exists in:
/opt/homebrew/include/google/protobuf/port_def.inc
/opt/homebrew/Cellar/protobuf/23.4/include/google/protobuf/port_def.inc
but I don't know how to tell (c)make to find it.
If you hit this, did you manage to fix it?
Add -DPROTOBUF_INCLUDE_DIRS=/opt/homebrew/include
to the end of the cmake command.
Add
-DPROTOBUF_INCLUDE_DIRS=/opt/homebrew/include
to the end of the cmake command.
Thanks, I thought I'd tried this but I think I fat-fingered it
@jonaski not sure if you can help with errors from make deploy
:
...
Log: inspecting "strawberry.app/Contents/PlugIns/platforms/libqcocoa.dylib"
ERROR: Cannot resolve rpath "@rpath/QtGui.framework/Versions/A/QtGui"
ERROR: using QList("/Users/richard.barnett/build/strawberry/build/lib")
...
Suspect these might be because my Homebrew is under /opt/homebrew
? These frameworks exist in
/opt/homebrew/lib/QtGui.framework
/opt/homebrew/Frameworks/QtGui.framework
@jonaski not sure if this is related to https://github.com/orgs/Homebrew/discussions/2823
macdeployqt does not understand those rpaths. You need to manually replace them, something like this.:
sudo install_name_tool -change "@rpath/QtGui.framework/Versions/A/QtGui" "/opt/homebrew/Frameworks/QtGui.framework/Versions/A/QtGui" strawberry.app/Contents/PlugIns/platforms/libqcocoa.dylib
But here are probably more, so you need to do the same for all of them.:
otool -L strawberry.app/Contents/PlugIns/platforms/libqcocoa.dylib
Will show all of them.
And there are probably more libraries with similar issue, so you might need to write a script to do everything.
On x86_64 there is a similar issue, but there rpaths points to relative @loader_path
paths which also macdeployqt does not understand. I wrote a small script to deal with those:
https://github.com/strawberrymusicplayer/strawberry/blob/dc01a18b87309860380d05baeb66acb479707686/.github/workflows/build.yml#L830
Looking at https://github.com/orgs/Homebrew/discussions/2823, one of the guys suggest changing the id of the libraries with install_name_tool, that might be a easier fix.
This issue should be addressed in macdeployqt anyway, I might look into it when I have more time, but right now I'm going to try moving away from homebrew anyway.
Thanks @jonaski - will try some of your suggestions.
Hi,
I'm fully aware that the builds are for X86_64, and there is no Apple Silicon build yet. But I don't mind to run Strawberry with rosetta 2, it works well except for one thing. Every time I right click with the mouse Strawberry crashes instantly.
I don't know whether there is a simple fix for this. I'll attach the crash log below. As a side note, this doesn't happen with Clementine, although the CPU usage is quite high 20% at least it doesn't crash.
I also know there are instructions to compile Strawberry through Homebrew, but I decided not to use Homebrew anymore, just macports. Hopefully one day there will be a arm build.
Thanks!