stsaz / fmedia

fast audio player/recorder/converter
BSD 2-Clause "Simplified" License
217 stars 21 forks source link

Add github build action (+AppImage) #77

Closed Alexqwesa closed 2 years ago

Alexqwesa commented 2 years ago

btw, AppImage soon promise to add support for glibc independent builds, it is time to get ready)

stsaz commented 2 years ago

Hi! I never used AppImage packages yet, so I don't really understand how they work... Do you have an example of how fmedia release will look like? What's the size of package? Does it contain all libs such as libalsa, libpulse, libgtk inside? I tried to search for some info on how AppImage packages operate internally, but all I could find is their promises about "how this technology is cool and great" and nothing about how it really works, heh :) I'm interested most of all in the startup process: does it unpack itself to a temporary location before executing the binary file and how this affects the startup time?

I don't consider myself as a fan for such packaging technology, to be honest, but if someone finds it useful - well, that's also fine. I will add some comments into the review, but overall it looks good already.

Alexqwesa commented 2 years ago

I never used AppImage packages yet, so I don't really understand how they work... Do you have an example of how fmedia release will look like? What's the size of package? Does it contain all libs such as libalsa, libpulse, libgtk inside?

It mount loop device with squashfs filesystem (compressed overlayfs) and start your usuall executable, yes it also pack dependencies, but in fmedia case there almost none... just your usuall executable (and glibc)

i wanted to create AppImage in order to avoid error of GLIBC missmatch(your binary can't run on some linux OS, like openSUSE), but packing glibc into executable is still not supported yet( - But there is a pull request in review to enable this feature https://github.com/AppImageCrafters/appimage-builder/pull/252 - so, i hope it will be done soon)

This github action generate two artifacts: your usuall build and AppImage: https://github.com/Alexqwesa/fmedia/actions/runs/2589665455

I tried to search for some info on how AppImage packages operate internally, but all I could find is their promises about "how this technology is cool and great" and nothing about how it really works, heh :)

sorry, but AppImage is a new thing for me too - this is my first attempt using it....

I don't consider myself as a fan for such packaging technology, to be honest, but if someone finds it useful

There is a dart package that use your binaries, but https://pub.dev/packages/record , but it doesn't work on some linux distros(like opensuse), this is why i am trying to find the way to make crossplatform package

I'm interested most of all in the startup process: does it unpack itself to a temporary location before executing the binary file and how this affects the startup time?

it doesn't do full unpacking, only overlay mount, squashfs is a fast one, it is used exactly for that by many liveCD and thinClients... of course there is a perfomance price - but it should not be big

stsaz commented 2 years ago

i wanted to create AppImage in order to avoid error of GLIBC missmatch(your binary can't run on some linux OS, like openSUSE),

Oh, I completely forgot about this issue! I've just rebuilt fmedia on Debian 10, now glibc-2.3x dependency is gone. Building on latest Fedora was a bad decision, as it turns out. Please re-download v1.28 linux package.

Alexqwesa commented 2 years ago

I've just rebuilt fmedia on Debian 10, now glibc-2.3x dependency is gone.

wow, and now big issue is just resolved...

there are still some advantage of having build action for project:

In future some users may prefer to have one AppImage file instead of dir, but right now AppImage should be considered an experemental build - still waiting for new version of AppImage-builder/AppImage-action...

and btw AppImage can be self updatable...

stsaz commented 2 years ago

OK, let's do it. Here's the patch that fixes build on Debian: 8c0d71a03b50609ea16ab0066408b418f263a71f Should also work for Ubuntu, so I skipped your fix-Ubuntu-build patch. I squashed a few commits and merged.