> From: Junio C Hamano [mailto:[email protected]]
> Sent: Tuesday, August 14, 2012 4:44 PM
> To: Joachim Schmitz
> Subject: Re: git on HP NonStop
>
> "Joachim Schmitz" <[email protected]> writes:
>
> > Interesting, I never mentioned Tandem did I, But still you recognized
> > HP NonStop as that.
>
> No, *you* did in your patch "#ifdef".
Ah, I see.
> > Well, I do care about that platform, but if you don't, there's not
> > much point in me trying to get Tandem specific patches applied, is it?
>
> As long as the change is isolated (i.e. compilation without "#define
TANDEM"
__TANDEM actually
> for other people will produce byte-for-byte identical result as before),
and
> cleanly made (i.e. the resulting source code is not littered with "#ifdef
> TANDEM" in many places), I do not think there is a reason not to have such
a
> patchset.
It isn't in many places, only 2 places in git-compat-util.h so far:
/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-12 11:26:46 -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 int intptr_t; /* not "int *" ?!? */
+ typedef unsigned int uintptr_t; /* not "unsigned int *" ?!? */
+#endif
#include <errno.h>
#include <limits.h>
#include <sys/param.h>
Too much? The 2nd part is not necessary NonStop specific, any idea for a
better way?
There there's Makefile:
/usr/local/bin/diff -EBbu ./Makefile.orig ./Makefile
--- ./Makefile.orig 2012-07-30 15:50:38 -0500
+++ ./Makefile 2012-08-14 06:07:16 -0500
@@ -1297,6 +1297,45 @@
NO_CURL =
NO_EXPAT =
endif
+ifeq ($(uname_S),NONSTOP_KERNEL)
+ CC = cc -c99 # needs some C99 features, "inline" is just one of them
+ CFLAGS= -g -O
+ prefix = /usr/local
+
+ # as detected by './configure'
+ #NO_CURL = YesPlease # missdetected, disabled, see below
+ NEEDS_SSL_WITH_CURL = YesPlease # added manually, see above
+ HAVE_LIBCHARSET_H=YesPlease
+ NEEDS_LIBICONV = YesPlease # needs libiconv first, changed further
down
+ NO_SYS_SELECT_H=UnfortunatelyYes
+ NO_D_TYPE_IN_DIRENT = YesPlease
+ NO_HSTRERROR=YesPlease
+ NO_STRCASESTR=YesPlease
+ NO_FNMATCH_CASEFOLD = YesPlease
+ NO_MEMMEM = YesPlease
+ NO_STRLCPY = YesPlease
+ NO_SETENV = YesPlease
+ NO_UNSETENV = YesPlease
+ NO_MKDTEMP = YesPlease
+ NO_MKSTEMPS = YesPlease
+ OLD_ICONV=UnfortunatelyYes # currently libiconv-1.9.1
+ NO_REGEX=YesPlease # Why? ToDo?
+ NO_PTHREADS=UnfortunatelyYes # ToDo? Using PUT, maybe?
+
+ # our's are in ${prefix}/bin
+ PERL_PATH = ${prefix}/bin/perl
+ PYTHON_PATH = ${prefix}/bin/python
+
+ # not detected (nor checked for) by './configure'
+ COMPAT_CFLAGS += -DSA_RESTART=0 # we don't have SA_RESTART on
NonStop
+ COMPAT_CFLAGS += -DHAVE_STRING_H=1 # needed in
compat/fnmatch/fnmatch.c
+ NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease # we don't have that on
NonStop
+ NO_NSEC = YesPlease # we don't have that on NonStop
+ NO_PREAD = YesPlease # we could use floss_pread though?
+ NO_MMAP = YesPlease # we could use floss_mmap though?
+ # newly implemented further down
+ NO_POLL = YesPlease # we could use floss_poll though?
+endif
ifneq (,$(findstring MINGW,$(uname_S)))
pathsep = ;
NO_PREAD = YesPlease
@@ -1526,6 +1565,11 @@
LIB_4_CRYPTO = $(OPENSSL_LINK) -lcrypto
endif
endif
+ifndef NO_GETTEXT
+ifndef LIBC_CONTAINS_LIBINTL
+ EXTLIBS += -lintl
+endif
+endif
ifdef NEEDS_LIBICONV
ifdef ICONVDIR
BASIC_CFLAGS += -I$(ICONVDIR)/include
@@ -1538,11 +1582,6 @@
ifdef NEEDS_LIBGEN
EXTLIBS += -lgen
Endif
-ifndef NO_GETTEXT
-ifndef LIBC_CONTAINS_LIBINTL
- EXTLIBS += -lintl
-endif
-endif
ifdef NEEDS_SOCKET
EXTLIBS += -lsocket
endif
@@ -1591,6 +1630,11 @@
BASIC_CFLAGS += -DNO_GETTEXT
USE_GETTEXT_SCHEME ?= fallthrough
endif
+ifdef NO_POLL
+ NO_SYS_POLL_H = YesPlease
+ COMPAT_CFLAGS += -DNO_POLL -Icompat/win32 # so it finds poll.h
+ COMPAT_OBJS += compat/win32/poll.o
+endif
ifdef NO_STRCASESTR
COMPAT_CFLAGS += -DNO_STRCASESTR
COMPAT_OBJS += compat/strcasestr.o
How das that look to you?
> >> Finally, I would prefer to see any message that is addressed to me as
> >> the project maintainer to be Cc'ed to the list. I feel 80% of my
> >> time writing
> > this
> >> message wasted, as the contents of it would have helped not just you
> >> but 4 other people who want to get their toes in the development
> >> community, but you robbed them the chance of seeing it.
> >
> > Sorry for having wasted your time, but you could just as easily have
> > CCed the list on your reply, couldn't you?
>
> No, responding to a private message in public without permission goes
against
> generally accepted netiquette (I am OK if you respond to this or to the
previous
> message from me in public).
OK, understood and accepted. Herewith you have my permission ;-)
> > The use of getrlimit(RLIMIT_NOFILE, ...) vs. sysconf(_SC_OPEN_MAX) in
> > sha1_file.c, I believe the later to be more portable, also it is used
> > in other places already (namely compat/win32/poll.c)
>
> Careful. Getting rid of the use of getrlimit() from shared code by
introducing
> our own abstraction to be implemented in compat/* for each platform is
fine,
> but that does not mean sysconf() is acceptable by all platforms (your
finding
> use of sysconf() in compat/win32 merely means Win is OK with it).
Well. NonStop is OK with it too.
And I've brackets with #ifdef _SC_OPEN_MAX, just like in compat/win23:
/usr/local/bin/diff -EBbu ./sha1_file.c.orig ./sha1_file.c
--- ./sha1_file.c.orig 2012-07-30 15:50:38 -0500
+++ ./sha1_file.c 2012-08-14 02:42:03 -0500
@@ -747,6 +747,9 @@
return error("packfile %s index unavailable", p->pack_name);
if (!pack_max_fds) {
+#ifdef _SC_OPEN_MAX
+ unsigned int max_fds = sysconf(_SC_OPEN_MAX);
+#else
struct rlimit lim;
unsigned int max_fds;
@@ -754,6 +757,7 @@
die_errno("cannot get RLIMIT_NOFILE");
max_fds = lim.rlim_cur;
+#endif
/* Save 3 for stdin/stdout/stderr, 22 for work */
if (25 < max_fds)
Can it get any better?
> > The use of curl_easy_strerror() in help.c without checking for a
> > proper curl version (>=7.12.0)
>
> I do not recall the minimum version of curl we support offhand, but if
there is a
> clean workaround that would be good.
Well, I really have none but to disable that part:
/usr/local/bin/diff -EBbu ./http.c.orig ./http.c
--- ./http.c.orig 2012-07-30 15:50:38 -0500
+++ ./http.c 2012-08-14 02:49:43 -0500
@@ -805,10 +805,12 @@
ret = HTTP_REAUTH;
}
} else {
+#if LIBCURL_VERSION_NUM >= 0x070c00 /* no curl_easy_strerror() before that
*/
if (!curl_errorstr[0])
strlcpy(curl_errorstr,
curl_easy_strerror(results.curl_result),
sizeof(curl_errorstr));
+#endif
ret = HTTP_ERROR;
}
} else {
It certainly is a workaround, whether it is clean or clean enough for now is
to you to decide ;-)
Bye, Jojo
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html