Wine test image

Thanx 2. It is fun to test it eg. in a VM, but the lack of network support is a drawback for me. I hope X512 will update the package in the near future, with network enabled.

1 Like

Ill try on bare metal.

1 Like

Good luck andreas_dr and have fun, I’m waiting for new screenshots :slight_smile:

BTW: does anyone know how I can edit my first post?
I want to add the new link there, so people can profit from it, but don’t see the edit button, I see it only for my recent posts. Is it impossible?

1 Like

You need to have a certain level of activity (at least 10 posts? I do not remember tbh) to have this functionality enabled.

@Waffel I have upped your user level a bit, see if you can edit now.

2 Likes

When I’d like to add packages manually, I’d add in UserBuildConfig something like:

AddFilesToHaikuImage system packages : /home/korli/vulkan-1.2.203-1-x86_64.hpkg /home/korli/wine-6.23-1-x86_64.hpkg ;

2 Likes

“The bad news is: Wine refuses to start in a live environment :roll_eyes:
I get this massage:”

~> winecfg 
wine: created the configuration directory '/boot/home/.wine'
wineserver: bind: Operation not supported
~> 

A Google search on the server error message brings up similar cases. It can be to do with permissions, groups, server access to files, or interference from other programs:

https://serverfault.com/questions/425529/operation-not-permitted-when-starting-unicorn
https://stackoverflow.com/questions/58244704/how-to-fix-operation-not-permitted-in-http-listener

2 Likes

What type of live environment is this? If it’s an image written to a CD/DVD, that’s going to be read-only. Why not install to a VM or bare metal?

So far testing is not very successful.

~> wine64 --version
wine-6.23
~> wine64
Usage: wine PROGRAM [ARGUMENTS…] Run the specified program
wine --help Display this help and exit
wine --version Output version information and exit
~> winecfg
Kill Thread
~> wineserver
~> winepath
Kill Thread
~> wineboot
Kill Thread

It works for me, at least in a VM, actually Virt-Manager.
Did you tried the image or just the Wine package. It is the whole point of the custom image, that you can’t use the Wine package on a stock Haiku image yet. You have to patch the kernel and build your own image.

Man korli where were you a few days ago. This seems so legit and straight forward, that’s how I imagined it. Will give it a try when I have to build an image again - Thank you! :+1:

My bad :wink: missed that part about patching kernel. I’ve burnt haiku image to usb, mounted it. And just did pkgman install /Haiku1/system/packages/*.hpkg - Rebooted. Wine is working.

1 Like

Thank you for the links! My guess is also that the Wineserver is trying to establishing a socket connection or to put a PID file somewhere, but can’t do that, because there is a missing directory or it has the wrong file permission.

BTW: do we have to bother with file permissions on Haiku?

Yes, under the hood multi-user support is already mostly implemented, with file permissions already fully supported if I remember correctly. Better have packages/programs already taking into account file permissions to be ready whenever multi-user support progresses and is ready so you do not have it breaking up whenever it happens.

2 Likes

To the gallery of the screenshots. :slight_smile: Far Manager.
2022-02-05_13-49

7 Likes

Possibly related to #16110 (Telegram silently fail to start from Live CD) – Haiku

1 Like

It seems not but I’m not sure.

here is strace log of the live session

~> strace wineserver
[   647] <... image_relocated resumed>  () (389 us)
[   647] set_area_protection(0x36e9, 0x5) = 0x0 No error () (168 us)
[   647] set_area_protection(0x36eb, 0x5) = 0x0 No error () (455 us)
[   647] set_area_protection(0x36ee, 0x5) = 0x0 No error () (405 us)
[   647] set_area_protection(0x36f1, 0x5) = 0x0 No error () (333 us)
[   647] set_area_protection(0x36f3, 0x5) = 0x0 No error () (192 us)
[   647] set_area_protection(0x36f6, 0x5) = 0x0 No error () (135 us)
[   647] get_system_info(0x7ffc786eb630) = 0x0 No error () (170 us)
[   647] get_system_info(0x7ffc786eb430) = 0x0 No error () (94 us)
[   647] reserve_address_range([0x100100000000], 0x7, 0x1000000000) = 0x0 No error ([0x1125318f4000]) (175 us)
[   647] create_area("heap", 0x1644a0fcec0, 0x1, 0x40000, 0x0, 0x3) = 0x36fa () (178 us)
[   647] open(0xffffffff, "/dev/random", 0x0, 0x0) = 0x3 () (212 us)
[   647] read(0x3, 0xffffffffffffffff, 0x1644a0b8968, 0x8) = 0x8 () (121 us)
[   647] close(0x3) = 0x0 No error () (104 us)
[   647] resize_area(0x36fa, 0x50000) = 0x0 No error () (102 us)
[   647] resize_area(0x36fa, 0x60000) = 0x0 No error () (104 us)
[   647] get_next_image_info(0x0, [0x0], 0x7ffc786eaf60, 0x450) = 0x0 No error () (148 us)
[   647] sigaction(0x7, 0x7ffc786eb890, 0x7ffc786eb8b0) = 0x0 No error () (105 us)
[   647] sigaction(0x1, 0x7ffc786eb890, 0x7ffc786eb8b0) = 0x0 No error () (96 us)
[   647] sigaction(0x2, 0x7ffc786eb890, 0x7ffc786eb8b0) = 0x0 No error () (99 us)
[   647] sigaction(0x3, 0x7ffc786eb890, 0x7ffc786eb8b0) = 0x0 No error () (95 us)
[   647] sigaction(0xf, 0x7ffc786eb890, 0x7ffc786eb8b0) = 0x0 No error () (104 us)
[   647] sigaction(0x6, 0x7ffc786eb890, 0x7ffc786eb8b0) = 0x0 No error () (96 us)
[   647] socketpair(0x9, 0x1, 0x0, [0x0]) = 0x0 No error () (212 us)
[   647] shutdown_socket(0x3, 0x1) = 0x0 No error () (129 us)
[   647] poll([{fd=4, events=POLLIN}], 0x1, 0x3e8, (nil)) = 0x1 ([{fd=4, revents=POLLIN}]) (207 us)
[   647] read(0x4, 0xffffffffffffffff, 0x7ffc786eb8bf, 0x1) = 0x0 () (99 us)
[   647] close(0x3) = 0x0 No error () (273 us)
[   647] close(0x4) = 0x0 No error () (131 us)
[   647] open(0xffffffff, "/dev/null", 0x2, 0x0) = 0x3 () (157 us)
[   647] setcwd(0xffffffff, "/boot/home/.wine") = 0x0 No error () (145 us)
[   647] open(0xffffffff, ".", 0x0, 0x0) = 0x4 () (141 us)
[   647] read_stat(0x4, (nil), false, 0x7ffc786eb770, 0x80) = 0x0 No error () (107 us)
[   647] getuid(false) = 0x0 () (94 us)
[   647] getuid(false) = 0x0 () (94 us)
[   647] read_stat(0xffffffff, "/tmp/.wine-0", false, 0x7ffc786eb7f0, 0x80) = 0x0 No error () (207 us)
[   647] getuid(false) = 0x0 () (124 us)
[   647] read_stat(0xffffffff, "/tmp/.wine-0/server-3-10000000000000d9", false, 0x7ffc786eb770, 0x80) = 0x0 No error () (183 us)
[   647] getuid(false) = 0x0 () (105 us)
[   647] setcwd(0xffffffff, "/tmp/.wine-0/server-3-10000000000000d9") = 0x0 No error () (201 us)
[   647] open(0xffffffff, ".", 0x0, 0x0) = 0x5 () (150 us)
[   647] read_stat(0x5, (nil), false, 0x7ffc786eb7f0, 0x80) = 0x0 No error () (79 us)
[   647] create_pipe([0x0]) = 0x0 No error () (131 us)
[   647] fork() = 0x289 () (279 us)
wineserver: bind: Operation not supported
[   647] close(0x7) = 0x0 No error () (271 us)
[   647] --- SIGCHLD (Child exited) ---
[   647] read(0x6, 0xffffffffffffffff, 0x7ffc786eb8b3, 0x1) = 0x0 () (127 us)
[   647] wait_for_child(0x289, 0x8, 0x7ffc786eb840, (nil)) = 0x289 () (78 us)
[   647] exit_team(0x1) () (72 us)
strace: Failed to run thread 647: Bad port ID
~>

and here is strace log of installed session

~> strace wineserver
[   807] <... image_relocated resumed>  () (334 us)
[   807] set_area_protection(0x68e0, 0x5) = 0x0 No error () (307 us)
[   807] set_area_protection(0x68e2, 0x5) = 0x0 No error () (247 us)
[   807] set_area_protection(0x68e5, 0x5) = 0x0 No error () (122 us)
[   807] set_area_protection(0x68e8, 0x5) = 0x0 No error () (113 us)
[   807] set_area_protection(0x68ea, 0x5) = 0x0 No error () (110 us)
[   807] set_area_protection(0x68ed, 0x5) = 0x0 No error () (95 us)
[   807] get_system_info(0x7ffbd0654820) = 0x0 No error () (134 us)
[   807] get_system_info(0x7ffbd0654620) = 0x0 No error () (99 us)
[   807] reserve_address_range([0x100100000000], 0x7, 0x1000000000) = 0x0 No error ([0x11286a782000]) (204 us)
[   807] create_area("heap", 0x14753b79ec0, 0x1, 0x40000, 0x0, 0x3) = 0x68f1 () (189 us)
[   807] open(0xffffffff, "/dev/random", 0x0, 0x0) = 0x3 () (228 us)
[   807] read(0x3, 0xffffffffffffffff, 0x14753b35968, 0x8) = 0x8 () (176 us)
[   807] close(0x3) = 0x0 No error () (80 us)
[   807] resize_area(0x68f1, 0x50000) = 0x0 No error () (118 us)
[   807] resize_area(0x68f1, 0x60000) = 0x0 No error () (93 us)
[   807] get_next_image_info(0x0, [0x0], 0x7ffbd0654150, 0x450) = 0x0 No error () (152 us)
[   807] sigaction(0x7, 0x7ffbd0654a80, 0x7ffbd0654aa0) = 0x0 No error () (100 us)
[   807] sigaction(0x1, 0x7ffbd0654a80, 0x7ffbd0654aa0) = 0x0 No error () (128 us)
[   807] sigaction(0x2, 0x7ffbd0654a80, 0x7ffbd0654aa0) = 0x0 No error () (103 us)
[   807] sigaction(0x3, 0x7ffbd0654a80, 0x7ffbd0654aa0) = 0x0 No error () (98 us)
[   807] sigaction(0xf, 0x7ffbd0654a80, 0x7ffbd0654aa0) = 0x0 No error () (147 us)
[   807] sigaction(0x6, 0x7ffbd0654a80, 0x7ffbd0654aa0) = 0x0 No error () (113 us)
[   807] socketpair(0x9, 0x1, 0x0, [0x0]) = 0x0 No error () (225 us)
[   807] shutdown_socket(0x3, 0x1) = 0x0 No error () (86 us)
[   807] poll([{fd=4, events=POLLIN}], 0x1, 0x3e8, (nil)) = 0x1 ([{fd=4, revents=POLLIN}]) (172 us)
[   807] read(0x4, 0xffffffffffffffff, 0x7ffbd0654aaf, 0x1) = 0x0 () (95 us)
[   807] close(0x3) = 0x0 No error () (132 us)
[   807] close(0x4) = 0x0 No error () (166 us)
[   807] open(0xffffffff, "/dev/null", 0x2, 0x0) = 0x3 () (189 us)
[   807] setcwd(0xffffffff, "/boot/home/.wine") = 0x0 No error () (161 us)
[   807] open(0xffffffff, ".", 0x0, 0x0) = 0x4 () (199 us)
[   807] read_stat(0x4, (nil), false, 0x7ffbd0654960, 0x80) = 0x0 No error () (113 us)
[   807] getuid(false) = 0x0 () (91 us)
[   807] getuid(false) = 0x0 () (86 us)
[   807] read_stat(0xffffffff, "/tmp/.wine-0", false, 0x7ffbd06549e0, 0x80) = 0x0 No error () (166 us)
[   807] getuid(false) = 0x0 () (84 us)
[   807] read_stat(0xffffffff, "/tmp/.wine-0/server-3-18fe78", false, 0x7ffbd0654960, 0x80) = 0x0 No error () (189 us)
[   807] getuid(false) = 0x0 () (84 us)
[   807] setcwd(0xffffffff, "/tmp/.wine-0/server-3-18fe78") = 0x0 No error () (169 us)
[   807] open(0xffffffff, ".", 0x0, 0x0) = 0x5 () (167 us)
[   807] read_stat(0x5, (nil), false, 0x7ffbd06549e0, 0x80) = 0x0 No error () (95 us)
[   807] create_pipe([0x0]) = 0x0 No error () (305 us)
[   807] fork() = 0x329 () (281 us)
[   807] close(0x7) = 0x0 No error () (118 us)
[   807] read(0x6, 0xffffffffffffffff, 0x7ffbd0654aa3, 0x1) = 0x1 () (183 us)
[   807] exit_team(0x0) () (119 us)
strace: Failed to run thread 807: Bad port ID
~>

Maybe someone can read there more than me.

EDIT:

I think you fount the right bug report, although strace was not very helpful in this case.

Here my thoughts:
Wine creates in a live session a directory with the path: /boot/system/cache/tmp/.wine-0
Quote from Wine man page: https://linux.die.net/man/1/wineserver

So if Wine can’t create a socket file in /boot/system/cache/tmp/.wine-0 directory, like suggested in this bug report, it simply fail.

5 Likes

The cause of the bug is that the write_overlay does not support creating FIFOs. (I didn’t look further to see how much work it would be to do so, but I’d imagine it’s not too much.)

1 Like

2022-02-06_10-21
The Bat! email client 6.8.8 version.

7 Likes

2022-02-06_19-03

8 Likes