[Don't have Cc: in KNode. oh well...]
Johannes Schindelin wrote:
On Fri, 18 Jan 2008, Johannes Sixt wrote:
quoted
BTW, how would you like to have a 40+ patch series presented that
implements the port to MinGW? Should I send to the ML despite its volume?
(Of course not before 1.5.4 is released.)
The current state of the series is available here:
http://repo.or.cz/w/git/mingw/j6t.git?a=shortlog;h=upstream
Comments from reading the patches briefly (since there are 42 patches, it
needs quite some time to even do it briefly):
Thanks a lot!
I agree with everything I didn't quote from your message.
- Possibly some of these commits could be folded back into
f90524e(Add target architecture MinGW):
96a27f1(MinGW: Implement gettimeofday()),
2e05f891(Implement a rudimentary poll() emulation for Windows),
142bda0(Fake implementions of getpwuid(), getuid(), and getpwnam() for
Windows),
e799caf(Implement setitimer() and sigaction()),
075fee7(Implement a wrapper of execve that can invoke shell scripts),
495f0af(Work around misbehaved rename() on Windows),
34cf7fd(Implement a pipe() replacement whose ends are not inherited to
children),
4504323(Implement start_command() for Windows),
b8e84a6(Implement a work-around for a misbehaved vsnprintf on Windows),
08bbcb4(Windows: always chmod(, 0666) before unlink()),
f6bbf12(Windows: Implement a wrapper of the open() function),
56cedf3(Windows: Fix PRIuMAX definition),
7458a97(Windows: Implement wrappers for gethostbyname(), socket(), and
connect()),
ef25947(Windows: Fix ntohl() related warnings about printf formatting),
b9db7ad(Windows: Implement a custom spawnve()), and
47dacb3(compat/pread.c: Add foward decl to fix warning)
This would become a gigantic patch, which I really dislike. It's much easier
to follow (and bisect) if things appear in smaller pieces.
- d6596ed(gitk: Disable msgfmt on MinGW) and
004fb4b(Fix renaming .gitk-new to .gitk on Windows if there is already a
.gitk)
are gitk patches.
Further, I think that d6596ed would be better done as an automatic
detection of msgfmt's presence; on my Eee PC, there is no msgfmt
either...
Let's do that later.
- 20fd16e(Windows: Use a customized struct stat that also has the
st_blocks member) should be folded into
6f97065(Add a new lstat and fstat implementation based on Win32 API)
(with a comment that you customized the struct stat, too)
But then, without 20fd16e, git does not compile, so again I would rather
fold that back into the MinGW commit.
The custom lstat() implementation cannot come after the custom struct stat
because we can't call Windows's stat() with a custom struct stat. But I
also don't want the custom lstat() in the code from the beginning because
it's merely an optimization.
- in git.git, the onelines are not terminated by "."
You mean commit messages?
- I'd prefer f90524e(Add target architecture MinGW) to come last.
Alternatively, you could cut out the Makefile change so that the series
is still bisectable: MinGW will just not be supported until the very
end.
I strongly disagree. The series is completely bisectable on *nix. But if the
Makefile change comes last, it becomes difficult to bisect on MinGW.
$ git grep __MINGW j6t/upstream
comes up with 26 hits.
The first of them: cache.h:381, function is_absolute_path(). That just
cries out loud to be "#ifdef DOS_STYLE_PATHS" instead of "#ifdef
__MINGW32__".
I guess there should also be -DHAS_NO_FORK_BUT_THREADS -DHAS_TMP_AND_TEMP
-DHAS_WINSOCK2, but most of them look like -DDOS_STYLE_PATHS to me.
Doesn't this go too far? How many systems are there where not all of them
would be set at the same time?
-- Hannes