Skip to content
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

Try out new org.freedesktop.Platform #6

Closed
jjardon opened this issue Jun 13, 2018 · 10 comments
Closed

Try out new org.freedesktop.Platform #6

jjardon opened this issue Jun 13, 2018 · 10 comments

Comments

@jjardon
Copy link

jjardon commented Jun 13, 2018

Hi,

First of all congrats for the project, it looks really cool

I noticed you are still using the 1.6 org.freedesktop.Platform, I wonder if you would like to try the new version we are working on (future 1.8); It would be of great help to us to find any regression / problem

The only thing you should have to do is to add the new repository and change "1.6" to "master" at : https://github.com/winepak/winepak-sdk-images/blob/master/org.winepak.Sdk.yml#L8 and rebuild, as explained here: https://gitlab.com/freedesktop-sdk/freedesktop-sdk/blob/master/README.md#usage

@jjardon jjardon changed the title Try out new org.freedesktop.Platform at https://gitlab.com/freedesktop-sdk/freedesktop-sdk Try out new org.freedesktop.Platform Jun 13, 2018
@julianrichen
Copy link
Contributor

It would be interesting to test 1.8, when I get a chance I'll try to build our Sdk & Platform with it. Always good to help upstream test.

One reason I'm excited for 1.8 was I saw mention of better Compat32 support? I haven't looked into it but does 1.8 offer better support from cross-arch building at the same time. Currently winepak requires each 64bit app that needs WoW64 to include:

  • org.winepak.Platform/x86_64/3.0
  • org.winepak.Platform.Compat32/x86_64/3.0

for a basic app plus:

  • org.winepak.Platform.Wine/x86_64/3.xx-staging
  • org.winepak.Platform.Wine.Compat32/x86_64/3.xx-staging

If we need a specific version of wine staging. It would be nice to compile the Compat32 extension directly into the runtime.

@valentindavid
Copy link

.Compat32 has been renamed as .Compat.${arch}.

You can see an example of use on my fork of Steam: https://github.com/valentindavid/com.valvesoftware.Steam/tree/manual-rewrite

However we still do not provide cross compilers or multilib. You still need to build separately the 32 bits and 64bits runtimes.

Make sure to put everything you need from 32bits into 64bits within /usr/lib/i386-linux-gnu. That probably includes some executables. Have them in /usr/lib/i386-linux-gnu/wine for example. You can replace them in the original place by a symbolic link to the new place. Then make a .Compat.i386 extension out of this directory, like we do for org.freedesktop.Platform.Compat.i386.

On 64bits, /usr/lib/i386-linux-gnu is a symbolic link to /app/lib/i386-linux-gnu. So applications need to bind the extension there. --extension=org.freedesktop.Platform.Compat.i386=directory=lib/i386-linux-gnu

Also, use a recent version of flatpak-builder to make sure it installs libraries automatically in /usr/lib/i386-linux-gnu when using 1.8.

For context, the "better Compat32 support" is mainly about not having to fix RPATH/RUNPATH, or paths to plugins/modules/drivers (like dri drivers). Files are where they are expected to be. Apps also do not have to override lots of environment variables.

@julianrichen
Copy link
Contributor

So you no longer need to copy the ld-linux.so.2, that's nice.

With the new fd.o//1.8 would it be possible to mount org.winepak.Platform.Compat.i386 in the x86_64 runtime so apps don't need to include it? Nearly 0 windows apps can run without WoW64 support so it's need almost all the time :/

That or create a org.winepak.Sdk.Compat.i386 and mount that as an SDK extension so we could copy the pre-built i386 wine files we need during the x86_64 build?

@valentindavid
Copy link

Yes. You can make org.winepak.Platform.Compat.i386 to bind automatically. Replace the symbolic link /usr/lib/i386-linux-gnu by an empty directory. Then add it as an extension to the runtime.

You can also copy the files. This is also possible.

@valentindavid
Copy link

I have started a branch in order to test the new Freedesktop SDK.
https://github.com/valentindavid/winepak-sdk-images/tree/sdk-1.8

@valentindavid
Copy link

Note that /usr/libexec/freedesktop-post.sh should be run also on 1.8. It has nothing to do with ld-*.so* links. It is done to regenerate information that needs to collect information on the final state. Mostly it is to update cache data. Because the script is automatically generated in 1.8, there are actually more commands.

@valentindavid
Copy link

I have updated the branch to now build i386 extension to be used directly by runtime. There is still some work to be done for .Sdk.Compat.i386 extensions. And also for i386 extension to .Wine extensions. But the principle is the same.

@valentindavid
Copy link

You need to run sh compat.sh 3.0 to generate this extension.

@jjardon
Copy link
Author

jjardon commented Sep 4, 2018

Only as a reference, upstream issue here: https://gitlab.com/freedesktop-sdk/freedesktop-sdk/issues/348

@julianrichen
Copy link
Contributor

Moving to Buildstream in #45 which will target the latest, close as there's no point in keeping this open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants