Subject: Re: Build issue for git 1.8.5.1 under Mac OS X 10.8 (Mountain Lion)

From: Torsten Bögershausen <[email-masked]>
Date: Thu, 05 Dec 2013 08:07:21 +0100

On 12/04/2013 07:48 PM, Marius Schamschula wrote:
> Hi all,
>
> Over the years I have built many versions of git and released them on hmug.org. git 1.8.5.1 builds just fine under OS 10.7 (Lion) and 10.9 (Mavericks), but the build fails (also for 1.8.5) on 10.8 (Mountain Lion):
>
> <snip>
> GIT_VERSION = 1.8.5.1
>      * new build flags
>      CC credential-store.o
> In file included from git-compat-util.h:330:0,
>                   from cache.h:4,
>                   from credential-store.c:1:
> compat/apple-common-crypto.h: In function 'git_CC_EVP_EncodeBlock':
> compat/apple-common-crypto.h:32:2: error: 'SecTransformRef' undeclared (first use in this function)
> compat/apple-common-crypto.h:32:2: note: each undeclared identifier is reported only once for each function it appears in
> compat/apple-common-crypto.h:32:18: error: expected ';' before 'encoder'
> compat/apple-common-crypto.h:36:2: error: 'encoder' undeclared (first use in this function)
> compat/apple-common-crypto.h:36:2: warning: implicit declaration of function 'SecEncodeTransformCreate'
> compat/apple-common-crypto.h:36:37: error: 'kSecBase64Encoding' undeclared (first use in this function)
> compat/apple-common-crypto.h:40:2: warning: implicit declaration of function 'SecTransformSetAttribute'
> compat/apple-common-crypto.h:40:36: error: 'kSecTransformInputAttributeName' undeclared (first use in this function)
> compat/apple-common-crypto.h:44:2: warning: implicit declaration of function 'SecTransformExecute'
> compat/apple-common-crypto.h: In function 'git_CC_EVP_DecodeBlock':
> compat/apple-common-crypto.h:62:2: error: 'SecTransformRef' undeclared (first use in this function)
> compat/apple-common-crypto.h:62:18: error: expected ';' before 'decoder'
> compat/apple-common-crypto.h:66:2: error: 'decoder' undeclared (first use in this function)
> compat/apple-common-crypto.h:66:2: warning: implicit declaration of function 'SecDecodeTransformCreate'
> compat/apple-common-crypto.h:66:37: error: 'kSecBase64Encoding' undeclared (first use in this function)
> compat/apple-common-crypto.h:70:36: error: 'kSecTransformInputAttributeName' undeclared (first use in this function)
> Makefile:1975: recipe for target 'credential-store.o' failed
> make: *** [credential-store.o] Error 1
> </snip>
>
> Apparently a header issue: I tried force feeding the Security/SecEncryptTransform.h file, and just got an other error…
>
> Any help would be welcome!
>
> Thanks in advance.
>
> Marius
> --
> Marius Schamschula

I can't reproduce it here (in other words, it compiles)
What could help is to run the preprocessor, and see what the compiler see.

a) Patch the Makefile of git like this:

-- a/Makefile
+++ b/Makefile
@@ -349,7 +349,8 @@ GIT-VERSION-FILE: FORCE

  # CFLAGS and LDFLAGS are for the users to override from the command line.

-CFLAGS = -g -O2 -Wall
+#CFLAGS = -g -O2 -Wall
+CFLAGS= -E
b) Compile credential-store.o (Which is now an ASCII file)

credential-store.o ; make credential-store.o

c) Take an editor and have a look.
    On my system SecTransform.h is here:
-----------------
/System/Library/Frameworks/Security.framework/Headers/SecTransform.h"

d) And the file contains something like this:
---------------
typedef CFTypeRef SecTransformRef;
typedef CFTypeRef SecGroupTransformRef;

/Torsten