https://bugs.winehq.org/show_bug.cgi?id=53977
Bug ID: 53977 Summary: amstream:amstream qedit:mediadet mf:transform mfmediaengine:mfmediaengine quartz:filtergraph winmm:mci wmp:media wmvcore:wmvcore mf:mf mfplay:mfplay qasf:asfreader broken on Debian Testing Product: Wine Version: unspecified Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: quartz Assignee: wine-bugs@winehq.org Reporter: fgouget@codeweavers.com Distribution: ---
amstream:amstream qedit:mediadet mf:transform mfmediaengine:mfmediaengine quartz:filtergraph winmm:mci wmp:media wmvcore:wmvcore mf:mf mfplay:mfplay qasf:asfreader all have failures on Debian Testing.
The exact failures are not really important, see the corresponding entries on the failure patterns page if more details are needed: https://test.winehq.org/data/patterns.html
What's important is that the detection of gst/gst.h now fails on Debian Testing, resulting in Wine being compiled without GStreamer support which is what broke all the tests above:
configure:17099: gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 cflags: configure:17100: gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 libs: configure:17103: checking for gst/gst.h configure:17103: gcc -m32 -c -g -O2 conftest.c >&5 conftest.c:174:10: fatal error: gst/gst.h: No such file or directory 174 | #include <gst/gst.h> | ^~~~~~~~~~~
And this all started with the commit below, which means this issue is related to bug 53953 but for Debian Testing instead of Fedora:
commit c7a97b5d5d56ef00a0061b75412c6e0e489fdc99 (HEAD, refs/bisect/bad) Author: Zebediah Figura zfigura@codeweavers.com Date: Thu Nov 17 19:32:39 2022 -0600
configure: Override PKG_CONFIG_LIBDIR instead of PKG_CONFIG_PATH for 32-bit builds on 64-bit hosts.
This allows 32-bit packages to be found when the user has specified PKG_CONFIG_PATH for some other reason.
This also mirrors the way e.g. i686-linux-gnu-pkg-config is implemented on Debian, and possibly other distributions as well.
This also prevents 64-bit .pc files from being found. This was originally intended as a benefit [1], but can contribute to misdetection of headers which are not actually multiarch (e.g. GStreamer, although at the time that [1] was written that was a preëxisting problem). In general a distribution which provides .pc files for one architecture should be expected to provide them for any architecture that it actually provides libraries for; even if that was not true of Debian in 2017, it is now. I moreover assert it is better to fail to find a present library than to incorrectly find the wrong one.
Note that we can't easily use i686-linux-gnu-pkg-config, as would otherwise be preferable, for reasons also described in [1].
[1] https://www.winehq.org/pipermail/wine-devel/2017-June/118002.html
https://bugs.winehq.org/show_bug.cgi?id=53977
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Regression SHA1| |c7a97b5d5d56ef00a0061b75412 | |c6e0e489fdc99 CC| |z.figura12@gmail.com Keywords| |regression, source, | |testcase
https://bugs.winehq.org/show_bug.cgi?id=53977
--- Comment #1 from Zeb Figura z.figura12@gmail.com --- I specifically did test that change on Debian testing. Is libgstreamer1.0-dev:i386 installed?
https://bugs.winehq.org/show_bug.cgi?id=53977
--- Comment #2 from François Gouget fgouget@codeweavers.com --- $ dpkg -l | grep libgstreamer1.0-dev ii libgstreamer1.0-dev:amd64 1.20.3-1 amd64 GStreamer core development files ii libgstreamer1.0-dev:i386 1.20.3-1 i386 GStreamer core development files
https://bugs.winehq.org/show_bug.cgi?id=53977
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Assignee|wine-bugs@winehq.org |fgouget@codeweavers.com
https://bugs.winehq.org/show_bug.cgi?id=53977
--- Comment #3 from François Gouget fgouget@codeweavers.com --- The config.log file contains interesting information:
configure:16935: gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 cflags: configure:16936: gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 libs: configure:16938: gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 errors: Package gstreamer-video-1.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gstreamer-video-1.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gstreamer-video-1.0' found ...
The .pc files are part of the libgstreamer-plugins-base1.0-dev package but the 32-bit version is missing (probably as a result of past multiarch conflicts):
$ dpkg -l | grep libgstreamer-plugins-base1.0-dev ii libgstreamer-plugins-base1.0-dev 1.20.3-2 amd64 GStreamer development files for libraries from the "base" set
So I will update the VM. I suspect before the patch the configure script was using the 64-bit .pc file for the 32-bit build which masked this configuration bug.
https://bugs.winehq.org/show_bug.cgi?id=53977
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|NEW |RESOLVED
--- Comment #4 from François Gouget fgouget@codeweavers.com --- The issue is that the Debian maintainer simply removed multi-arch support in version 1.20.3-2 of the libgstreamer-plugins-base1.0-dev package:
gst-plugins-base1.0 (1.20.3-2) unstable; urgency=medium
[ Debian Janitor ] * Apply multi-arch hints. + libgstreamer-plugins-base1.0-dev: Drop Multi-Arch: same.
See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1016631
This follows marking it as "Multi-Arch: same" in version 1.14.3-1 to fix bug 862119 which I had filed.
Anyway it's currently impossible to install the i386 version of that package which is why pkg-config does not find the corresponding .pc files. So I tweaked wt-install-dev to manually extract that package's /usr/lib/i386-linux-gnu files which includes both the .so symlinks and the .pc files.
I would normally take advantage of the maintenance operation to update the other debiant packages but I had to give up on that because upgrading the X11 / Mesa / Llvm packages causes the X server to crash early in the tests (probably during the d3d* or ddraw tests). That also means not actually using wt-install-dev because it causes enough packages to be upgraded to break things. Instead I applied the /usr/lib/i386-linux-gnu hack entirely by hand.
While there is a bug report for the GStreamer issue I'm not aware of one for this X11 crash issue (nor would I know how to file one since I don't know which part of X11 is responsible for the crash) so it will quite possibly still be present when Debian 12 is released. If so the Wine tests will be stuck on Debian 11 :-(
Anyway. GStreamer is now correctly detected on the debiant VM and I also confirmed that these tests now succeed in the wow32 tests. So this immediate bug is fixed.
https://bugs.winehq.org/show_bug.cgi?id=53977
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #5 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 8.0-rc2.