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

4 messages from 2012-12-14 to 2012-12-15. Participants: David Michael, Junio C Hamano.
Thread: https://gitlist.dev/t/32340

## David Michael, 2012-12-14 19:56

Subject: [PATCH 1/4] Support builds when sys/param.h is missing
Message-ID: <CAEvUa7mHHy1=aOMfg4hNnDzod4zSnNHZN87isgf6Yxh5cRAf0Q@mail.gmail.com>
URL: https://gitlist.dev/e/CAEvUa7mHHy1%3DaOMfg4hNnDzod4zSnNHZN87isgf6Yxh5cRAf0Q%40mail.gmail.com

```
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(+)

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, 2012-12-14 23:41

Subject: Re: [PATCH 1/4] Support builds when sys/param.h is missing
Message-ID: <7vpq2curpa.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vpq2curpa.fsf%40alter.siamese.dyndns.org
In-Reply-To: <CAEvUa7mHHy1=aOMfg4hNnDzod4zSnNHZN87isgf6Yxh5cRAf0Q@mail.gmail.com>

```
David Michael <fedora.dm0@gmail.com> writes:

> 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, 2012-12-15 02:46

Subject: Re: [PATCH 1/4] Support builds when sys/param.h is missing
Message-ID: <CAEvUa7kZE-p0oVV+JpXY4y-=ieB-=THTrO4hxzZsFYhLvgvbFw@mail.gmail.com>
URL: https://gitlist.dev/e/CAEvUa7kZE-p0oVV%2BJpXY4y-%3DieB-%3DTHTrO4hxzZsFYhLvgvbFw%40mail.gmail.com
In-Reply-To: <7vpq2curpa.fsf@alter.siamese.dyndns.org>

```
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, 2012-12-15 17:53

Subject: Re: [PATCH 1/4] Support builds when sys/param.h is missing
Message-ID: <7va9tfurq1.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7va9tfurq1.fsf%40alter.siamese.dyndns.org
In-Reply-To: <CAEvUa7kZE-p0oVV+JpXY4y-=ieB-=THTrO4hxzZsFYhLvgvbFw@mail.gmail.com>

```
David Michael <fedora.dm0@gmail.com> writes:

> 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.

```
