ivan-hc / VLC-appimage

VLC Video and Media Player AppImages built from JuNest (Arch Linux) and PPA.
25 stars 3 forks source link

How can I add plugins to current build? #9

Closed directentis1 closed 7 months ago

directentis1 commented 7 months ago

I just want to use VLC with some addons, like as GitHub - johang/vlc-bittorrent: A bittorrent plugin for VLC., but it can not be run outside the AppImage.

Just tried as $ VLC_PLUGIN_PATH=/tmp/vlc/lib vlc --no-plugins-cache video.torrent compare to $ VLC_PLUGIN_PATH=/tmp/vlc/lib vlc.AppImage --no-plugins-cache video.torrent, the former works fine (with VLC installed from the PPA) but the latter doesn't...

I tried uncompressing Vlc.AppImage and guessed it was a problem of linking or environment variables and dependencies. But I'm not familiar with that, can you give me a hint?

ivan-hc commented 7 months ago

My JuNest-based AppImages are Arch Linux containers into an AppImage, they have isolation via Bubblewrap. Being them just containers, they are a guest OS on your host system. So to made external pluginf work with that system, they must be built into that system.

As I've said, this is a container of Arch Linux. If your plugin is in the Arch repositories or on the AUR, it is sufficient to add it into the dependences of the script that creates this AppImage.

Normally I add third-party plugins not in "latest", I can add it in https://github.com/ivan-hc/VLC-appimage/releases/tag/continuous-with-plugins , so let me know the name of the AUR package and I can try o implement it.

The script I use is https://github.com/ivan-hc/VLC-appimage/blob/main/vlc-plugins-junest.sh , you can run this on your PC and the AppImage is created after 2-3 minutes, depending on your internet connection.

If you want to perform your tests before you try to build the AppImage, you can easily install JuNest and install VLC and the plugins you want via pacman or yay. You can follow the instructions at https://github.com/fsquillace/junest

EDIT: found https://aur.archlinux.org/packages/vlc-bittorrent

EDIT2: I've just started a workflow run for this, at https://github.com/ivan-hc/VLC-appimage/actions/runs/8276320353 , when it finishes you can test that AppImage with plugins. Let me know if it works for you.

EDIT3: its ready https://github.com/ivan-hc/VLC-appimage/releases/tag/continuous-with-plugins check it out

directentis1 commented 7 months ago

@ivan-hc it's great that someone maintained it on AUR, so I can add custom plugins according to your instructions!! https://aur.archlinux.org/packages/vlc-bittorrent

Although it seems a bit outdated (its last version on Github was last Jan 6 - mainly a compatibility issue with library updates.

Thank you for sharing, I will try it right away and give you feedback!

directentis1 commented 7 months ago

Hey, it's worked like a charm!!!

Just curious, how can I install VLC with plugins versions from appman? ^^

directentis1 commented 7 months ago

There are a some of error messages that I noticed most VLC AppImage versions encounter, I guess because the plugins.dat file - which contains a cache of the plugins loading process (?) - is constantly read/written by libvlc . Since appimage creates mount points with read only permission, it is presumed that is the cause of these error messages.

just wondering if there is a way to supress them? 🤔️

image

image

directentis1 commented 7 months ago

hmm, a bit of a problem with the magnet links: it seems like they're stuck here... i'll try debug it..

image

directentis1 commented 7 months ago

Just run on my Ubuntu 22.04 host, but got this error through the appimage built successful.

Any suggestions for me? image

directentis1 commented 7 months ago

A bit problem with the audio buffer when playing a torrent video. If the connection is unstable for a moment, the sound will break into many parts, almost hearing the sound lost, even though the video stream still works normally.

ivan-hc commented 7 months ago

Hey, it's worked like a charm!!!

Just curious, how can I install VLC with plugins versions from appman? ^^

appman -i vlc+
ivan-hc commented 7 months ago

There are a some of error messages that I noticed most VLC AppImage versions encounter, I guess because the plugins.dat file - which contains a cache of the plugins loading process (?) - is constantly read/written by libvlc . Since appimage creates mount points with read only permission, it is presumed that is the cause of these error messages.

just wondering if there is a way to supress them? 🤔️

maybe we can try to use --bind to redirect that path to another in ~/.cache, but I'm not sure on how much it would work

ivan-hc commented 7 months ago

Just run on my Ubuntu 22.04 host, but got this error through the appimage built successful.

Any suggestions for me?

it seems to be an issue with Bubblewrap. As I've said in the first comment, it is built into the AppImage to made the Arch Linux container work as a guest on your host system. I don't know what you've done here.

ivan-hc commented 7 months ago

A bit problem with the audio buffer when playing a torrent video. If the connection is unstable for a moment, the sound will break into many parts, almost hearing the sound lost, even though the video stream still works normally.

I think we miss the implementation of other Torrent-related files. During the creation of the AppImage, only the dependences and the dependences of the dependences are extracted and bundled, to prevent the creation of an AppImage of the whole container, because it may reach 600-700 MB or more, in total, if we don't remove some unneeded files.

To include files that may be needed and not contained into the tar packages of Arch Linux, the script have three lines where you can add keywords. Here are those included in the script:

BINSAVED="certificates SAVEBINSPLEASE" # Enter here keywords to find and save in /usr/bin
SHARESAVED="certificates qt java" # Enter here keywords or file/folder names to save in both /usr/share and /usr/lib
LIBSAVED="pk p11 alsa jack libaacs libbluray libbdplus libdvdcss libdvdnav libdvdread pipewire pulse v4l jvm libxtst libxi"

you should execute the AppImage using LD_DEBUG=libs or LD_DEBUG=files or something... to check what are missing files and libraries because you receive these errors.

For example, if it is looking of libtorrent-capocchia.so.123 we can add the keyword "torrent" or "libtorrent" in $LIBSAVED. All files and directories with that keyword in the name will be copied in /usr/lib. The same is if a keyword with "torrent" is needed in /usr/bin, in that case you need to add it in $BINSAVED (I've no keywords saved in /usr/bin, just "certificates", while "SAVEBINSPLEASE" is replaced with sed when the archimage-cli program asks it, when you create the script... see https://github.com/ivan-hc/ArchImage ).

directentis1 commented 7 months ago

Hey, it's worked like a charm!!! Just curious, how can I install VLC with plugins versions from appman? ^^

appman -i vlc+

Ah, I'm currently using it, but in the package description, it only says it contains Java but doesn't mention it also supports plugins.

ivan-hc commented 7 months ago

Istantanea_2024-03-15_02-12-57

ivan-hc commented 7 months ago

Ah, I'm currently using it, but in the package description, it only says it contains Java but doesn't mention it also supports plugins.

"and is open to new feature implementations" means that we can implement whatever we want into it.

EDIT: I hope this is better https://github.com/Portable-Linux-Apps/Portable-Linux-Apps.github.io/commit/46ce1e94fbf20ac0bf6131a9b36696d38846a9c5

directentis1 commented 7 months ago

Just run on my Ubuntu 22.04 host, but got this error through the appimage built successful. Any suggestions for me?

it seems to be an issue with Bubblewrap. As I've said in the first comment, it is built into the AppImage to made the Arch Linux container work as a guest on your host system. I don't know what you've done here.

Yeah.... I find it a bit confusing that it's the same script file https://github.com/ivan-hc/VLC-appimage/blob/main/vlc-plugins-junest.sh but if I run it directly on my Ubuntu and run it through Github Actions, their size difference is very significant... (about 200 - 400 MB, compared to your AppImage which is only about 180 - 190 MB ) Even though I didn't change anything in my fork...

ivan-hc commented 7 months ago

I've just seen that the launcher was wrong https://github.com/ivan-hc/VLC-appimage/commit/7af79528aefb8f5959b71226561a79cfaeb29f7e this explains the reason because the name has "bittorrent"

However, this cannot explain the reason because your AppImage is so big (and also the bwrap error).

In the earlier days I had this message because some directories were "binded" (i.e. --bind /usr/lib /usr/lib) and Bubblewrap is looking for libraries in the container.

I don't know if this depends on a system installation of Bwrap (it shouldn't, but I've never tested on a system without Bubblewrap).

directentis1 commented 7 months ago

A bit problem with the audio buffer when playing a torrent video. If the connection is unstable for a moment, the sound will break into many parts, almost hearing the sound lost, even though the video stream still works normally.

I think we miss the implementation of other Torrent-related files. During the creation of the AppImage, only the dependences and the dependences of the dependences are extracted and bundled, to prevent the creation of an AppImage of the whole container, because it may reach 600-700 MB or more, in total, if we don't remove some unneeded files.

To include files that may be needed and not contained into the tar packages of Arch Linux, the script have three lines where you can add keywords. Here are those included in the script:

BINSAVED="certificates SAVEBINSPLEASE" # Enter here keywords to find and save in /usr/bin
SHARESAVED="certificates qt java" # Enter here keywords or file/folder names to save in both /usr/share and /usr/lib
LIBSAVED="pk p11 alsa jack libaacs libbluray libbdplus libdvdcss libdvdnav libdvdread pipewire pulse v4l jvm libxtst libxi"

you should execute the AppImage using LD_DEBUG=libs or LD_DEBUG=files or something... to check what are missing files and libraries because you receive these errors.

For example, if it is looking of libtorrent-capocchia.so.123 we can add the keyword "torrent" or "libtorrent" in $LIBSAVED. All files and directories with that keyword in the name will be copied in /usr/lib. The same is if a keyword with "torrent" is needed in /usr/bin, in that case you need to add it in $BINSAVED (I've no keywords saved in /usr/bin, just "certificates", while "SAVEBINSPLEASE" is replaced with sed when the archimage-cli program asks it, when you create the script... see ivan-hc/ArchImage ).

I guess I'll need to dig a bit to find the reason...I think I'll try installing vlc and its plugins on a fresh docker container (ubuntu or arch) and see the differences using docker diff before and after vlc is completed installed and works normally. I'm not sure this idea would work... like how the dependency tree works to figure out what needs to be added.

ivan-hc commented 7 months ago

If you are facing issues in compiling the plugion from AUR its because my JuNest build has issues in installing yay properly. For now none of my AUR-based AppImages can be built. Sorry.

directentis1 commented 7 months ago

If you are facing issues in compiling the plugion from AUR its because my JuNest build has issues in installing yay properly. For now none of my AUR-based AppImages can be built. Sorry.

Thank you for this great project... I was really surprised at first that a single individual could maintain such a large project 😄️

Bugs that arise, I think can be resolved over time, what is needed is patience and support from everyone. 😇️

ivan-hc commented 7 months ago

The "YAY" issue has been fixed, but only for installing packages from the official repositories or ChaoticAUR.

Strangely I'm getting errors regarding the absence of "GZIP" and "STRIP" (binutils) which instead are installed together with the app. It always worked. Now it doesn't work anymore. A couple of other packages don't have this problem, but I think the problem lies at the source. PacMan and the keys have been updated for two days. Until less than 48 hours ago everything was fine.

My luck is that the apps I compile completely or partially from AUR are few, GIMP-GIT, GIMP-DEVEL and Bottles. All the others come from repositories or have very few requirements to be compiled... only VLC-GIT and Firedragon come from ChaoticAUR.

I'm sorry, really. Arch is truly a strange beast.

ivan-hc commented 7 months ago

I closed by mistake.

ivan-hc commented 7 months ago

This is my fork of JuNest, https://github.com/ivan-hc/junest where I keep updated new builds daily.

And these are the apps that gave me problems latelly:

ivan-hc commented 7 months ago

I've solved with it

ivan-hc commented 7 months ago

I think I've solved, also in VLC

ivan-hc commented 7 months ago

I think we've gone too far off topic in this issue.

In case you need to add other plugins, open a new issue.