[PATCH 5/6] winegstreamer: Rename gstdemux.c to quartz_parser.c.
Francois Gouget
fgouget at codeweavers.com
Tue Feb 23 08:12:42 CST 2021
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.
[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.
--
Francois Gouget <fgouget at codeweavers.com>
More information about the wine-devel
mailing list