SFML community forums

General => Feature requests => Topic started by: victorlevasseur on July 08, 2016, 10:01:18 pm

Title: Add an option to get rid of the udev client libraries on Linux
Post by: victorlevasseur on July 08, 2016, 10:01:18 pm
Hi,

You may have heard that Flatpak has been released. It's a tool that allows to build standalone apps on Linux (compatible with all the distributions that support it). For more information : http://flatpak.org/ (http://flatpak.org/)

The problem is that no runtimes (if you don't know what a "runtime" is in flatpak, please read the website) provides udev and none will ever do because udev is not ABI-compatible with each Linux distributions (see the discussions I had with the devs here : https://github.com/flatpak/flatpak/issues/12#issuecomment-230249440 (https://github.com/flatpak/flatpak/issues/12#issuecomment-230249440)).

So, it's currently not possible to build SFML for flatpak as udev is not provided. That's why it would be great if SFML provides a build option to disable the udev dependency. The only problem is joysticks support as it is the only feature that requires udev in SFML. But it seems that it's not mandatory (SDL can work without udev if needed) except for the joystick hot plug.
Title: Re: Add an option to get rid of the udev client libraries on Linux
Post by: aggsol on March 26, 2018, 09:38:09 am
How is the state today with Flatpack and SFML?
Title: Re: Add an option to get rid of the udev client libraries on Linux
Post by: eXpl0it3r on March 26, 2018, 09:57:30 am
It's a niche situation. SFML can be modified by whoever wants to maintain the flatpak package, but we generally don't build in "features" to make it more compatible with some niche package manager, especially when it's about disabling functionality.

If there's a better alternative to udev, then making a proposal to adapt would probably be looked at.

FYI: Even the Debian packages are built with slight modifications to accommodate their quirky setup.
Title: Re: Add an option to get rid of the udev client libraries on Linux
Post by: aggsol on March 26, 2018, 12:27:30 pm
Sounds sensible. What is a good way to package an SML application for Linux then?
Title: Re: Add an option to get rid of the udev client libraries on Linux
Post by: Sub on March 30, 2018, 11:24:20 am
Honestly, AppImage is the simplest solution out there in my view.  It's essentially bundling your binary and all of your dependencies into one file, which the user can download, mark as executable, and then run. 

Taken from Wikipedia

Quote
AppImage does not install the application in the traditional Linux sense by putting its various files in the distro's appropriated places in the file system, just like its predecessors klik and portablelinuxapps. The AppImage file is just its compressed image; this is mounted with FUSE when it runs.

It uses one file per application. Each one is self-contained: it includes all libraries the application depends on that are not already part of the targeted base-system. An AppImage of version 1.0 is an ISO 9660 Rock Ridge file (which can be optionally zisofs compressed) containing a minimal AppDir and a tiny runtime.[4] (Version 2 may use other file system image formats like SquashFS [5][6]). An AppImage application can be added to a live CD by adding only one file to the live CD.

AppImage files are simpler than installing an application. No extraction tools are needed, nor is it necessary to modify the operating system or user environment. Regular users on the common Linux distributions can download it, make it executable, and run it.

https://appimage.org/
Title: Re: Add an option to get rid of the udev client libraries on Linux
Post by: richardeigenmann on August 09, 2019, 11:07:01 pm
There is a special version of udev on the Flatpak git repo that you can clone which overrides the incompatibility with the sandbox. By using that you can build SFML from source and then use that to compile your program against.

Here is an example project where this was implemented:
https://github.com/richardeigenmann/LearnSfml