threads / patch / 32340

patch, 4 partsSupport builds when sys/param.h is missing

Subject: [PATCH 1/4] Support builds when sys/param.h is missing

## tl;dr

4 messages between Dec 14, 2012 and Dec 15, 2012. Diffs are folded; open one to read it.

replies: 3people: 2as markdown or json

David Michael· Dec 14, 2012, 19:56 UTC · lore

An option is added to the Makefile to skip the inclusion of sys/param.h. The only known platform with this condition thus far is the z/OS UNIX System Services environment.

Signed-off-by: David Michael <fedora.dm0@gmail.com>
---
 Makefile          | 5 +++++
 configure.ac      | 6 ++++++
 git-compat-util.h | 2 ++
 3 files changed, 13 insertions(+)
Show changes to 3 files +13 −1

Makefile, configure.ac, git-compat-util.h

diff --git a/Makefile b/Makefile
index 736ecd4..8c3a0dd 100644
--- a/Makefile
+++ b/Makefile
@@ -165,6 +165,8 @@ all::
 # Define NO_POLL if you do not have or don't want to use poll().
 # This also implies NO_SYS_POLL_H.
 #
+# Define NO_SYS_PARAM_H if you don't have sys/param.h.
+#
 # Define NO_PTHREADS if you do not have or do not want to use Pthreads.
 #
 # Define NO_PREAD if you have a problem with pread() system call (e.g.
@@ -1748,6 +1750,9 @@ endif
 ifdef NO_SYS_POLL_H
     BASIC_CFLAGS += -DNO_SYS_POLL_H
 endif
+ifdef NO_SYS_PARAM_H
+    BASIC_CFLAGS += -DNO_SYS_PARAM_H
+endif
 ifdef NO_INTTYPES_H
     BASIC_CFLAGS += -DNO_INTTYPES_H
 endif
diff --git a/configure.ac b/configure.ac
index ad215cc..317bfc6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -699,6 +699,12 @@ AC_CHECK_HEADER([sys/poll.h],
 [NO_SYS_POLL_H=UnfortunatelyYes])
 GIT_CONF_SUBST([NO_SYS_POLL_H])
 #
+# Define NO_SYS_PARAM_H if you don't have sys/param.h
+AC_CHECK_HEADER([sys/param.h],
+[NO_SYS_PARAM_H=],
+[NO_SYS_PARAM_H=UnfortunatelyYes])
+GIT_CONF_SUBST([NO_SYS_PARAM_H])
+#
 # Define NO_INTTYPES_H if you don't have inttypes.h
 AC_CHECK_HEADER([inttypes.h],
 [NO_INTTYPES_H=],
diff --git a/git-compat-util.h b/git-compat-util.h
index 2e79b8a..ace1549 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -104,7 +104,9 @@
 #endif
 #include <errno.h>
 #include <limits.h>
+#ifndef NO_SYS_PARAM_H
 #include <sys/param.h>
+#endif
 #include <sys/types.h>
 #include <dirent.h>
 #include <sys/time.h>
--
1.7.11.7
Junio C Hamano· Dec 14, 2012, 23:41 UTC · re: David Michael · lore

Re: [PATCH 1/4] Support builds when sys/param.h is missing

David Michael <fedora.dm0@gmail.com> writes:
Show 6 quoted lines
> An option is added to the Makefile to skip the inclusion of sys/param.h.
> The only known platform with this condition thus far is the z/OS UNIX System
> Services environment.
>
> Signed-off-by: David Michael <fedora.dm0@gmail.com>
> ---

Hmm, makes me wonder if we can remove that inclusion everywhere instead. What definitions are we getting from it?

8695c8b (Add "show-files" command to show the list of managed (or non-managed) files., 2005-04-11) added it to show-files, and without the include the compilation failed due to lack of MAXPATHLEN, but you shouldn't be using that in the first place (we tend to either use PATH_MAX or lift the upper limit using strbuf these days.).

65bb491 (Add the ability to prefix something to the pathname to "checkout-cache.c", 2005-04-21) does the same to checkout-cache.c to grab MAXPATHLEN.

bb233d6 (Add support for a "GIT_INDEX_FILE" environment variable., 2005-04-21) moves these two inclusions to cache.h; removing it bteaks compilation due to lack of MAXPATHLEN, ULONG_MAX, etc.,

I didn't check what else sys/parms.h was accicdentally slurping into the compilation, but ULONG_MAX is what we explicitly ask for by including either inttypes or stdint these days.

Later 4050c0d (Clean up compatibility definitions., 2005-12-05) further consolidated the headers by moving inclusion around. This commit did not audit unused headers.

I have this suspicion that nobody would notice if we simply stopped including the header.

David Michael· Dec 15, 2012, 02:46 UTC · re: Junio C Hamano · lore

Re: [PATCH 1/4] Support builds when sys/param.h is missing

Hi,
On Fri, Dec 14, 2012 at 6:41 PM, Junio C Hamano <gitster@pobox.com> wrote:
> I have this suspicion that nobody would notice if we simply stopped
> including the header.

While I'm not aware of any subtleties it could be causing on other platforms, it does seem fine to drop sys/param.h on my test GNU/Linux systems.

I can resend the series and just remove the include, if preferred.
Thanks.
David
Junio C Hamano· Dec 15, 2012, 17:53 UTC · re: David Michael · lore

Re: [PATCH 1/4] Support builds when sys/param.h is missing

David Michael <fedora.dm0@gmail.com> writes:
Show 9 quoted lines
> On Fri, Dec 14, 2012 at 6:41 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> I have this suspicion that nobody would notice if we simply stopped
>> including the header.
>
> While I'm not aware of any subtleties it could be causing on other
> platforms, it does seem fine to drop sys/param.h on my test GNU/Linux
> systems.
>
> I can resend the series and just remove the include, if preferred.

I am sure the patch as posted is much safer, but I was hoping that folks on non-Linux platforms may say "I tried to compile with the include removed, and I get identical binaries from before". Until that happens, I would prefer queuing your patch as-is.

Thanks.

← back to recent threads