Re: [PATCH v5 1/2] cache.h: eliminate SHA-1 deprecation warnings on Mac OS X

2013-05-19 Thread David Aguilar
On Sat, May 18, 2013 at 11:26 PM, Junio C Hamano gits...@pobox.com wrote:
 David Aguilar dav...@gmail.com writes:

 Thanks Eric and Junio.  I looked over the patches and they look good.

 Are you sure about that?  It seemed to me that it was breaking
 everybody that is not on MacOS X --- did I misread the patch?

Gah, correct.  I've now tested v8 which Eric just sent out.  It worked
fine for me, with and without NO_APPLE_COMMON_CRYPTO.

Thanks,
--
David
--
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 v5 1/2] cache.h: eliminate SHA-1 deprecation warnings on Mac OS X

2013-05-19 Thread Junio C Hamano
David Aguilar dav...@gmail.com writes:

 Thanks Eric and Junio.  I looked over the patches and they look good.

Are you sure about that?  It seemed to me that it was breaking
everybody that is not on MacOS X --- did I misread the patch?
--
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 v5 1/2] cache.h: eliminate SHA-1 deprecation warnings on Mac OS X

2013-05-17 Thread David Aguilar
On Thu, May 16, 2013 at 11:18 PM, Eric Sunshine sunsh...@sunshineco.com wrote:
 On Wed, May 15, 2013 at 1:56 PM, Torsten Bögershausen tbo...@web.de wrote:
 On 2013-05-15 09.11, David Aguilar wrote:
 + ifndef NO_APPLE_COMMON_CRYPTO
 + APPLE_COMMON_CRYPTO = YesPlease
 + endif
   NO_REGEX = YesPlease
   PTHREAD_LIBS =
  endif
 @@ -1389,10 +1396,16 @@ ifdef PPC_SHA1
   LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o
   LIB_H += ppc/sha1.h
  else
 +ifdef APPLE_COMMON_CRYPTO
 + BASIC_CFLAGS += -DCOMMON_DIGEST_FOR_OPENSSL
 + SHA1_HEADER = CommonCrypto/CommonDigest.h

 Would it make sense to replace APPLE_COMMON_CRYPTO
 with COMMON_DIGEST_FOR_OPENSSL ?

 In the spirit of other Makefile-defines becoming Compiler defines,
 a random picked example:
 ifdef NO_STRTOULL
 COMPAT_CFLAGS += -DNO_STRTOULL
 endif

 Not necessarily. Unlike NO_STRTOULL and cousins,
 COMMON_DIGEST_FOR_OPENSSL is not a Git build tweak; it is merely a
 (public) implementation detail of the Apple header [1] to magically
 associate OpenSSL digest functions with CommonCrypto counterparts.
 It's not the only such macro recognized by the Apple headers. For
 instance, COMMON_DIGEST_FOR_RFC_1321 magically associates legacy MD5
 digest functions with CommonCrypto counterparts.

 Further, as Junio noted elsewhere, David is using CommonCrypto for
 HMAC replacements, not just for digest replacements, so a Makefile
 knob with DIGEST in its name is not really appropriate. More
 generally, David would like to find CommonCrypto replacements for all
 the OpenSSL functionality, so a Makefile knob named after DIGEST is
 too specific.

 These considerations motivated the original suggestion for a single
 Git Makefile knob to enable/disable, as a unit, all CommonCrypto
 replacements. Such a knob would naturally have COMMON_CRYPTO as part
 of its name.

 [1]: 
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/CommonCrypto/CommonDigest.h

This is a nice justification for taking v5 of this series over v6.

Sorry for all the churn in this series, Junio.  I wrote v5 so I
certainly felt it was a good idea at the time, and I feel bad for not
having waited longer before sending out v6 (which is what was
eventually queued in pu).

Do you have advice on how we should proceed?  :sigh: sorry for wasting
so much maintainer time on this series already.  If you need any
resends or anything please let me know.  This time I'll wait for a
strong opinion before firing off patches.

My opinion: yeah, v5's ([NO_]APPLE_COMMON_CRYPTO) was probably where
we should have stopped painting.  Hindsight is 20/20.  Luckily it
never left pu.
--
David
--
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 v5 1/2] cache.h: eliminate SHA-1 deprecation warnings on Mac OS X

2013-05-17 Thread Junio C Hamano
David Aguilar dav...@gmail.com writes:

 Do you have advice on how we should proceed?  :sigh: sorry for wasting
 so much maintainer time on this series already.  If you need any
 resends or anything please let me know.  This time I'll wait for a
 strong opinion before firing off patches.

 My opinion: yeah, v5's ([NO_]APPLE_COMMON_CRYPTO) was probably where
 we should have stopped painting.  Hindsight is 20/20.  Luckily it
 never left pu.

I could do this easily:

$ git checkout da/darwin ;# b72ac20a6f73b
$ git format-patch --stdout -2 |
  sed -e 's|COMMON_DIGEST_FOR_OPENSSL|APPLE_COMMON_CRYPTO|g' P.mbox
$ git checkout HEAD^^ ;# 29de20504e
$ git am P.mbox
$ git diff da/darwin HEAD ;# sanity check
$ git log da/darwin.. ;# sanity check
$ git branch -f da/darwin

if you nicely ask ;-)


--
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 v5 1/2] cache.h: eliminate SHA-1 deprecation warnings on Mac OS X

2013-05-17 Thread David Aguilar
On Fri, May 17, 2013 at 9:53 AM, Junio C Hamano gits...@pobox.com wrote:
 David Aguilar dav...@gmail.com writes:

 Do you have advice on how we should proceed?  :sigh: sorry for wasting
 so much maintainer time on this series already.  If you need any
 resends or anything please let me know.  This time I'll wait for a
 strong opinion before firing off patches.

 My opinion: yeah, v5's ([NO_]APPLE_COMMON_CRYPTO) was probably where
 we should have stopped painting.  Hindsight is 20/20.  Luckily it
 never left pu.

 I could do this easily:

 $ git checkout da/darwin ;# b72ac20a6f73b
 $ git format-patch --stdout -2 |
   sed -e 's|COMMON_DIGEST_FOR_OPENSSL|APPLE_COMMON_CRYPTO|g' P.mbox
 $ git checkout HEAD^^ ;# 29de20504e
 $ git am P.mbox
 $ git diff da/darwin HEAD ;# sanity check
 $ git log da/darwin.. ;# sanity check
 $ git branch -f da/darwin

 if you nicely ask ;-)

gitster please ;-)

--
David
--
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 v5 1/2] cache.h: eliminate SHA-1 deprecation warnings on Mac OS X

2013-05-17 Thread Eric Sunshine
On Fri, May 17, 2013 at 4:21 AM, David Aguilar dav...@gmail.com wrote:
 On Thu, May 16, 2013 at 11:18 PM, Eric Sunshine sunsh...@sunshineco.com 
 wrote:
 On Wed, May 15, 2013 at 1:56 PM, Torsten Bögershausen tbo...@web.de wrote:
 On 2013-05-15 09.11, David Aguilar wrote:
 + ifndef NO_APPLE_COMMON_CRYPTO
 + APPLE_COMMON_CRYPTO = YesPlease
 + endif
   NO_REGEX = YesPlease
   PTHREAD_LIBS =
  endif
 @@ -1389,10 +1396,16 @@ ifdef PPC_SHA1
   LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o
   LIB_H += ppc/sha1.h
  else
 +ifdef APPLE_COMMON_CRYPTO
 + BASIC_CFLAGS += -DCOMMON_DIGEST_FOR_OPENSSL
 + SHA1_HEADER = CommonCrypto/CommonDigest.h

 Would it make sense to replace APPLE_COMMON_CRYPTO
 with COMMON_DIGEST_FOR_OPENSSL ?

 In the spirit of other Makefile-defines becoming Compiler defines,
 a random picked example:
 ifdef NO_STRTOULL
 COMPAT_CFLAGS += -DNO_STRTOULL
 endif

 Not necessarily. Unlike NO_STRTOULL and cousins,
 COMMON_DIGEST_FOR_OPENSSL is not a Git build tweak; it is merely a
 (public) implementation detail of the Apple header [1] to magically
 associate OpenSSL digest functions with CommonCrypto counterparts.
 It's not the only such macro recognized by the Apple headers. For
 instance, COMMON_DIGEST_FOR_RFC_1321 magically associates legacy MD5
 digest functions with CommonCrypto counterparts.

 Further, as Junio noted elsewhere, David is using CommonCrypto for
 HMAC replacements, not just for digest replacements, so a Makefile
 knob with DIGEST in its name is not really appropriate. More
 generally, David would like to find CommonCrypto replacements for all
 the OpenSSL functionality, so a Makefile knob named after DIGEST is
 too specific.

 These considerations motivated the original suggestion for a single
 Git Makefile knob to enable/disable, as a unit, all CommonCrypto
 replacements. Such a knob would naturally have COMMON_CRYPTO as part
 of its name.

 This is a nice justification for taking v5 of this series over v6.

You will consider this bike-shedding (I don't), but the above also is
good justification for revising your HMAC patch to _not_ rely on
COMMON_DIGEST_FOR_OPENSSL, which is an implementation detail of your
SHA patch, rather than a proper build knob.

Similar to NO_STRTOULL and cousins, you should have a #define (such as
NO_APPLE_COMMON_CRYPTO or NO_COMMON_CRYPTO) which is consulted by your
HMAC patch and any future patches you submit to map CommonCrypto
counterparts to OpenSSL functions. The fact that you also must #define
COMMON_DIGEST_FOR_OPENSSL for the SHA patch is just an implementation
detail of that one patch; it is not relevant to the other patches.

-- ES
--
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 v5 1/2] cache.h: eliminate SHA-1 deprecation warnings on Mac OS X

2013-05-17 Thread David Aguilar
On Fri, May 17, 2013 at 10:57 AM, Junio C Hamano gits...@pobox.com wrote:
 Eric Sunshine sunsh...@sunshineco.com writes:

 On Fri, May 17, 2013 at 12:53 PM, Junio C Hamano gits...@pobox.com wrote:
 David Aguilar dav...@gmail.com writes:

 Do you have advice on how we should proceed?  :sigh: sorry for wasting
 so much maintainer time on this series already.  If you need any
 resends or anything please let me know.  This time I'll wait for a
 strong opinion before firing off patches.

 My opinion: yeah, v5's ([NO_]APPLE_COMMON_CRYPTO) was probably where
 we should have stopped painting.  Hindsight is 20/20.  Luckily it
 never left pu.

 I could do this easily:

 $ git checkout da/darwin ;# b72ac20a6f73b
 $ git format-patch --stdout -2 |
   sed -e 's|COMMON_DIGEST_FOR_OPENSSL|APPLE_COMMON_CRYPTO|g' P.mbox
 $ git checkout HEAD^^ ;# 29de20504e
 $ git am P.mbox
 $ git diff da/darwin HEAD ;# sanity check
 $ git log da/darwin.. ;# sanity check
 $ git branch -f da/darwin

 That would lose the one legitimate COMMON_DIGEST_FOR_OPENSSL which
 needs to be defined before CommonCrypto/CommonDigest.h is included.

 It probably is a good catch, but I'll stop reading patches and start
 today's integration cycle (and will tag 1.8.3-rc3).

 At this point, I think the best would be for you to reroll these two
 patches, then after David reviews it and I'd re-queue the result
 with

 ... original commit message ...

 Reorginized use of Makefile variables and C preprosessor
 macros with help by Eric Sunshine.

 Signed-off-by: David
 Signed-off-by: Eric
 Signed-off-by: Me

 or something.  Can you two help that?

Thanks Eric and Junio.  I looked over the patches and they look good.

Signed-off-by: David Aguilar dav...@gmail.com

Cheers,
--
David
--
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 v5 1/2] cache.h: eliminate SHA-1 deprecation warnings on Mac OS X

2013-05-15 Thread David Aguilar
Mac OS X 10.8 Mountain Lion prints warnings when building git:

warning: 'SHA1_Init' is deprecated
(declared at /usr/include/openssl/sha.h:121)

Silence the warnings by using the CommonCrytpo SHA-1
functions for SHA1_Init(), SHA1_Update(), and SHA1_Final().

COMMON_DIGEST_FOR_OPENSSL is defined to enable the OpenSSL
compatibility macros in CommonDigest.h.

Add a NO_APPLE_COMMON_CRYPTO option to the Makefile to allow
users to opt out of using this library.  When defined, Git will
use OpenSSL instead.

Helped-by: Eric Sunshine sunsh...@sunshineco.com
Signed-off-by: David Aguilar dav...@gmail.com
---
Both of these are replacement patches pu.

Changes from last time:

It now uses a single APPLE_COMMON_CRYPTO definition.
Users can now opt-out by setting NO_APPLE_COMMON_CRYPTO.

 Makefile | 13 +
 1 file changed, 13 insertions(+)

diff --git a/Makefile b/Makefile
index f698c1a..8309c41 100644
--- a/Makefile
+++ b/Makefile
@@ -137,6 +137,10 @@ all::
 # specify your own (or DarwinPort's) include directories and
 # library directories by defining CFLAGS and LDFLAGS appropriately.
 #
+# Define NO_APPLE_COMMON_CRYPTO if you are building on Darwin/Mac OS X
+# and do not want to use Apple's CommonCrypto library.  This allows you
+# to provide your own OpenSSL library, for example from MacPorts.
+#
 # Define BLK_SHA1 environment variable to make use of the bundled
 # optimized C SHA1 routine.
 #
@@ -1054,6 +1058,9 @@ ifeq ($(uname_S),Darwin)
BASIC_LDFLAGS += -L/opt/local/lib
endif
endif
+   ifndef NO_APPLE_COMMON_CRYPTO
+   APPLE_COMMON_CRYPTO = YesPlease
+   endif
NO_REGEX = YesPlease
PTHREAD_LIBS =
 endif
@@ -1389,10 +1396,16 @@ ifdef PPC_SHA1
LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o
LIB_H += ppc/sha1.h
 else
+ifdef APPLE_COMMON_CRYPTO
+   BASIC_CFLAGS += -DCOMMON_DIGEST_FOR_OPENSSL
+   SHA1_HEADER = CommonCrypto/CommonDigest.h
+else
SHA1_HEADER = openssl/sha.h
EXTLIBS += $(LIB_4_CRYPTO)
 endif
 endif
+endif
+
 ifdef NO_PERL_MAKEMAKER
export NO_PERL_MAKEMAKER
 endif
-- 
1.8.3.rc2.2.gbc955d1

--
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 v5 1/2] cache.h: eliminate SHA-1 deprecation warnings on Mac OS X

2013-05-15 Thread Torsten Bögershausen
On 2013-05-15 09.11, David Aguilar wrote:
 Mac OS X 10.8 Mountain Lion prints warnings when building git:
 
   warning: 'SHA1_Init' is deprecated
   (declared at /usr/include/openssl/sha.h:121)
 
 Silence the warnings by using the CommonCrytpo SHA-1
 functions for SHA1_Init(), SHA1_Update(), and SHA1_Final().
 
 COMMON_DIGEST_FOR_OPENSSL is defined to enable the OpenSSL
 compatibility macros in CommonDigest.h.
 
 Add a NO_APPLE_COMMON_CRYPTO option to the Makefile to allow
 users to opt out of using this library.  When defined, Git will
 use OpenSSL instead.
 
 Helped-by: Eric Sunshine sunsh...@sunshineco.com
 Signed-off-by: David Aguilar dav...@gmail.com
 ---
 Both of these are replacement patches pu.
 
 Changes from last time:
 
 It now uses a single APPLE_COMMON_CRYPTO definition.
 Users can now opt-out by setting NO_APPLE_COMMON_CRYPTO.
 
  Makefile | 13 +
  1 file changed, 13 insertions(+)
 
 diff --git a/Makefile b/Makefile
 index f698c1a..8309c41 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -137,6 +137,10 @@ all::
  # specify your own (or DarwinPort's) include directories and
  # library directories by defining CFLAGS and LDFLAGS appropriately.
  #
 +# Define NO_APPLE_COMMON_CRYPTO if you are building on Darwin/Mac OS X
 +# and do not want to use Apple's CommonCrypto library.  This allows you
 +# to provide your own OpenSSL library, for example from MacPorts.
 +#
  # Define BLK_SHA1 environment variable to make use of the bundled
  # optimized C SHA1 routine.
  #
 @@ -1054,6 +1058,9 @@ ifeq ($(uname_S),Darwin)
   BASIC_LDFLAGS += -L/opt/local/lib
   endif
   endif
 + ifndef NO_APPLE_COMMON_CRYPTO
 + APPLE_COMMON_CRYPTO = YesPlease
 + endif
   NO_REGEX = YesPlease
   PTHREAD_LIBS =
  endif
 @@ -1389,10 +1396,16 @@ ifdef PPC_SHA1
   LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o
   LIB_H += ppc/sha1.h
  else
 +ifdef APPLE_COMMON_CRYPTO
 + BASIC_CFLAGS += -DCOMMON_DIGEST_FOR_OPENSSL
 + SHA1_HEADER = CommonCrypto/CommonDigest.h

Would it make sense to replace APPLE_COMMON_CRYPTO
with COMMON_DIGEST_FOR_OPENSSL ?

In the spirit of other Makefile-defines becoming Compiler defines,
a random picked example:
ifdef NO_STRTOULL
COMPAT_CFLAGS += -DNO_STRTOULL
endif

/Torsten
--
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