>> Home / packaging / opensuse, linux, multimedia
∵ Julius Enriquez ∴ 2024-06-15 ∞ 6'
Recently, I've begun learning how to do RPM packaging and contribute to openSUSE. Originally I started with attempting to package a modernised port of Turbo Vision 2.0, as a preceding step to getting the Turbo text editor packaged in openSUSE. However, that's been taking a while. So in the meantime, I proceeded to try next with fooyin.
fooyin takes very strong inspiration from foobar2000, a music player for people with large local collections that has a modular interface and all sorts of features for music organisation. Despite being a relatively much newer app, fooyin already shares many of the same features as foobar2k. It even has it's own scripting language, FooScript! As of time of writing. the package fooyin
is now available in openSUSE Tumbleweed at version 0.4.5
.
Just like back when I started out with Haiku packaging, the process of learning RPM packaging and getting familiar with openSUSE's packaging infrastructure took a lot of trial-and-error and stumbling around. While the RPM Packaging Guide, openSUSE Packaging Guidelines, and Fedora Packaging Guidelines were very useful resources to lean on, they can be a bit much for someone starting out to read through in their entirety. Also, there were some learnings throughout the journey of packaging this that seemingly aren't really available in any of these references. In the interest of preventing future repeat stumblings, here's some of them:
Group
isn't really necessary anymore: Putting in what group that the package belongs to is no longer needed. Apparently this has been obsolete for a decade or more?cmake(build_dep)
as much as possible: For build dependencies when using CMake, instead of outright putting in the package names have them be inside cmake()
.c++_compiler
instead of gcc-c++
: In older spec files, gcc-c++
is defined for the C++ compiler to use. However for new spec files, c++_compiler
is preferred. I do not know why exactly this is the case, but my hunch is it has something to do with Clang.*
) for directories: It is not actually necessary to define all of the expected files and folders in a package, despite what rpmbuild
may say.With fooyin successfully packaged, it was time to install the darn thing and actually use it. Going to admit, a prolly unreasonable amount of time was spent moving UI elements around to get a feel for a good custom layout. It was fun and frustrating, but mostly the former! In the end, two custom layouts were made:
Sofa layout
Topper layout
There's also a Script Sandbox for playing around with FooScript, a homegrown scripting language for creating plugins with. Perhaps I may learn more FooScript later on for fun, could be interesting. There aren't many plugins made yet, but this is prolly due to fooyin being a relatively new project. Really do like the Waveform Seekbar widget in particular, since it shows the playing track's waveform spectrum instead of the usual slider. Oh, fooyin also handles large collections rather well; both in the tools it provides for managing them and performance-wise. It's even possible to change track metadata as well and most crucially, it actually saves new metadata to tracks! I've encountered many music players wherein saving new metadata is either unreliable or is actually saved to an internal database instead of the actual track file.
Overall, the music player is quite close to the sweet spot between customisability and usability even this early on. I can somewhat see why some folks on Windows really like foobar2000, even though that one has more features. The appeal of a music player with an initially minimal modular UI, high-performance music library management, and plugin-based extensibility is rather alluring personally and fooyin has become my default choice for listening to local music.
While there are various packages built in multiple formats upstream, it hasn't landed yet in many distro repos yet. As of time of posting, Repology only lists effectively four Linux distribution package sources:
multimedia:apps
devel project)Hopefully fooyin gets into more places as time goes on. Potential future plans for it are getting it packaged for Fedora and Haiku. Look, it's already packaged for RPM in openSUSE; might as well do it for Fedora too, right? Initial research suggests that there are a couple differences however, both in what to put in the spec file and in the packaging infrastructure. Having fooyin in Fedora may have a somewhat lower priority, since the upstream project does provide packages for Fedora. As for Haiku, well I am also a packager for HaikuPorts and it'd be great to have this available on Haiku as well.
Meanwhile in general, posts like this about packaging new things are something that perhaps should've existed considerably earlier. I wish I had written more about my early efforts in Haiku packaging, both as a reference for myself and for others to learn from. Also most of the programs I package are either relatively obscure or really new, so it would be a good idea to bring a spotlight on them through these writeups. Aside from Turbo Vision (which very recently just got into openSUSE too) and its turbo
editor, there's a gradually growing backlog of programs that may get packaged for openSUSE and Haiku whenever the time to do so becomes available. Maybe when I do get around to writing that HaikuPorts recipe for fooyin, there'll be a post comparing packaging for Haiku and openSUSE; no promises though! :P
Oh, and special thanks to the openSUSE packaging community for putting up being very helpful and welcoming!