[PATCH 5/6] winegstreamer: Rename gstdemux.c to quartz_parser.c.

Zebediah Figura (she/her) zfigura at codeweavers.com
Tue Feb 23 10:42:36 CST 2021


On 2/23/21 8:12 AM, Francois Gouget wrote:
> On Tue, 23 Feb 2021, Francois Gouget wrote:
> 
>> On Mon, 22 Feb 2021, Zebediah Figura (she/her) wrote:
>> [...]
>>> https://testbot.winehq.org/JobDetails.pl?Key=85998
>> [...]
>>>> === debiant2 (build log) ===
>>>>
>>>> /home/winetest/tools/testbot/var/wine-win32/../wine/dlls/winegstreamer/quartz_parser.c:1509: undefined reference to `heap_realloc'
>>>
>>> I have no idea what happened here. The patch on the jobs page looks
>>> correct, and changes all of the heap_* calls mentioned here. At any rate
>>> it compiles fine for me, of course...
>>
>> I can reproduce the build error if I apply the TestBot patch on top of 
>> 4981785f0fbc. The issue is that quartz_parser.c does not #include 
>> wine/heap.h. Maybe it assumes some other header is going to do it but 
>> that's not happening.
> 
> So the thing is that 'git apply' does not give the same result as 
> 'patch -p1'. I think it's a bug in the way 'git apply' handles renamed 
> files, or maybe more specifically in the way it handles patches that 
> first modify a file and then rename it.
> 
> The latter may be outside the scope of what git apply is meant to 
> support if one supposes that the patches it is meant to work on come 
> from a single Git commit.
> 
> When a commit both renames and modifies a file, the resulting Git diff 
> does both in one operation:
> 
> diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/quartz_parser.c
> similarity index 97%
> rename from dlls/winegstreamer/gstdemux.c
> rename to dlls/winegstreamer/quartz_parser.c
> index 84e6bcd61e4..e9e7c3a0f9f 100644
> --- a/dlls/winegstreamer/gstdemux.c
> +++ b/dlls/winegstreamer/quartz_parser.c
> 
> 
> Here the job's patch is the result of concatenating the patch series 
> parts. So it first modifies gstdemux.c three times and only then renames 
> it to quartz_parser.c.
> 
> But it seems that instead of doing that, git apply first makes a copy of 
> gstdemux.c as quartz_parser.c, and only then patches gstdemux.c (and 
> never deletes gstdemux.c). [1]
> 
> So the result is that with git apply one gets the unmodified gstdemux.c 
> which still references heap_*().
> 
> Options:
> 1. Use patch -p1. But I believe Alexandre uses git apply which 
>    sometimes rejects standalone patches that patch -p1 accepts.
>    patch -p1 may also have other issues of its own (e.g. [1]).
> 
> 2. Use git apply for standalone patches and patch -p1 for patch series?
>    (Or just patches where there's a rename). Yuck.
> 
> 3. Apply each part one at a time. That would require putting some 
>    delimiter in the concatenated patch so it can be split and have each 
>    part committed one at a time on the build machine.

My guess is that (3) is the best option, or at least, it's the most
reliable. [That or we never concat the patches in the first place...?]

> 
> 
> 
> [1] I suspect this is so git apply can handle Git-generated patches that 
>     rename A to B and B to A at the same time. I wonder if patch -p1 can 
>     handle that.
> 

Yeah, that's a fair point, so it's probably not a bug after all...

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 495 bytes
Desc: OpenPGP digital signature
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20210223/79503443/attachment.sig>


More information about the wine-devel mailing list