http://bugs.winehq.org/show_bug.cgi?id=20792
Summary: git checkout 1.1.29 is not the same as 1.1.29 tarball Product: Wine Version: 1.1.29 Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: wylda@volny.cz
Hi, i'm currently working on broken Mirror's Edge. It was broken somewhere between 1.1.29 and 1.1.30 and is still broken in current git.
Git bisect gave me all bad, which means something is not right. So i did:
git bisect reset git reset --hard origin git checkout wine-1.1.29 make distclean export CC="gcc" CFLAGS="-g -O0" ./configure --with-opengl --verbose --disable-tests make depend make -j 16
and Mirror's Edge is still broken.
But when i do on same maschine:
wget http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.1.29.tar.bz2 make distclean export CC="gcc" CFLAGS="-g -O0" ./configure --with-opengl --verbose --disable-tests make depend make -j 16
Mirror's Edge is OK.
Isn't there something bad in wine's git Makefile etc?
http://bugs.winehq.org/show_bug.cgi?id=20792
Alexander Scott-Johns alexander.scott.johns+winebug@googlemail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |alexander.scott.johns+wineb | |ug@googlemail.com
--- Comment #1 from Alexander Scott-Johns alexander.scott.johns+winebug@googlemail.com 2009-11-22 08:06:14 --- You could try
diff -u --recursive --exclude=.git ~/wine-git ~/wine-1.1.29 | less
to see if there are any differences between them.
http://bugs.winehq.org/show_bug.cgi?id=20792
--- Comment #2 from Wylda wylda@volny.cz 2009-11-22 08:33:22 --- (In reply to comment #1)
... to see if there are any differences between them.
Thank you for hint. Before your post i already did md5 checksum between those two dir. Not a surprise that i saw a lot of difference between files:
* .o * .so * .a * .tlb * .res * .rc * .fake
But what surprised much more, that "git checkout wine-1.1.29" tree contain a lot of source files not available in 1.1.29 tarball.
dlls/d3dx8/ --a lot of redundant files here in git dlls/kernel32/nls/winerr_jpn.mc.rc --redundant in git dlls/oledb32/tests/Makefile --redundant in git dlls/winedos/libwinedos.def --redundant in git dlls/winoldap.mod16 --redundant in git quartz_strmif.h --redundant in git quartz/dlldata.c --redundant in git quartz_strmif_p.c --redundant in git openal32/Makefile --redundant in git openal32/openal32.dll.so --redundant in git openal32/openal.o --redundant in git openal32/openal32.dll.fake --redundant in git dlls/actxprxy/ --a lot of redundant *.c and *.h files here in git
...and redundant binaries in git after build process loader/wine-pthread loader/wine-kthread loader/wine-glibc-installed loader/wine-preloader-installed loader/wine-glibc loader/wine-glibc loader/wine-kthread-installed
http://bugs.winehq.org/show_bug.cgi?id=20792
--- Comment #3 from Wylda wylda@volny.cz 2009-11-22 08:36:44 --- Created an attachment (id=24896) --> (http://bugs.winehq.org/attachment.cgi?id=24896) md5 checksum of tarball
http://bugs.winehq.org/show_bug.cgi?id=20792
--- Comment #4 from Wylda wylda@volny.cz 2009-11-22 08:40:23 --- Created an attachment (id=24897) --> (http://bugs.winehq.org/attachment.cgi?id=24897) md5 checksum of git checkout wine 1.1.29
I did "vimdiff wine-1.1.29_clean_build_md5.txt \ wine-git_checkout_1.1.29_checksum_test_md5.txt"
and it showed me differences nicely in colors. Also you can see redundant files in git tree (and of course all files in .git dir were not counted).
http://bugs.winehq.org/show_bug.cgi?id=20792
--- Comment #5 from Alexander Scott-Johns alexander.scott.johns+winebug@googlemail.com 2009-11-22 08:56:14 --- (In reply to comment #0)
git reset --hard origin git checkout wine-1.1.29 make distclean
Random thought: You have used wine 1.1.29's make distclean to try and clean the extra files created by current git (or vice-versa). (What distclean removes has changed between releases.)
http://bugs.winehq.org/show_bug.cgi?id=20792
--- Comment #6 from Wylda wylda@volny.cz 2009-11-22 09:36:13 --- (In reply to comment #5)
Random thought: You have used wine 1.1.29's make distclean to try and clean the extra files created by current git (or vice-versa).
Hmmm, this make sense! ...and all those *.o & *.so & binary files _probably_ differs because of debuging symbols which contains different paths to *.c & *.h files.
Based on this knowledge i do another comparison, but with "really" clean git tree and will keep same path for tar ball and then git-tree build. Thank you!
What i do not know are those .res files. Should be the same or are those *.res files dynamically generated, i.e. reason for difference between git and tarbal?
http://bugs.winehq.org/show_bug.cgi?id=20792
Vitaliy Margolen vitaliy@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID
--- Comment #7 from Vitaliy Margolen vitaliy@kievinfo.com 2009-11-22 11:45:25 --- Don't compare generated binary files. Compare the source files only. And there are no differences at all.
http://bugs.winehq.org/show_bug.cgi?id=20792
Vitaliy Margolen vitaliy@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #8 from Vitaliy Margolen vitaliy@kievinfo.com 2009-11-22 11:45:32 --- Closing
http://bugs.winehq.org/show_bug.cgi?id=20792
--- Comment #9 from Wylda wylda@volny.cz 2009-11-22 12:14:15 --- (In reply to comment #7)
Don't compare generated binary files. Compare the source files only. And there are no differences at all.
But there *is* difference in build process and such thing can be find out only by comparing resultant binaries.
You close it, but you didn't provide logical explanation for what do i wrong, when git's 1.1.29 does not work, but tarball's 1.1.29 works for Mirror's Edge.
For me it's not closed... :-/
http://bugs.winehq.org/show_bug.cgi?id=20792
--- Comment #10 from Austin English austinenglish@gmail.com 2009-11-22 12:40:09 --- You can use 'git clean' to clean out your git tree.
http://bugs.winehq.org/show_bug.cgi?id=20792
--- Comment #11 from Vitaliy Margolen vitaliy@kievinfo.com 2009-11-22 13:55:32 --- (In reply to comment #9)
But there *is* difference in build process
No, there isn't. Git controls source files only. It's not used in any way to build code. The only exception is the version tag imported from git if available.
If you can't keep your git tree clean (pretty hard with active development) then you should: 1. User out-of-tree building: cd wine.git mkdir ../wine.git-build cd ../wine.git-build ../wine.git/configure && make depend && make all
2. Clean up your source tree (remove everything except .git): cd wine.git rm -rf * git checkout -f
http://bugs.winehq.org/show_bug.cgi?id=20792
--- Comment #12 from Wylda wylda@volny.cz 2009-11-22 19:49:03 --- (In reply to comment #10)
You can use 'git clean' to clean out your git tree.
I tried "git clean -d -f" even with "make distclean" _before_ doing "git bisect bad" to have distclean for right version, but it did not help. Again, I missed that commit completely (862965f4f71b19f251934b11d1e998831ccbaee6 --mentioned in bug 20799).
(In reply to comment #11)
If you can't keep your git tree clean (pretty hard with active development) then you should:
- User out-of-tree building:
cd wine.git mkdir ../wine.git-build cd ../wine.git-build ../wine.git/configure && make depend && make all
I like this method :) Thanks!
Anyway. Is it normal to miss the GOOD commit during git bisect?? (just repeat, that during git bisect between 1.1.29 and 1.1.30 i got all BAD).