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.