Re: [PATCH] Include xmlparse.h instead of expat.h on QNX

2013-02-11 Thread Jeff King
On Mon, Feb 11, 2013 at 12:59:55PM -0800, Matt Kraai wrote:

 From: Matt Kraai matt.kr...@amo.abbott.com
 
 QNX 6.3.2 through 6.5.0 include Expat 1.1, which provides xmlparse.h
 instead of expat.h, so include the former on QNX systems.

So it is not just QNX, but rather older versions of expat?

 diff --git a/http-push.c b/http-push.c
 index 9923441..55c575e 100644
 --- a/http-push.c
 +++ b/http-push.c
 @@ -11,7 +11,11 @@
  #include list-objects.h
  #include sigchain.h
  
 +#ifndef __QNX__
  #include expat.h
 +#else
 +#include xmlparse.h
 +#endif

If that is the case, should this #ifdef look for EXPAT_NEEDS_XMLPARSE_H,
and that macro triggered externally? Either in the QNX section of the
Makefile, or potentially by an autoconf macro?

-Peff
--
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] Include xmlparse.h instead of expat.h on QNX

2013-02-11 Thread Matt Kraai
On Mon, Feb 11, 2013 at 04:06:21PM -0500, Jeff King wrote:
 On Mon, Feb 11, 2013 at 12:59:55PM -0800, Matt Kraai wrote:
 
  From: Matt Kraai matt.kr...@amo.abbott.com
  
  QNX 6.3.2 through 6.5.0 include Expat 1.1, which provides xmlparse.h
  instead of expat.h, so include the former on QNX systems.
 
 So it is not just QNX, but rather older versions of expat?

Yes, Expat 1.1 and 1.2 provide xmlparse.h, whereas 1.95.0 and later
provide expat.h.

  diff --git a/http-push.c b/http-push.c
  index 9923441..55c575e 100644
  --- a/http-push.c
  +++ b/http-push.c
  @@ -11,7 +11,11 @@
   #include list-objects.h
   #include sigchain.h
   
  +#ifndef __QNX__
   #include expat.h
  +#else
  +#include xmlparse.h
  +#endif
 
 If that is the case, should this #ifdef look for EXPAT_NEEDS_XMLPARSE_H,
 and that macro triggered externally? Either in the QNX section of the
 Makefile, or potentially by an autoconf macro?

I'll submit another patch shortly that does so, defining the variable
in the QNX section of config.mak.uname.
--
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] Include xmlparse.h instead of expat.h on QNX

2013-02-11 Thread Junio C Hamano
Matt Kraai kr...@ftbfs.org writes:

 From: Matt Kraai matt.kr...@amo.abbott.com

 QNX 6.3.2 through 6.5.0 include Expat 1.1, which provides xmlparse.h
 instead of expat.h, so include the former on QNX systems.

 Signed-off-by: Matt Kraai matt.kr...@amo.abbott.com
 ---

Two points and a possibly irrelevant half:

 - If a fix is platform specific (i.e. tempts to use #ifdef
   PLATFORM_NAME), we would prefer to see a patch that that is
   isolated to platform-specific compatibility layer, which would
   involve:

   . add compat/qnx/expat.h file that #include xmlparse.h
   . to Makefile, add -Icompat/qnx/ to CFLAGS

 - Is this really a fix for a problem specific to QNX?  It looks
   like this is for any platform with expat 1, no?

 - What happens to people with QNX older than 6.3.2 or newer than
   6.5.0 (assuming they will eventually start shipping expat 2) with
   your patch?

Assuming that this change is about building with expat1, it would
probably be better to do something like this instead, I would think.


 Makefile | 5 +
 config.mak.uname | 1 +
 http-push.c  | 4 
 3 files changed, 10 insertions(+)

diff --git a/Makefile b/Makefile
index 5a2e02d..57032cc 100644
--- a/Makefile
+++ b/Makefile
@@ -43,6 +43,8 @@ all::
 # Define EXPATDIR=/foo/bar if your expat header and library files are in
 # /foo/bar/include and /foo/bar/lib directories.
 #
+# Define EXPAT_VERSION=1 if you are trying to build with expat 1.x (e.g. QNX).
+#
 # Define NO_GETTEXT if you don't want Git output to be translated.
 # A translated Git requires GNU libintl or another gettext implementation,
 # plus libintl-perl at runtime.
@@ -1089,6 +1091,9 @@ else
else
EXPAT_LIBEXPAT = -lexpat
endif
+   ifdef EXPAT_VERSION
+   BASIC_CFLAGS += -DEXPAT_VERSION=$(EXPAT_VERSION)
+   endif
endif
 endif
 
diff --git a/config.mak.uname b/config.mak.uname
index bea34f0..281d834 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -536,4 +536,5 @@ ifeq ($(uname_S),QNX)
NO_R_TO_GCC_LINKER = YesPlease
NO_STRCASESTR = YesPlease
NO_STRLCPY = YesPlease
+   EXPAT_VERSION = 1
 endif
diff --git a/http-push.c b/http-push.c
index 3e72e84..2fdb0cd 100644
--- a/http-push.c
+++ b/http-push.c
@@ -11,7 +11,11 @@
 #include list-objects.h
 #include sigchain.h
 
+#if EXPAT_VERSION == 1
+#include xmlparse.h
+#else
 #include expat.h
+#endif
 
 static const char http_push_usage[] =
 git http-push [--all] [--dry-run] [--force] [--verbose] remote 
[head...]\n;
--
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] Include xmlparse.h instead of expat.h on QNX

2013-02-11 Thread Junio C Hamano
Jeff King p...@peff.net writes:

 On Mon, Feb 11, 2013 at 12:59:55PM -0800, Matt Kraai wrote:

 From: Matt Kraai matt.kr...@amo.abbott.com
 
 QNX 6.3.2 through 6.5.0 include Expat 1.1, which provides xmlparse.h
 instead of expat.h, so include the former on QNX systems.

 So it is not just QNX, but rather older versions of expat?

 diff --git a/http-push.c b/http-push.c
 index 9923441..55c575e 100644
 --- a/http-push.c
 +++ b/http-push.c
 @@ -11,7 +11,11 @@
  #include list-objects.h
  #include sigchain.h
  
 +#ifndef __QNX__
  #include expat.h
 +#else
 +#include xmlparse.h
 +#endif

 If that is the case, should this #ifdef look for EXPAT_NEEDS_XMLPARSE_H,
 and that macro triggered externally?

Heh, our mails crossed.  Another thing neither of us mentioned is
how compatible the subset of libexpat our codebase uses to what was
offered by the older versions of expat.  I would not be surprised if
nobody has tried running the resulting binary linked with expat 1.
--
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] Include xmlparse.h instead of expat.h on QNX

2013-02-11 Thread Matt Kraai
On Mon, Feb 11, 2013 at 01:34:52PM -0800, Junio C Hamano wrote:
 Two points and a possibly irrelevant half:
 
  - If a fix is platform specific (i.e. tempts to use #ifdef
PLATFORM_NAME), we would prefer to see a patch that that is
isolated to platform-specific compatibility layer, which would
involve:
 
. add compat/qnx/expat.h file that #include xmlparse.h
. to Makefile, add -Icompat/qnx/ to CFLAGS
 
  - Is this really a fix for a problem specific to QNX?  It looks
like this is for any platform with expat 1, no?

It should apply to anyone trying to build with expat 1.1 or 1.2, but
not with 1.95.0 or later.

  - What happens to people with QNX older than 6.3.2 or newer than
6.5.0 (assuming they will eventually start shipping expat 2) with
your patch?

Git will fail to build http-push.c.  I don't know if QNX will ever
update expat, though.  expat 1.95.0 was released in 2000, expat 2.0.0
was released in 2006, and QNX 6.5.0 was released in 2010.

 Assuming that this change is about building with expat1, it would
 probably be better to do something like this instead, I would think.

expat 1.95.0 through 1.95.8 used expat.h; should I still use
EXPAT_VERSION = 1 to signify that it should use xmlparse.h, use
EXPAT_NEEDS_XMLPARSE_H as Jeff suggested, or something else entirely?
--
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] Include xmlparse.h instead of expat.h on QNX

2013-02-11 Thread Junio C Hamano
Matt Kraai kr...@ftbfs.org writes:

 Assuming that this change is about building with expat1, it would
 probably be better to do something like this instead, I would think.

 expat 1.95.0 through 1.95.8 used expat.h; should I still use
 EXPAT_VERSION = 1 to signify that it should use xmlparse.h, use
 EXPAT_NEEDS_XMLPARSE_H as Jeff suggested, or something else entirely?

Oh, please do not take it as a request to use that exact name (in
case you didn't know, I am bad at naming things).  It was merely an
illustration to show the direction, written without knowing that
Peff was essentially giving the same suggestion.

Thanks.

Oh, by the way, please do not deflect an attempt to directly send a
response to you with a Mail-Followup-To header.
--
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