git/list[1] front-page[2] threads[3] people[4] search[5] about
 

git interix support

From
MDMarkus Duft <markus.duft@salomon.at>
Date
Mar 9, 2010, 10:35 UTC
Message-ID
<4B962456.20600@salomon.at>
Hey.

i have "ported" git to interix (haha, wasn't so much of a problem after all ;)). i have a small patch (attached). i know that it sure doesn't have production quality yet, but i try gathering ideas/input here.

additionally to the patch i'm setting:

147 if [[ ${CHOST} == *-interix* ]] ; then 148 myopts="${myopts} NO_IPV6=YesPlease" 149 myopts="${myopts} NO_MEMMEM=YesPlease" 150 myopts="${myopts} NO_MKDTEMP=YesPlease" 151 myopts="${myopts} NO_STRTOUMAX=YesPlease" 152 myopts="${myopts} NO_STRTOULL=YesPlease" 153 myopts="${myopts} NO_INET_NTOP=YesPlease" 154 myopts="${myopts} NO_INET_PTON=YesPlease" 155 myopts="${myopts} NO_NSEC=YesPlease" 156 myopts="${myopts} NO_MKSTEMPS=YesPlease" 157 fi

interix lacks propper poll() support (poll is there but broken), so some of the things in git have to be disabled for now, or replaced by a select() code (but that'd take precious time of mine to implement (argh)).

any comments on the patch? any chance to get stuff upstream?
(BTW. i know that this is not the most current git release i'm patching
(1.6.6.1), and i'll have to forward port the patch at some point anyway
- i hope i'll get to this soon...)
Thanks in advance!
Cheers, Markus

diff -ru git-1.6.6.1.orig/builtin-upload-archive.c git-1.6.6.1/builtin-upload-archive.c --- git-1.6.6.1.orig/builtin-upload-archive.c 2010-03-09 10:51:28 +0100 +++ git-1.6.6.1/builtin-upload-archive.c 2010-03-09 11:06:45 +0100

@@ -132,8 +132,9 @@
 	packet_flush(1);
 
 	while (1) {
-		struct pollfd pfd[2];
 		int status;
+#ifndef __INTERIX
+		struct pollfd pfd[2];
 
 		pfd[0].fd = fd1[0];
 		pfd[0].events = POLLIN;
@@ -156,6 +157,8 @@
 			if (process_input(pfd[0].fd, 1))
 				continue;
 
+#endif
+
 		if (waitpid(writer, &status, 0) < 0)
 			error_clnt("%s", lostchild);
 		else if (!WIFEXITED(status) || WEXITSTATUS(status) > 0)
diff -ru git-1.6.6.1.orig/daemon.c git-1.6.6.1/daemon.c
--- git-1.6.6.1.orig/daemon.c	2010-03-09 10:51:28 +0100
+++ git-1.6.6.1/daemon.c	2010-03-09 11:00:50 +0100
@@ -14,6 +14,8 @@
 #define NI_MAXSERV 32
 #endif
 
+#ifndef __INTERIX /* not available on interix! */
+
 static int log_syslog;
 static int verbose;
 static int reuseaddr;
@@ -922,8 +924,13 @@
 	return service_loop(socknum, socklist);
 }
 
+#endif /* __INTERIX */
+
 int main(int argc, char **argv)
 {
+#ifdef __INTERIX
+	die("not implemented on interix!");
+#else /* !__INTERIX */
 	int listen_port = 0;
 	char *listen_addr = NULL;
 	int inetd_mode = 0;
@@ -1121,4 +1128,5 @@
 		store_pid(pid_file);
 
 	return serve(listen_addr, listen_port, pass, gid);
+#endif /* __INTERIX */
 }
diff -ru git-1.6.6.1.orig/git-compat-util.h git-1.6.6.1/git-compat-util.h
--- git-1.6.6.1.orig/git-compat-util.h	2010-03-09 10:51:29 +0100
+++ git-1.6.6.1/git-compat-util.h	2010-03-09 10:53:59 +0100
@@ -93,7 +93,9 @@
 #include <utime.h>
 #ifndef __MINGW32__
 #include <sys/wait.h>
+#ifndef __INTERIX
 #include <sys/poll.h>
+#endif
 #include <sys/socket.h>
 #include <sys/ioctl.h>
 #ifndef NO_SYS_SELECT_H
@@ -104,7 +106,11 @@
 #include <arpa/inet.h>
 #include <netdb.h>
 #include <pwd.h>
+#ifndef __INTERIX
 #include <inttypes.h>
+#else
+#include <stdint.h>
+#endif
 #if defined(__CYGWIN__)
 #undef _XOPEN_SOURCE
 #include <grp.h>
diff -ru git-1.6.6.1.orig/upload-pack.c git-1.6.6.1/upload-pack.c
--- git-1.6.6.1.orig/upload-pack.c	2010-03-09 10:51:33 +0100
+++ git-1.6.6.1/upload-pack.c	2010-03-09 10:58:02 +0100
@@ -150,6 +150,7 @@
 
 static void create_pack_file(void)
 {
+#ifndef __INTERIX
 	struct async rev_list;
 	struct child_process pack_objects;
 	int create_full_pack = (nr_our_refs == want_obj.nr && !have_obj.nr);
@@ -328,6 +329,9 @@
  fail:
 	send_client_data(3, abort_msg, sizeof(abort_msg));
 	die("git upload-pack: %s", abort_msg);
+#else /* __INTERIX */
+	die("git upload-pack: not implemented on interix!");
+#endif /* __INTERIX */
 }
 
 static int got_sha1(char *hex, unsigned char *sha1)
Next: Johannes Schindelin
Message 1 of 5 in “git interix support”
  1. Markus DuftMar 9, 2010
  2. Johannes SchindelinMar 9, 2010
  3. Erik Faye-LundMar 9, 2010
  4. Daniel BarkalowMar 10, 2010
  5. Markus DuftMar 11, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.