Log in

View Full Version : Who manages plugins in Linux AUR?


MysteryX
2nd February 2022, 05:38
When there are issues with Linux plugins in the AUR, who should I contact?

fmtc is out-of-date, it has r24 instead of r28

And the VapourSynth documentation should be updated to talk about how package management works in Arch Linux and MacOS.

ChaosKing
2nd February 2022, 10:01
If you look at the build file you'll find the maintainer of the package + email https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=vapoursynth-plugin-fmtconv-git

Quadratic
2nd February 2022, 10:40
You could also leave a comment on the AUR page itself. Also, that package isn't actually out of date it's just labeled incorrectly.

I don't think it's up to Vapoursynth developers to inform the user of how their distribution works. They have no say in how it is run, as AUR packages are maintained by the community.

ChaosKing
2nd February 2022, 11:46
lol how did I miss the comment section xD

It seem there are 2 fmtc versions, a git version and a release version. Just report it there and it will be fixed.

MysteryX
2nd February 2022, 13:38
I left a comment. Lol first comment in 8 years!

but overall... it seems best to install GIT versions. It seems that packages aren't very well maintained. I got all plugins installed but have various problems. I'll see if switching to git versions fixes them.

I don't think it's up to Vapoursynth developers to inform the user of how their distribution works. They have no say in how it is run, as AUR packages are maintained by the community.
There is a different plugin management method for Windows, Arch Linux and MacOS. Why is it documented for Windows (vsrepo) and not for other platforms? I had to spend a lot of time to figure out that AUR was the way to go (realized I'm lucky to have chosen an Arch-based distro!), then also wasted time to figure out that it's best to install Git versions.

And non-Arch Linux distros are currently not supported, unless one wants to manually compile every plugin they want to use.

ChaosKing
2nd February 2022, 13:58
Bcs vsrepo is official. The other repos / distros are just mentioned in the docs but what should the doc explain exactly? How to use apt-get, pacman, zypper, <insert manager here> ? AUR is an Arch problem, not vapoursynth problem.

You can always make a PR with your improvements to the doc :)

MysteryX
2nd February 2022, 14:18
I think there should be guidelines as to how things should be done in each platform. Particularly when it's a community effort. Can't just have everyone do as they think on their own.

It might also be worthwhile to have a solution for Ubuntu Linux, as there is currently none. (if someone is fine with custom-building everything, they'd be an Arch user)

btw I'm happy to inform that my complex script is now running just fine in Linux! There were a few issues due to GPUID and after fixing that, it runs smoothly. There remains an issue with znedi3 but on the AUR comments (https://aur.archlinux.org/packages/vapoursynth-plugin-znedi3-git) they're right on it, with active comments today.

Watching in amazement.

I'd be curious about running benchmarks on Windows vs Linux; but don't have dual-boot anymore.

Jukus
2nd February 2022, 19:29
And non-Arch Linux distros are currently not supported, unless one wants to manually compile every plugin they want to use.
There's
https://www.deb-multimedia.org/dists/stable/main/binary-amd64/
but the packages are not from git and there are big performance problems, don't know what caused them

There should also be something for Gentoo

There's also this guide
https://www.l33tmeatwad.com/vapoursynth101/software-setup
But it is not complete, there are errors and "make install" is not very good

After all, there may be errors in the upstream itself

MysteryX
2nd February 2022, 21:21
btw if I rewrite my Yin Media Encoder to be cross-platform and use Vapoursynth; how would I go about compiling and providing the Vapoursynth plugins for the various distros? How many different compilations would be needed, and are there services for automatically compiling for a range of platforms?

Actually if there *is* a service auto-compiling for various platforms, that could very well be a solution for distributing plugins for the various distributions in general. Automatically pulling the latest Git and providing up-to-date binaries. Would be cool.

I can't imagine that such a service wouldn't exist? Even GitHub Actions perhaps could automate that?

StainlessS
2nd February 2022, 21:47
I think there should be guidelines as to how things should be done in each platform.
Particularly when it's a community effort. Can't just have everyone do as they think on their own.
What this needs is some kind of Community Tzar, I can think of no one more fitting that the great MX,
He'll sort stuff out and have it organised in no time.
I vote MX !

Somebody set up a poll.

Jukus
2nd February 2022, 22:31
btw if I rewrite my Yin Media Encoder to be cross-platform and use Vapoursynth; how would I go about compiling and providing the Vapoursynth plugins for the various distros? How many different compilations would be needed, and are there services for automatically compiling for a range of platforms?

Actually if there *is* a service auto-compiling for various platforms, that could very well be a solution for distributing plugins for the various distributions in general. Automatically pulling the latest Git and providing up-to-date binaries. Would be cool.

I can't imagine that such a service wouldn't exist? Even GitHub Actions perhaps could automate that?

I don't know anything about this at all, but there is:
https://openbuildservice.org/
https://flatpak.org/
https://appimage.org/
https://snapcraft.io/
Portable, static linking

ChaosKing
2nd February 2022, 22:35
Actually if there *is* a service auto-compiling for various platforms, that could very well be a solution for distributing plugins for the various distributions in general. Automatically pulling the latest Git and providing up-to-date binaries. Would be cool.

I can't imagine that such a service wouldn't exist? Even GitHub Actions perhaps could automate that?

Github actions can do exactly that https://github.com/WolframRhodium/VapourSynth-BM3DCUDA/actions/runs/1703510879
You just need to define all necessary steps in your action file.

MysteryX
3rd February 2022, 01:15
Anyone has any experience with this?

If someone wants to look into this, what would be the best approach, GitHub Actions or Open Build Service?

Might as well set up both VapourSynth and Avisynth, and could be integrated with vsrepo.

Although it was argued that vsrepo shouldn't try to replace the package manager in Linux; but the current package manager solution involves the AUR and doesn't work for all distros. It's a messy solution. Plus using the AUR can lead to breaking Arch-linux.

Personally I got a long list of things to work on, and have very little experience with these things. I'd rather focus on getting FrameRateConverter with RIFE done, and xClean for Avisynth.

I might suggest that expanding vsrepo to work on Windows, Linux and MacOS with an automated build system would be the best approach.

Quadratic
3rd February 2022, 07:27
I'd be curious about running benchmarks on Windows vs Linux; but don't have dual-boot anymore.

If you are primarily limited by the CPU, I imagine that Linux will be significantly faster overall. https://www.phoronix.com/scan.php?page=article&item=windows-may2020-linux&num=9
There's a reason why nobody does compute on Windows. I believe the reason why Clear linux is so far ahead of the rest is because they ship optimized binaries (LTO and such, Arch is using LTO by default now but those changes were made after this benchmark was posted).

Here is an example of github actions building for both Windows and Linux: https://github.com/kedaitinh12/VapourSynth-EEDI2CUDA/blob/main/.github/workflows/build.yml
You can fork this repository and have working binaries in minutes. Ideally all plugin developers would be providing this. Our friends https://github.com/WolframRhodium, https://github.com/AmusementClub, https://github.com/HomeOfVapourSynthEvolution are doing a fantastic job.

One down side to this is that when producing generic blobs is that you are not optimizing for your hardware (arch users can do this automagically https://wiki.archlinux.org/title/makepkg#Building_optimized_binaries)

Outside of this, I presume the best people you could talk to in regards to this issue are distribution maintainers.

MysteryX
3rd February 2022, 15:04
In an ideal world, devs would make their plugins cross-compatible Avisynth / VapourSynth, and have automated builds. In practice, there is no standard procedure nor guide nor recommendations and everybody does it differently.

Can GitHub Actions be used to build other repos? And could it be implemented in a generic way to build any repos or it has to be customized on a project-by-project basis? I'm also wondering where it outputs the binaries.

Also, Snapper and Flatpack were designed to solve this cross-platform compilation problem, but it's designed to run applications in a sandbox, not to install additional library to an existing app on the system. Is there any existing solution suitable in this case?

Oh, another downside of AUR, besides making the system unstable. To install BM3DCUDA, it requires a 3GB dependency to build it, and then it keeps that dependency installed.

ChaosKing
3rd February 2022, 16:16
In an ideal world, devs would make their plugins cross-compatible Avisynth / VapourSynth, and have automated builds. In practice, there is no standard procedure nor guide nor recommendations and everybody does it differently.

Can GitHub Actions be used to build other repos? And could it be implemented in a generic way to build any repos or it has to be customized on a project-by-project basis? I'm also wondering where it outputs the binaries.


Idk if there's an easy way, but you can always fork a project and run your build action. There's also an action for making releases + you can upload it via FTP somewhere, etc...

For scrpts, vsrepo relied previously on a "proper release" on github, but most authors didn't make one. Now simply the latest git version is grabbed (which could be "bad commit"). It's a hobby for most people and time is limited so...

MysteryX
3rd February 2022, 16:24
so vsrepo is already doing a custom builds?

Since vsdb.top already has a database of Avisynth plugins, there could be vsrepo and avsrepo doing pretty much the same thing. Are there roadblocks to making it cross-platform, other than building the binaries?

ChaosKing
3rd February 2022, 16:40
Nope, no builds at all. It only grabs the latest commit version of a vapoursynth script (not plugin) instead of relying on the release (which can be over a year old with many commits since)


vsdb.top has a "database" of avisynth plugins which are used in avsrepo. I basically added only avs plugin which are hosted on github. Reason? vsrepo (and avsrepo) are using the github api to check for new plugin / script versions.

Try the same with mediafire hosted plugins :devil:


vsrepo is more or less already cross plattform. All it does is downloading a zip file, comparing the hash and extracting it to folder X. If you would implement a folder target for "all distros" and would provide compatible binaries then this sure could be added to vsrepo.

EDIT:
Some repos provide linux bins (x86_64-glibc2.14.7z) https://github.com/dubhater/vapoursynth-histogram/releases

MysteryX
3rd February 2022, 21:27
Some repos provide linux bins (x86_64-glibc2.14.7z) https://github.com/dubhater/vapoursynth-histogram/releases
"Some" repos provide binaries for "some" distros. That's the thing. Each distro needs its own builds; but is it a build for Debian/Ubuntu, a build for Arch, a build for Gentoo, a build for CentOS, or does it need a different build for each Ubuntu version?

Who did the coding for vsrepo, and what programming language was used? Python. If used for Avisynth, it could be slightly annoying. One advantage of Avisynth is no Python dependency, but the filter management would require that dependency. I could program something like that in .NET, but .NET Core dependency would be even more annoying to users. C++ would be best.

Btw why does vsrepo install plugins in some fancy per-plugin folders (if I remember)? Is it because it doesn't have write access to the standard Vapoursynth plugin folder without admin access?

It kind of looks like we'd be due for vsrepo v2 that accounts for all that. The hardest part would be to manage the builds.

Btw if some Avisynth plugin isn't on Github, you can add it yourself there.

Are_
3rd February 2022, 21:42
"Some" repos provide binaries for "some" distros. That's the thing. Each distro needs its own builds; but is it a build for Debian/Ubuntu, a build for Arch, a build for Gentoo, a build for CentOS, or does it need a different build for each Ubuntu version?

Arch is a rolling release distro, so only one compile.
Gentoo is a rolling release source-based distro, so it magically compiles everything by itself, it's awesome.
Debian/Ubuntu is a pain in the ass. You need to compile a version of the plugin for every release.

MysteryX
3rd February 2022, 22:06
Mental note: .NET can be compiled with the framework embedded for no external dependency. File size a bit bigger, but cross-platform, extensible and can run without dependency.

Accessing web servers with C++, handling any kind of strings, or doing multi-threading, can be a pain in the *ss.

vsrepo for client-side library management, there really isn't much to it. Very simple. It's the server-side code that's more complex. Who is responsible for the server code?

ChaosKing
3rd February 2022, 22:53
"Some" repos provide binaries for "some" distros. That's the thing. Each distro needs its own builds; but is it a build for Debian/Ubuntu, a build for Arch, a build for Gentoo, a build for CentOS, or does it need a different build for each Ubuntu version?

Who did the coding for vsrepo, and what programming language was used? Python. If used for Avisynth, it could be slightly annoying. One advantage of Avisynth is no Python dependency, but the filter management would require that dependency. I could program something like that in .NET, but .NET Core dependency would be even more annoying to users. C++ would be best.

https://github.com/vapoursynth/vsrepo

You can package a python script into an exe, like I did with avsrepo https://github.com/theChaosCoder/avsrepo/actions/runs/384778115

There are also ways to compile it to C code. https://nuitka.net


Btw why does vsrepo install plugins in some fancy per-plugin folders (if I remember)? Is it because it doesn't have write access to the standard Vapoursynth plugin folder without admin access?
Yes you need admin access for the program files folder. All plugins are stored in Appdata \ vapoursynth \ plugins.

It kind of looks like we'd be due for vsrepo v2 that accounts for all that. The hardest part would be to manage the builds.

The question is who will maintain it long term.

Btw if some Avisynth plugin isn't on Github, you can add it yourself there.

Sure, I did it for some plugins. But I don't have time to play catch with every plugin and honestly I just don't care that much about avisynth anymore. And it also seems that there's not much demand for avsrepo. I keep updating it bcs it's mostly just 3 mouse clicks

vsrepo for client-side library management, there really isn't much to it. Very simple. It's the server-side code that's more complex. Who is responsible for the server code?

Have a look at vsrupdate.py

MysteryX
4th February 2022, 04:50
ok looks like most of it is already in place. All that would be missing is a build server and a few tweaks. Not all plugins can compile on Linux either (AvisynthShader won't).

Indeed there isn't much need for avsrepo, people just download their binaries manually for ages. And I've never heard of avsrepo. If it was to provide Linux and MacOS binaries, however, they would use it.

Then long-term maintenance is the big question.

ChaosKing
4th February 2022, 10:57
Mental note: .NET can be compiled with the framework embedded for no external dependency. File size a bit bigger, but cross-platform, extensible and can run without dependency.


A bit OT: Flutter 2.10 was just released with official Windows support. This could be an cross plattform alternative to .net GUI apps.
Or maybe someone wants to make an vs editor with flutter :D

MysteryX
4th February 2022, 12:18
btw I just saw that Linux support is already documented here; I should have read that first
https://www.vapoursynth.com/doc/installation.html#linux-installation

Are the Debian/Ubuntu builds up-to-date? Are the documented solutions working good enough? MacOS doesn't have a documented solution for plugins.

Seriously deb-multimedia has been doing it for.... 20 years!??

ChaosKing
4th February 2022, 13:37
Btw I think what you are looking for is something similar to this https://github.com/Bl4Cc4t/homebrew-vsplugins

https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/mvtools.rb

MysteryX
4th February 2022, 14:23
ah Homebrew is the package manager for MacOS. OK it's all documented, I just didn't read the docs properly. I don't know how well it works under Ubuntu, but it seems that there are already plenty of solutions implemented, one just has to know about it. Easier to tweak the existing solutions than try to re-invent the wheel again.

If I release a multi-platform encoder GUI at some point, it's probably better to give instructions or a script to setup the Vapoursynth environment, and not try to bundle it in.