RE: Porting git to HP NonStop
From: Joachim Schmitz <hidden>
Date: 2016-06-15 22:54:28
From: Joachim Schmitz [mailto:jojo@schmitz-digital.de] Sent: Friday, August 10, 2012 7:33 PM To: 'Shawn Pearce' Cc: 'git@vger.kernel.org'; 'rsbecker@nexbridge.com' Subject: RE: Porting git to HP NonStopquoted
From: Shawn Pearce [mailto:spearce@spearce.org] Sent: Friday, August 10, 2012 6:28 PM To: Joachim Schmitz Cc: git@vger.kernel.org; rsbecker@nexbridge.com Subject: Re: Porting git to HP NonStop On Fri, Aug 10, 2012 at 8:04 AM, Joachim Schmitz [off-list ref] wrote:
<snip>
quoted
quoted
quoted
- HP NonStop doesn't have stat.st_blocks, this is used inbuiltin/count-objects.cquoted
around line 45, not sure yet how to fix that.IIRC the block count is only used to give the user some notion of how much disk was wasted by the repository. You could hack a macro that redefines this as st_size.OK, thanks, will try that.
Setting "NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease" in Makefile helps, no need for further hacking ;-).
quoted
quoted
quoted
- HP NonStop doesn't have stat.st_?time.nsec, there are several placeswhat anquoted
"#ifdef USE_NSEC" is missing, I can provide a diff if needed (offending files: builtin/fetch-pack.c and read-cache.c).I think this would be appreciated by anyone else that has a similar problem where the platform lacks nsec.Will do.
OK, here we go: /usr/local/bin/diff -EBbu ./builtin/fetch-pack.c.orig ./builtin/fetch-pack.c
--- ./builtin/fetch-pack.c.orig 2012-07-30 15:50:38 -0500
+++ ./builtin/fetch-pack.c 2012-08-10 01:50:28 -0500@@ -1096,7 +1096,9 @@ int fd; mtime.sec = st.st_mtime; +#ifdef USE_NSEC mtime.nsec = ST_MTIME_NSEC(st); +#endif if (stat(shallow, &st)) { if (mtime.sec) die("shallow file was removed during
fetch"); /usr/local/bin/diff -EBbu ./read-cache.c.orig ./read-cache.c
--- ./read-cache.c.orig 2012-07-30 15:50:38 -0500
+++ ./read-cache.c 2012-08-09 10:57:57 -0500@@ -72,8 +72,10 @@ { ce->ce_ctime.sec = (unsigned int)st->st_ctime; ce->ce_mtime.sec = (unsigned int)st->st_mtime; +#ifdef USE_NSEC ce->ce_ctime.nsec = ST_CTIME_NSEC(*st); ce->ce_mtime.nsec = ST_MTIME_NSEC(*st); +#endif ce->ce_dev = st->st_dev; ce->ce_ino = st->st_ino; ce->ce_uid = st->st_uid;
@@ -1465,7 +1467,9 @@ } strbuf_release(&previous_name_buf); istate->timestamp.sec = st.st_mtime; +#ifdef USE_NSEC istate->timestamp.nsec = ST_MTIME_NSEC(st); +#endif while (src_offset <= mmap_size - 20 - 8) { /* After an array of active_nr index entries,
@@ -1821,7 +1825,9 @@ if (ce_flush(&c, newfd) || fstat(newfd, &st)) return -1; istate->timestamp.sec = (unsigned int)st.st_mtime; +#ifdef USE_NSEC istate->timestamp.nsec = ST_MTIME_NSEC(st); +#endif return 0; }
Hope this helps? Could you also consider adding the following: /usr/local/bin/diff -EBbu ./git-compat-util.h.orig ./git-compat-util.h
--- ./git-compat-util.h.orig 2012-07-30 15:50:38 -0500
+++ ./git-compat-util.h 2012-08-10 09:59:56 -0500@@ -74,7 +74,8 @@ # define _XOPEN_SOURCE 500 # endif #elif !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__USLC__) &&
\ - !defined(_M_UNIX) && !defined(__sgi) && !defined(__DragonFly__) + !defined(_M_UNIX) && !defined(__sgi) && !defined(__DragonFly__) && \ + !defined(__TANDEM) #define _XOPEN_SOURCE 600 /* glibc2 and AIX 5.3L need 500, OpenBSD needs 600 for S_ISLNK() */ #define _XOPEN_SOURCE_EXTENDED 1 /* AIX 5.3L needs this */ #endif
@@ -98,6 +99,11 @@ #include <stdlib.h> #include <stdarg.h> #include <string.h> +#ifdef __TANDEM +# include <strings.h> /* for strcasecmp() */ + typedef long int intptr_t; + typedef unsigned long int uintptr_t; +#endif #include <errno.h> #include <limits.h> #include <sys/param.h>
Bye, Jojo