Re: [PATCH] Improve QNX support in GIT
From: Mike Gorchak <hidden>
Date: 2016-06-15 22:56:14
Subsystem:
kernel build + files below scripts/ (unless maintained elsewhere), the rest · Maintainers:
Nathan Chancellor, Nicolas Schier, Linus Torvalds
Hello,
Here is a small patch with QNX build improvements: 1) Rename tar.h to tar_git.h. Latest QNX versions have system tar.h header according to http://pubs.opengroup.org/onlinepubs/009696699/basedefs/tar.h.html , to avoid inclusion of another tar.h, original header was renamed. 2) Rename fnmatch.h to fnmatch_gnu.h and fnmatch.c to fnmatch_gnu.c to avoid inclusion of system fnmatch.h header in case if -I/usr/include path is specified before -Icompat/fnmatch. Which is common situation. 3) pager.c - default "less" invocation flags were changed for QNX 6,x platform, since QNX has incompatible with GNU coreutils version of "less" utility. 4) config.mak.uname - a) do not override mkdtemp/mkstemps/strcasestr detection, since newer QNX version could contain such functions. Let to configure decide what is present in the system. b) getpagesize() function is existing under QNX, c) QNX has pthread functions in the libc, so do not define NO_PTHREAD macro.
Sorry, in the previous post the patch was not inlined.
diff --git a/Makefile b/Makefile
index ba8e243..f6dd2eb 100644
--- a/Makefile
+++ b/Makefile@@ -726,7 +726,7 @@ LIB_H += streaming.h LIB_H += string-list.h LIB_H += submodule.h LIB_H += tag.h -LIB_H += tar.h +LIB_H += tar_git.h LIB_H += thread-utils.h LIB_H += transport.h LIB_H += tree-walk.h
@@ -1256,12 +1256,12 @@ endif ifdef NO_FNMATCH COMPAT_CFLAGS += -Icompat/fnmatch COMPAT_CFLAGS += -DNO_FNMATCH - COMPAT_OBJS += compat/fnmatch/fnmatch.o + COMPAT_OBJS += compat/fnmatch/fnmatch_gnu.o else ifdef NO_FNMATCH_CASEFOLD COMPAT_CFLAGS += -Icompat/fnmatch COMPAT_CFLAGS += -DNO_FNMATCH_CASEFOLD - COMPAT_OBJS += compat/fnmatch/fnmatch.o + COMPAT_OBJS += compat/fnmatch/fnmatch_gnu.o endif endif ifdef USE_WILDMATCH
diff --git a/archive-tar.c b/archive-tar.c
index 719b629..8e24336 100644
--- a/archive-tar.c
+++ b/archive-tar.c@@ -2,7 +2,7 @@ * Copyright (c) 2005, 2006 Rene Scharfe */ #include "cache.h" -#include "tar.h" +#include "tar_git.h" #include "archive.h" #include "streaming.h" #include "run-command.h"
diff --git a/builtin/tar-tree.c b/builtin/tar-tree.c
index 3f1e701..b0e4551 100644
--- a/builtin/tar-tree.c
+++ b/builtin/tar-tree.c@@ -3,7 +3,7 @@ */ #include "cache.h" #include "commit.h" -#include "tar.h" +#include "tar_git.h" #include "builtin.h" #include "quote.h"
diff --git a/compat/fnmatch/fnmatch.c b/compat/fnmatch/fnmatch_gnu.c
similarity index 99%
rename from compat/fnmatch/fnmatch.c
rename to compat/fnmatch/fnmatch_gnu.c
index 5ef0685..f9a5e5b 100644
--- a/compat/fnmatch/fnmatch.c
+++ b/compat/fnmatch/fnmatch_gnu.c@@ -26,7 +26,7 @@ #endif #include <errno.h> -#include <fnmatch.h> +#include <fnmatch_gnu.h> #include <ctype.h> #if HAVE_STRING_H || defined _LIBC
diff --git a/compat/fnmatch/fnmatch.h b/compat/fnmatch/fnmatch_gnu.h
similarity index 100%
rename from compat/fnmatch/fnmatch.h
rename to compat/fnmatch/fnmatch_gnu.h
diff --git a/config.mak.uname b/config.mak.uname
index 8743a6d..2d42ffe 100644
--- a/config.mak.uname
+++ b/config.mak.uname@@ -527,14 +527,21 @@ ifeq ($(uname_S),QNX) HAVE_STRINGS_H = YesPlease NEEDS_SOCKET = YesPlease NO_FNMATCH_CASEFOLD = YesPlease - NO_GETPAGESIZE = YesPlease NO_ICONV = YesPlease NO_MEMMEM = YesPlease - NO_MKDTEMP = YesPlease - NO_MKSTEMPS = YesPlease NO_NSEC = YesPlease - NO_PTHREADS = YesPlease NO_R_TO_GCC_LINKER = YesPlease - NO_STRCASESTR = YesPlease NO_STRLCPY = YesPlease + # All QNX 6.x versions have pthread functions in libc + # and getpagesize. Leave mkstemps/mkdtemp/strcasestr for + # autodetection. + ifeq ($(shell expr "$(uname_R)" : '6\.[0-9]\.[0-9]'),5) + PTHREAD_LIBS = "" + else + NO_PTHREADS = YesPlease + NO_GETPAGESIZE = YesPlease + NO_STRCASESTR = YesPlease + NO_MKSTEMPS = YesPlease + NO_MKDTEMP = YesPlease + endif endif
diff --git a/git-compat-util.h b/git-compat-util.h
index b7eaaa9..f59d696 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h@@ -113,7 +113,11 @@ #include <time.h> #include <signal.h> #ifndef USE_WILDMATCH +#if defined(NO_FNMATCH) || defined(NO_FNMATCH_CASEFOLD) +#include <fnmatch_gnu.h> +#else #include <fnmatch.h> +#endif /* NO_FNMATCH */ #endif #include <assert.h> #include <regex.h>
diff --git a/pager.c b/pager.c
index c1ecf65..bed627a 100644
--- a/pager.c
+++ b/pager.c@@ -81,7 +81,11 @@ void setup_pager(void) pager_process.argv = pager_argv; pager_process.in = -1; if (!getenv("LESS")) { + #if !defined(__QNXNTO__) static const char *env[] = { "LESS=FRSX", NULL }; + #else + static const char *env[] = { "LESS=rS", NULL }; + #endif /* __QNXNTO__ */ pager_process.env = env; } if (start_command(&pager_process))
diff --git a/tar.h b/tar_git.h
similarity index 100%
rename from tar.h
rename to tar_git.h