alexkay / spek

Acoustic spectrum analyser
http://spek.cc
GNU General Public License v3.0
2.64k stars 262 forks source link

Publish Flatpak releases to Flathub #256

Closed nalsai closed 1 year ago

nalsai commented 1 year ago

Hey, I wanted to ask If you would be interested in publishing a Flatpak of Spek to Flathub?

I already made a Flatpak for myself: https://github.com/Nalsai/SpekFlatpak There would only be some small changes needed to submit it to Flathub. If you want, I can submit it to Flathub and maintain the Flatpak.

Related Issues: https://github.com/alexkay/spek/issues/133 https://github.com/alexkay/spek/issues/252 https://github.com/alexkay/spek/issues/173

alexkay commented 1 year ago

@Nalsai, thank you for making the Flatpak build and offering to maintain it. Let me know how I can help.

nalsai commented 1 year ago

Awesome! The following things need to be addressed, then I'll make a submission:

  1. Spek does not include mandatory metadata (appstream metainfo.xml file) I made the necessary file: https://github.com/Nalsai/SpekFlatpak/blob/main/cc.spek.Spek.metainfo.xml It can be included with flatpak manifest but should ideally be included upstream. (Then it can also be translated) It should be installed to $(datadir)/metainfo. https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html

  2. The freedesktop runtime 22.08 includes the following ffmpeg library versions, which are lower than required (https://github.com/alexkay/spek/commit/44229e94cf66a3a0acc3677cc96aabf0fd0176f2): libavformat 59.16.100, libavcodec 59.18.100, libavutil 57.17.100

    line 146 of src/spek-audio.cc was changed in https://github.com/alexkay/spek/commit/b956c1fd78cea3a79d0cbfa91e9d5c1b0a71229e which doesn't build with the older versions included in the Flatpak runtime.

    I currently use patches to lower the requirements and use the old channels instead of ch_layout.nb_channels https://github.com/Nalsai/SpekFlatpak/blob/main/configure.ac.patch https://github.com/Nalsai/SpekFlatpak/blob/main/spek-audio.cc.patch I'll probably include a custom ffmpeg build in the Flatpak instead of using the included one. Most other Flatpaks do that too.

alexkay commented 1 year ago

Awesome! The following things need to be addressed, then I'll make a submission:

  1. Spek does not include mandatory metadata (appstream metainfo.xml file) I made the necessary file: https://github.com/Nalsai/SpekFlatpak/blob/main/cc.spek.Spek.metainfo.xml It can be included with flatpak manifest but should ideally be included upstream. (Then it can also be translated) It should be installed to $(datadir)/metainfo. https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html

I merged your PR, thank you!

  1. The freedesktop runtime 22.08 includes the following ffmpeg library versions, which are lower than required (44229e9): libavformat 59.16.100, libavcodec 59.18.100, libavutil 57.17.100 line 146 of src/spek-audio.cc was changed in b956c1f which doesn't build with the older versions included in the Flatpak runtime. I currently use patches to lower the requirements and use the old channels instead of ch_layout.nb_channels https://github.com/Nalsai/SpekFlatpak/blob/main/configure.ac.patch https://github.com/Nalsai/SpekFlatpak/blob/main/spek-audio.cc.patch I'll probably include a custom ffmpeg build in the Flatpak instead of using the included one. Most other Flatpaks do that too.

Do you mind if I keep the min version as is? Patching those files for now sound good, eventually including custom FFmpeg build is even better. You can find some of the suggested customisations here (note that it's quite outdated, I'll update it in the coming weeks as I work on the new Windows build).

nalsai commented 1 year ago

I already switched to using a custom ffmpeg build for the flathub submission, so no patches are needed anymore. Here are the configure options: https://github.com/Nalsai/flathub/blob/cc.spek.Spek/cc.spek.Spek.yml#L40 It should have the default demuxers (so it can get audio from video files too) and all audio demuxers, decoders and parsers. I definitely left some unnecessary demuxers enabled but apart from that everything unnecessary should be disabled. I based it on the custom ffmpeg build for AcoustID (https://github.com/acoustid/ffmpeg-build/blob/main/common.sh)

Once you updated your windows build we should use the same configure options for simplicity.

alexkay commented 1 year ago

@Nalsai, I ended up using simpler ./configure flags for the Windows build. I like the idea of turning off all unnecessary features, but keeping the flags up to date is I think not worth the potential executable size decrease: https://github.com/alexkay/spek/blob/499e58ea93a1bf76e144ebf1c6532e89e2655e1f/dist/win/mxe.diff#L48-L84

Going to close this issue, thank you again for working on the Flatpak and let me know if there's anything else I can help with.

nalsai commented 1 year ago

I totally understand that. I'll update the flags and add a comment pointing to the one's in the windows build when I have time. I'm just waiting for the next release (with the metadata from #258 included) to mark the Flatpak as ready then.

alexkay commented 1 year ago

I'm just waiting for the next release (with the metadata from #258 included) to mark the Flatpak as ready then.

Got it, this should take a few weeks. I want to fix the output on HiDPI monitors and make a binary macOS build before tagging a new release.

illtellyoulater commented 7 months ago

...