Re: [PATCH v2 3/3] cache.h: eliminate SHA-1 deprecation warnings on OS X 10.8
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- May 13, 2013, 01:22 UTC
- Message-ID
- <CAPig+cSvz+gb8_yAkeUH7P3uK14ynro54LvsiR4biNbTw4vkrg@mail.gmail.com>
- In-Reply-To
- <CAJDDKr5QbrY6dFLbdZc2P5fTdLx+MPrSE+r1AAJMU4g=nrV9BA@mail.gmail.com>
On Sat, May 11, 2013 at 4:22 AM, David Aguilar <davvid@gmail.com> wrote:
Show 35 quoted lines
> Mac OS X 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 Common Digest SHA-1 > functions for SHA1_Init(), SHA1_Update(), and SHA1_Final(). > > Add a COMMON_DIGEST_SHA1 knob to the Makefile to allow > choosing this implementation and define it by default on Darwin. > > Signed-off-by: David Aguilar <davvid@gmail.com> > --- > Unchanged since last time; rebased to 3/3. > > diff --git a/cache.h b/cache.h > index 94ca1ac..e2b24c6 100644 > --- a/cache.h > +++ b/cache.h > @@ -10,11 +10,18 @@ > > #include SHA1_HEADER > #ifndef git_SHA_CTX > +#ifdef COMMON_DIGEST_FOR_SHA1 > +#define git_SHA_CTX CC_SHA1_CTX > +#define git_SHA1_Init CC_SHA1_Init > +#define git_SHA1_Update CC_SHA1_Update > +#define git_SHA1_Final CC_SHA1_Final > +#else > #define git_SHA_CTX SHA_CTX > #define git_SHA1_Init SHA1_Init > #define git_SHA1_Update SHA1_Update > #define git_SHA1_Final SHA1_Final > #endif > +#endif
Reading [*1*], it appears that you can get these defines for free by #defining COMMON_DIGEST_FOR_OPENSSL before including <CommonCrypto/CommonDigest.h>, so this patch hunk can be eliminated, which is nice since you don't have to pollute cache.h with any Apple-specific ugliness. Also, according to [*1*], you need only link against libSystem (or System.framework), so you can drop the $(LIB_4_CRYPTO) reference too. The entire patch therefore reduces to (excuse whitespace corruption):
-->8--
diff --git a/Makefile b/Makefile index 25282b4..a080d20 100644 --- a/Makefile +++ b/Makefile @@ -1055,6 +1055,7 @@ ifeq ($(uname_S),Darwin) endif endif COMMON_DIGEST_HMAC = YesPlease + COMMON_DIGEST_SHA1 = YesPlease NO_REGEX = YesPlease PTHREAD_LIBS = endif @@ -1390,10 +1391,15 @@ ifdef PPC_SHA1 LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o LIB_H += ppc/sha1.h else +ifdef COMMON_DIGEST_SHA1 + 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 COMMON_DIGEST_HMAC BASIC_CFLAGS += -DCOMMON_DIGEST_FOR_HMAC=1 -->8-- [*1*] /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/CommonCrypto/CommonDigest.h