http://bugs.winehq.org/show_bug.cgi?id=33377
Bug #: 33377 Summary: Dependencies on third-party import dlls are undetected Product: Wine-Testbot Version: unspecified Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: unknown AssignedTo: wine-bugs@winehq.org ReportedBy: fgouget@codeweavers.com Classification: Unclassified
Created attachment 44167 --> http://bugs.winehq.org/attachment.cgi?id=44167 Patch to reproduce this bug
The attached patch reproduces an issue first encountered 'in the wild' with this set of patches:
* [1/3] include: Add COM interface definitions needed for PrintDlgEx implementation. http://www.winehq.org/pipermail/wine-patches/2013-April/123420.html * [3/3] comdlg32: Add an interactive PrintDlgEx test. http://www.winehq.org/pipermail/wine-patches/2013-April/123422.html
* Re: [3/3] comdlg32: Add an interactive PrintDlgEx test. http://www.winehq.org/pipermail/wine-devel/2013-April/099397.html
Here is the core of the issue: * The patch contains a first chunk that modifies include/commdlg.h. * This causes a new symbol to be exported by libuuid.a. * The comdlg32:printdlg test needs that symbol to be relinked.
The problem is that the WineTestBot does not do a full recompile (for performance reasons), and thus libuuid.a is not rebuilt. So the comdlg32 relink fails because of the missing symbol.
Unfortunately there's really no clear indication in the patch that libuuid.a needs to be rebuilt. We could very well run into the same issue with dxguid or a number of other dlls.
Some options: * Systematically do a full rebuild. This would be pretty wasteful. * Do a full rebuild whenever the patch touches 'include/'. * Hardcode a list of uuid-like dlls and rebuild them all whenever a patch touches 'include/'. * Detect which uuid-like dlls the test links with (by parsing the Makefile?), and rebuild those whenever the patch touches 'include/'.
It's also possible that any chunk outside of the test directory could get us into trouble if we link with the corresponding dll.
https://bugs.winehq.org/show_bug.cgi?id=33377
--- Comment #1 from François Gouget fgouget@codeweavers.com --- The TestBot also does not detect changes to aclocal.m4 and fails to update the configure script before rebuilding the tests. This probably also applies to a lot of other build system files. There are two tests for this issue in the WTB suite: https://github.com/fgouget/wine/tree/wtbsuite
https://bugs.winehq.org/show_bug.cgi?id=33377
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #2 from François Gouget fgouget@codeweavers.com --- This is fixed.
* The TestBot now does full rebuilds.
commit 34479b22731c94a0283928091d41b4ddf379587c Author: Francois Gouget fgouget@codeweavers.com Date: Mon Mar 23 10:04:03 2020 +0100
testbot: Simplify building Wine.
The shared BuildWine() function will reconfigure Wine if given the configure parameters, and build the specified Wine target. For the build VMs the configure options disable the X and FreeType checks, tell Wine not to build the WineTest executable, and the buildtests target ensures only the tests are built. Meanwhile the wine VMs essentially use the default configure options and make target.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47849 Signed-off-by: Francois Gouget fgouget@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
* WineTestBot::PatchUtils correctly detects changes to files like aclocal.m4 and then runs the appropriate scripts. See for instance:
commit 2ac989fd8548d6546061d0e26cda0e33f8b3c037 Author: Francois Gouget fgouget@codeweavers.com Date: Tue Apr 6 11:24:26 2021 +0200
testbot/PatchUtils: Document the make_* scripts indirect impacts.
Signed-off-by: Francois Gouget fgouget@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org