https://bugs.winehq.org/show_bug.cgi?id=51926
Bug ID: 51926 Summary: Cannot build wine 6.20 on Slackware Linux 14.2 Product: Packaging Version: unspecified Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-packages Assignee: wine-bugs@winehq.org Reporter: studiosg@giustetti.net CC: dimesio@earthlink.net Distribution: ---
Created attachment 70894 --> https://bugs.winehq.org/attachment.cgi?id=70894 Output of the configure and make commands
I'm trying to package Wine 6.20 for Slackware 14.2 (Stable). Glibc version is 2.23. Gcc version is 5.5. Both the 32 and 64 bit versions are affected. No such problem when building release 6.19. The build process fails rather soon when compiling file dlls/ntdll/unix/loader.c. From what I understand, the issue is related to the __WAIT_INT (status) macro defined in header file /usr/include/sys/wait.h (Part of glibc). The macro is expanded into: __WAIT_INT (status): (__extension__ (((union { __typeof(status) ; int __i; }) { . = (status) }).__i)) but the compiler does not recognize it as a valid declaration and issues a warning resulting in the error reported in the attached wine_make.log file. The output from the configure command is included in the second attached file: wine_configure.log
Any help is appreciated.
Thanks in advance Simone
https://bugs.winehq.org/show_bug.cgi?id=51926
studiosg@giustetti.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Distribution|--- |Slackware
https://bugs.winehq.org/show_bug.cgi?id=51926
Rosanne DiMesio dimesio@earthlink.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|wine-packages |-unknown Version|unspecified |6.20 Product|Packaging |Wine
https://bugs.winehq.org/show_bug.cgi?id=51926
--- Comment #1 from Ken Sharp imwellcushtymelike@gmail.com --- GCC 5.5 is very old. Upgrade and try again.
https://bugs.winehq.org/show_bug.cgi?id=51926
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC|dimesio@earthlink.net |z.figura12@gmail.com
--- Comment #2 from Zebediah Figura z.figura12@gmail.com --- (In reply to Ken Sharp from comment #1)
GCC 5.5 is very old. Upgrade and try again.
There's no call for that. We should at least try to support older versions.
I'm trying to figure out exactly what's broken, but I can't seem to reproduce it with a standalone example...
https://bugs.winehq.org/show_bug.cgi?id=51926
--- Comment #3 from Zebediah Figura z.figura12@gmail.com --- If I just copy a bunch of definitions from old glibc's wait.h and reproduce our statement, I don't get any error:
https://gcc.godbolt.org/z/3WG4r7d7r
So there must be something else going on...
https://bugs.winehq.org/show_bug.cgi?id=51926
--- Comment #4 from studiosg@giustetti.net --- Thanks for the feedback Zebediah,
I added a couple of #pragma directives to your example and can confirm that the problem only arises when building release 6.20.
In your test and in wine <= 6.19 definitions are expanded as follows: Your Test / wine 6.19 The value of WIFEXITED(status): ((((__extension__ (((union { __typeof(status) __in; int __i; }) { .__in = (status) }).__i))) & 0x7f) == 0) The value of __WAIT_INT (status): (__extension__ (((union { __typeof(status) __in; int __i; }) { .__in = (status) }).__i))
While in Wine 6.20 they are expanded in: The value of WIFEXITED(status): ((((__extension__ (((union { __typeof(status) ; int __i; }) { . = (status) }).__i))) & 0x7f) == 0) The value of __WAIT_INT (status): (__extension__ (((union { __typeof(status) ; int __i; }) { . = (status) }).__i))
Please note the missing "__in"s. As far as I can tell, both "__in"s are replaced by an empty string (Lenght 0) resulting in a wrong definition and a syntax error.
Adding line of code: #undef __in before the "start_server" function definition solves the problem for loader.c, but the very same error arises again later on when compiling process.c.
__in is defined in "include/sal.h", line 347: #define __in This presented no problem before Wine 6.20. As far as I can tell the header is included where it should not, but I wasn't able to determine where so far.
https://bugs.winehq.org/show_bug.cgi?id=51926
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Regression SHA1| |d4259ac8e9326a8173d6f83f0d5 | |25c97b90a1da0 Status|UNCONFIRMED |NEW Summary|Cannot build wine 6.20 on |Wine fails to build with |Slackware Linux 14.2 |glibc headers < 2.24 Keywords| |regression
--- Comment #5 from Zebediah Figura z.figura12@gmail.com --- Nice find. Those are static analyzer macros, which are littered throughout Microsoft's headers (e.g. denoting parameter values as input or output), and as a result they need to be included pretty much everywhere. Unfortunately they conflict with the C namespace...
I think the best solution is to #undef after including the headers.
https://bugs.winehq.org/show_bug.cgi?id=51926
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |version2013@protonmail.com
--- Comment #6 from Zebediah Figura z.figura12@gmail.com --- *** Bug 51940 has been marked as a duplicate of this bug. ***
https://bugs.winehq.org/show_bug.cgi?id=51926
--- Comment #7 from Zebediah Figura z.figura12@gmail.com --- *** Bug 51942 has been marked as a duplicate of this bug. ***
https://bugs.winehq.org/show_bug.cgi?id=51926
--- Comment #8 from Zebediah Figura z.figura12@gmail.com --- Created attachment 70944 --> https://bugs.winehq.org/attachment.cgi?id=70944 #undef
Can you please test the attached patch?
https://bugs.winehq.org/show_bug.cgi?id=51926
--- Comment #9 from studiosg@giustetti.net --- Created attachment 70947 --> https://bugs.winehq.org/attachment.cgi?id=70947 Archive containing a bunch of patches for various files
https://bugs.winehq.org/show_bug.cgi?id=51926
--- Comment #10 from studiosg@giustetti.net --- The patch works for loader.c. To achieve a full build I had to patch some other files in the same way:
./dlls/netapi32/unixlib.c ./dlls/ntdll/unix/loader.c ./dlls/ntdll/unix/process.c ./dlls/winspool.drv/info.c ./server/ptrace.c ./server/request.c ./tools/tools.h
Attached you'll find an archive containing all of the resulting patches. Tomorrow I'll try to merge them into a single one and perform an unattended full build to check if the resulting packages works. I'll let you know.
Thanks again
have a nice day Simone
https://bugs.winehq.org/show_bug.cgi?id=51926
--- Comment #11 from studiosg@giustetti.net --- I managed to build a working 32 bit package applying the submitted patch set. I tested a simple program like 7Zip and it worked flawlessly. Files included in 6.20 match the list for 6.19. I still have to try building and testing a 64 bit version, but so far everything seems fine.
https://bugs.winehq.org/show_bug.cgi?id=51926
--- Comment #12 from Zebediah Figura z.figura12@gmail.com --- Should be fixed upstream by https://source.winehq.org/git/wine.git/commitdiff/1c9b843ecf821d3caf43668c43bf0280c793b25d; please retest.
https://bugs.winehq.org/show_bug.cgi?id=51926
Olivier F. R. Dierick o.dierick@piezo-forte.be changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |o.dierick@piezo-forte.be
--- Comment #13 from Olivier F. R. Dierick o.dierick@piezo-forte.be --- (In reply to Zebediah Figura from comment #12)
Should be fixed upstream by https://source.winehq.org/git/wine.git/commitdiff/ 1c9b843ecf821d3caf43668c43bf0280c793b25d; please retest.
Hello,
Also affects Debian 8 Jessie with GCC 4.9.2.
The commit above fixes the issue.
Regards.
https://bugs.winehq.org/show_bug.cgi?id=51926
--- Comment #14 from studiosg@giustetti.net --- The cited commit fixes the issue for Slackware 14.2 with Gcc 5.5.
Thanks for the fix and support.
Have a nice day Simone
https://bugs.winehq.org/show_bug.cgi?id=51926
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|NEW |RESOLVED Fixed by SHA1| |1c9b843ecf821d3caf43668c43b | |f0280c793b25d
--- Comment #15 from Gijs Vermeulen gijsvrm@gmail.com --- Marking FIXED.
https://bugs.winehq.org/show_bug.cgi?id=51926
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #16 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 6.21.