git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: David Aguilar
Message 8 of 8 in “Makefile: fix default regex settings on Darwin”
  1. 1/3 Makefile: fix default regex settings on DarwinDavid Aguilar, May 11, 2013
  2. 2/3 imap-send: eliminate HMAC warnings on OS X 10.8David Aguilar, May 11, 2013
  3. 3/3 cache.h: eliminate SHA-1 deprecation warnings on OS X 10.8David Aguilar, May 11, 2013
  4. Eric SunshineMay 12, 2013
  5. David AguilarMay 12, 2013
  6. Junio C HamanoMay 12, 2013
  7. David AguilarMay 12, 2013
  8. Eric SunshineMay 13, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.