Re: [PATCH 2/3] configure.ac,trace.c: check for CLOCK_MONOTONIC

2014-12-22 Thread Reuben Hawkins
On Sun, Dec 21, 2014 at 8:12 PM, brian m. carlson
sand...@crustytoothpaste.net wrote:
 On Sun, Dec 21, 2014 at 10:53:35AM -0800, Reuben Hawkins wrote:
 CLOCK_MONOTONIC isn't available on RHEL3, but there are still RHEL3
 systems being used in production.  This change makes compiling git
 less tedious on older platforms.

 While I'm not opposed to this change, I expect that you'll find there's
 lots of subtle breakage when trying to compile (and run the testsuite
 for) git on RHEL 3.  I've spoken up before to prevent breakage on
 RHEL/CentOS 5 (since $DAYJOB still supports it), but I'm not sure
 anyone's looking out for something as old as RHEL 3.  I expect you'll
 probably have some pain points with perl and curl, among others.

Yes, there are pain points with perl and curl.  Those I've disable
with other compile options when building on RHEL3, but reducing the
number of options I have to set manually and increasing the number of
automatic checks with configure is helpful.   Sometime over the next
few days I'll submit a v2 of the patches with Eric's comments taken
into account.

 --
 brian m. carlson / brian with sandals: Houston, Texas, US
 +1 832 623 2791 | http://www.crustytoothpaste.net/~bmc | My opinion only
 OpenPGP: RSA v4 4096b: 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/3] configure.ac,trace.c: check for CLOCK_MONOTONIC

2014-12-21 Thread Reuben Hawkins
CLOCK_MONOTONIC isn't available on RHEL3, but there are still RHEL3
systems being used in production.  This change makes compiling git
less tedious on older platforms.
---
 configure.ac | 26 ++
 trace.c  |  2 +-
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 3cfdd51..3900044 100644
--- a/configure.ac
+++ b/configure.ac
@@ -736,8 +736,10 @@ GIT_UNSTASH_FLAGS($ICONVDIR)
 
 GIT_CONF_SUBST([OLD_ICONV])
 
+
 ## Checks for typedefs, structures, and compiler characteristics.
 AC_MSG_NOTICE([CHECKS for typedefs, structures, and compiler characteristics])
+
 #
 TYPE_SOCKLEN_T
 case $ac_cv_type_socklen_t in
@@ -930,6 +932,30 @@ AC_CHECK_LIB([iconv], [locale_charset],
  [CHARSET_LIB=-lcharset])])
 GIT_CONF_SUBST([CHARSET_LIB])
 #
+# Define NO_CLOCK_GETTIME if you don't have clock_gettime.
+GIT_CHECK_FUNC(clock_gettime,
+[HAVE_CLOCK_GETTIME=Yes],
+[HAVE_CLOCK_GETTIME=])
+GIT_CONF_SUBST([HAVE_CLOCK_GETTIME])
+
+AC_DEFUN([CLOCK_MONOTONIC_SRC], [
+AC_LANG_PROGRAM([[
+#include time.h
+clockid_t id = CLOCK_MONOTONIC;
+]], [])])
+
+#
+# Define NO_CLOCK_MONOTONIC on really old systems that are still in production
+# if you need GIT to compile but can't update the machine otherwise.
+AC_MSG_CHECKING([for CLOCK_MONOTONIC])
+AC_COMPILE_IFELSE([CLOCK_MONOTONIC_SRC],
+   [AC_MSG_RESULT([yes])
+   HAVE_CLOCK_MONOTONIC=Yes],
+   [AC_MSG_RESULT([no])
+   HAVE_CLOCK_MONOTONIC=])
+
+GIT_CONF_SUBST([HAVE_CLOCK_MONOTONIC])
+#
 # Define NO_SETITIMER if you don't have setitimer.
 GIT_CHECK_FUNC(setitimer,
 [NO_SETITIMER=],
diff --git a/trace.c b/trace.c
index 4778608..bfbd48f 100644
--- a/trace.c
+++ b/trace.c
@@ -324,7 +324,7 @@ int trace_want(struct trace_key *key)
return !!get_trace_fd(key);
 }
 
-#ifdef HAVE_CLOCK_GETTIME
+#if defined(HAVE_CLOCK_GETTIME)  defined(HAVE_CLOCK_MONOTONIC)
 
 static inline uint64_t highres_nanos(void)
 {
-- 
2.2.0.GIT

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] configure.ac,trace.c: check for CLOCK_MONOTONIC

2014-12-21 Thread Eric Sunshine
On Sun, Dec 21, 2014 at 1:53 PM, Reuben Hawkins reuben...@gmail.com wrote:
 CLOCK_MONOTONIC isn't available on RHEL3, but there are still RHEL3
 systems being used in production.  This change makes compiling git
 less tedious on older platforms.

Missing sign-off.

 ---
 diff --git a/configure.ac b/configure.ac
 index 3cfdd51..3900044 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -736,8 +736,10 @@ GIT_UNSTASH_FLAGS($ICONVDIR)

  GIT_CONF_SUBST([OLD_ICONV])

 +
  ## Checks for typedefs, structures, and compiler characteristics.
  AC_MSG_NOTICE([CHECKS for typedefs, structures, and compiler 
 characteristics])
 +

Sneaking in a couple whitespace changes unrelated the patch's stated
purpose. Such cleanup should be done typically as a separate
preparatory patch (though they probably aren't warranted in this
case).

  #
  TYPE_SOCKLEN_T
  case $ac_cv_type_socklen_t in
 @@ -930,6 +932,30 @@ AC_CHECK_LIB([iconv], [locale_charset],
   [CHARSET_LIB=-lcharset])])
  GIT_CONF_SUBST([CHARSET_LIB])
  #
 +# Define NO_CLOCK_GETTIME if you don't have clock_gettime.

The comment talks about NO_CLOCK_GETTIME, however, the code names it
HAVE_CLOCK_GETTIME.

 +GIT_CHECK_FUNC(clock_gettime,
 +[HAVE_CLOCK_GETTIME=Yes],

For consistency with other build values: s/Yes/YesPlease/

 +[HAVE_CLOCK_GETTIME=])
 +GIT_CONF_SUBST([HAVE_CLOCK_GETTIME])
 +
 +AC_DEFUN([CLOCK_MONOTONIC_SRC], [
 +AC_LANG_PROGRAM([[
 +#include time.h
 +clockid_t id = CLOCK_MONOTONIC;
 +]], [])])
 +
 +#
 +# Define NO_CLOCK_MONOTONIC on really old systems that are still in 
 production
 +# if you need GIT to compile but can't update the machine otherwise.

The comment talks about NO_CLOCK_MONOTONIC, however, the code names it
HAVE_CLOCK_MONOTONIC.

The old systems .. need GIT to compile ... can't update commentary
is unnecessary. That's pretty well implied by the mere use of
Autoconf. It would be sufficient to say Define ... if you don't have
CLOCK_MONOTONIC.

 +AC_MSG_CHECKING([for CLOCK_MONOTONIC])
 +AC_COMPILE_IFELSE([CLOCK_MONOTONIC_SRC],
 +   [AC_MSG_RESULT([yes])
 +   HAVE_CLOCK_MONOTONIC=Yes],

Consistency: s/Yes/YesPlease/

 +   [AC_MSG_RESULT([no])
 +   HAVE_CLOCK_MONOTONIC=])
 +
 +GIT_CONF_SUBST([HAVE_CLOCK_MONOTONIC])

Be aware that this does not actually #define HAVE_CLOCK_MONOTONIC
anywhere. It only sets a Makefile variable in config.mak.autogen.
(Consequently, this patch it actually breaks support for this feature
in trace.c for people who build without running the configure script.)
You need to do extra work to get the #define.

In particular, add a comment to Makefile describing the
HAVE_CLOCK_MONOTONIC setting. (Placing it just below the existing
comment for HAVE_CLOCK_GETTIME would make loads of sense.)

Next, add code to the Makefile to actually #define
HAVE_CLOCK_MONOTONIC. Something like this (alongside the existing
HAVE_CLOCK_GETTIME code):

ifdef HAVE_CLOCK_MONOTONIC
BASIC_CFLAGS += -DHAVE_CLOCK_MONOTONIC
endif

Finally, update config.make.uname to set
HAVE_CLOCK_MONOTONIC=YesPlease on platforms which are likely to have
it (for people who don't run the configure script). At the very least,
it should be enabled by default for Linux.

 +#
  # Define NO_SETITIMER if you don't have setitimer.
  GIT_CHECK_FUNC(setitimer,
  [NO_SETITIMER=],
 diff --git a/trace.c b/trace.c
 index 4778608..bfbd48f 100644
 --- a/trace.c
 +++ b/trace.c
 @@ -324,7 +324,7 @@ int trace_want(struct trace_key *key)
 return !!get_trace_fd(key);
  }

 -#ifdef HAVE_CLOCK_GETTIME
 +#if defined(HAVE_CLOCK_GETTIME)  defined(HAVE_CLOCK_MONOTONIC)

  static inline uint64_t highres_nanos(void)
  {
 --
 2.2.0.GIT
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] configure.ac,trace.c: check for CLOCK_MONOTONIC

2014-12-21 Thread brian m. carlson
On Sun, Dec 21, 2014 at 10:53:35AM -0800, Reuben Hawkins wrote:
 CLOCK_MONOTONIC isn't available on RHEL3, but there are still RHEL3
 systems being used in production.  This change makes compiling git
 less tedious on older platforms.

While I'm not opposed to this change, I expect that you'll find there's
lots of subtle breakage when trying to compile (and run the testsuite
for) git on RHEL 3.  I've spoken up before to prevent breakage on
RHEL/CentOS 5 (since $DAYJOB still supports it), but I'm not sure
anyone's looking out for something as old as RHEL 3.  I expect you'll
probably have some pain points with perl and curl, among others.
-- 
brian m. carlson / brian with sandals: Houston, Texas, US
+1 832 623 2791 | http://www.crustytoothpaste.net/~bmc | My opinion only
OpenPGP: RSA v4 4096b: 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187


signature.asc
Description: Digital signature