-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
flatpak: packaging proposal #178
base: main
Are you sure you want to change the base?
Conversation
This change makes sense. Saving space when we can is good and we already do that for Protons by essentially using the ones available in |
Also, for context, I initially wrote it so that Flatpaks would have their own runtime directory to avoid the case of the Flatpak and system umu overwriting each others changes due to the differences in their APIs. I also thought it would align more with the philosophy of Flatpak to have its own private copy. |
That would make sense if we wanted each app using umu to have its own copy. The proposed approach assumes only umu-run gets shipped by the app and runtime files are shared.
could you give an example of such differences? Are you saying there may be implications? |
Yeah, for example, Lutris is on RC5 and in that version the launcher checks if the reaper binary exists otherwise it will crash if it can't find it in So like, let's suppose we decide to build and customize the Steam runtime. To that end, we decide to create subdirectories instead of having everything within the top level to better organize various runtime builds like the Steam client does within For instance, let's suppose the user has both Heroic (client 1) and Lutris (client 2) installed each with two different versions of umu-launcher. The user launches client 1 to a play a game, which includes the latest version of umu-launcher and contains logic to cleanup all files within the top level and redownloads a customized runtime within
Later, the user launchers client 2 to play another game where that umu-launcher version will redownload the runtime because it couldn't find any runtime files in the top level leading to:
Afterwards, the user launches client 1 again to play another game which leads back to:
TL;DR: There needs to be care when making changes to the contents of |
For cases like that we could introduce some sort of versioning requiring minimal version of umu. |
To be clear the concern I brought up shouldn't block this from being merged since it's packaging related and it can be avoided if umu-launcher just never cleans up obsolete files in
The above log statements can be more clearer though. Though we can control that umu-launcher never cleans up obsolete files, it doesn't guarantee that the client won't. By sharing the runtime directory, we're trusting that all clients will behave responsibly. So what can't be helped is if a client decides to delete files in Another way is for steam-runtime-tools ( So I guess my question is whether we should continue with the current system and merge this PR by sharing runtime files in a single, shared path at cc @loathingKernel for thoughts |
Today I found that escaping sandbox like this may cause some issues, first of all |
I'm not too sure this is possible actually. Each Flatpak has their own private home directory, so wouldn't Also, I just realized the umu-launcher manifest has set
I think this is unrelated and should be already addressed in main. |
487bdd4
to
b9c9b8f
Compare
3ac4479
to
92f26b1
Compare
1f950cc
to
c4893a3
Compare
Why?
Current flatpak manifest we have, ships just a CLI, it doesn't provide any way for other flatpak applications to use umu.
How?
We'd simplify getting started with umu for packagers, by simply providing a module file that can be easily included in the manifest.
Packagers would need to provide a simple set of permissions required for pressure-vessel to work.
With that all the application needs to do is look for
umu-run
in PATH. (Assuming proper PATH variable was setup in the manifest)Disk space problem
UMU would require access to
xdg-data/umu
.That way, we ensure this one location is used by flatpak and not sandboxed applications. Instead of having separate copies of runtime, only one would be maintained.