Building on MacOS - jhbuild difficulty

John Ralls jralls at ceridwen.us
Thu Jan 25 19:27:37 EST 2018


I resolved it by selecting 4, then from the shell:

git reset --hard
git checkout master
autoreconf -fis && ./configure --prefix $PREFIX
exit
<back at the jhbuild prompt> 1

Regards,
John Ralls


> On Jan 24, 2018, at 6:10 PM, R. Victor Klassen <rvklassen at gmail.com> wrote:
> 
> Easy enough:
> 
> make[3]: Nothing to be done for `all-am'.
> Making all in openssl
>   CC       libxmlsec1_openssl_la-ciphers.lo
>   CC       libxmlsec1_openssl_la-digests.lo
>   CC       libxmlsec1_openssl_la-evp.lo
>   CC       libxmlsec1_openssl_la-hmac.lo
>   CC       libxmlsec1_openssl_la-kw_aes.lo
> ciphers.c:39:25: error: field has incomplete type 'EVP_CIPHER_CTX' (aka 'struct evp_cipher_ctx_st')
>     EVP_CIPHER_CTX      cipherCtx;hmac.c:78:25: error: field has incomplete type 'HMAC_CTX' (aka 'struct hmac_ctx_st')
>     HMAC_CTX            hmacCtx;
>                         ^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:102:16: note: forward declaration of 'struct hmac_ctx_st'
> typedef struct hmac_ctx_st HMAC_CTX;
>                ^
> digests.c:31:25: error: field has incomplete type 'EVP_MD_CTX' (aka 'struct evp_md_ctx_st')
>     EVP_MD_CTX          digestCtx;
>                         ^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:92:16: note: forward declaration of 'struct evp_md_ctx_st'
> typedef struct evp_md_ctx_st EVP_MD_CTX;
>                ^
> 
>                         ^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:90:16: note: forward declaration of 'struct evp_cipher_ctx_st'
> typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
>                ^
> evp.c:185:11: warning: implicit declaration of function 'CRYPTO_add' is invalid in C99 [-Wimplicit-function-declaration]
>     ret = CRYPTO_add(&pKey->references,1,CRYPTO_LOCK_EVP_PKEY);
>           ^
> digests.c:216:5: warning: implicit declaration of function 'EVP_MD_CTX_cleanup' is invalid in C99 [-Wimplicit-function-declaration]
>     EVP_MD_CTX_cleanup(&(ctx->digestCtx));
>     ^
> hmac.c:236:5: warning: implicit declaration of function 'HMAC_CTX_init' is invalid in C99 [-Wimplicit-function-declaration]
>     HMAC_CTX_init(&(ctx->hmacCtx));
>     ^
> hmac.c:252:5: warning: implicit declaration of function 'HMAC_CTX_cleanup' is invalid in C99 [-Wimplicit-function-declaration]
>     HMAC_CTX_cleanup(&(ctx->hmacCtx));
>     ^
> hmac.c:357:5: warning: 'HMAC_Init' is deprecated [-Wdeprecated-declarations]
>     HMAC_Init(&(ctx->hmacCtx),
>     ^
> /Users/gnucashdev/gnucash-stable/include/openssl/hmac.h:28:1: note: 'HMAC_Init' has been explicitly marked deprecated here
> DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
> ^
> /Users/gnucashdev/gnucash-stable/include/openssl/opensslconf.h:130:34: note: expanded from macro 'DEPRECATEDIN_1_1_0'
> # define DEPRECATEDIN_1_1_0(f)   DECLARE_DEPRECATED(f)
>                                  ^
> /Users/gnucashdev/gnucash-stable/include/openssl/opensslconf.h:105:53: note: expanded from macro 'DECLARE_DEPRECATED'
> # define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
>                                                     ^
> evp.c:185:27: error: incomplete definition of type 'struct evp_pkey_st'
>     ret = CRYPTO_add(&pKey->references,1,CRYPTO_LOCK_EVP_PKEY);
>                       ~~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:93:16: note: forward declaration of 'struct evp_pkey_st'
> typedef struct evp_pkey_st EVP_PKEY;
>                ^
> 1 warning and 1 error generated.
> 1 error generated.
> 3 warnings and 1 error generated.
> make[3]: *** [libxmlsec1_openssl_la-digests.lo] Error 1
> make[3]: *** Waiting for unfinished jobs....
> make[3]: *** [libxmlsec1_openssl_la-ciphers.lo] Error 1
> evp.c:185:42: error: use of undeclared identifier 'CRYPTO_LOCK_EVP_PKEY'
>     ret = CRYPTO_add(&pKey->references,1,CRYPTO_LOCK_EVP_PKEY);
>                                          ^
> evp.c:213:16: error: incomplete definition of type 'struct evp_pkey_st'
>     switch(pKey->type) {
>            ~~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:93:16: note: forward declaration of 'struct evp_pkey_st'
> typedef struct evp_pkey_st EVP_PKEY;
>                ^
> make[3]: *** [libxmlsec1_openssl_la-hmac.lo] Error 1
> evp.c:505:42: error: incomplete definition of type 'struct evp_pkey_st'
>     xmlSecAssert2((pKey == NULL) || (pKey->type == EVP_PKEY_DSA), NULL);
>                                      ~~~~^
> ../../include/xmlsec/errors.h:487:15: note: expanded from macro 'xmlSecAssert2'
>         if(!( p ) ) { \
>               ^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:93:16: note: forward declaration of 'struct evp_pkey_st'
> typedef struct evp_pkey_st EVP_PKEY;
>                ^
> evp.c:507:33: error: incomplete definition of type 'struct evp_pkey_st'
>     return((pKey != NULL) ? pKey->pkey.dsa : (DSA*)NULL);
>                             ~~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:93:16: note: forward declaration of 'struct evp_pkey_st'
> typedef struct evp_pkey_st EVP_PKEY;
>                ^
> evp.c:523:23: error: incomplete definition of type 'struct evp_pkey_st'
>     xmlSecAssert2(pKey->type == EVP_PKEY_DSA, -1);
>                   ~~~~^
> ../../include/xmlsec/errors.h:487:15: note: expanded from macro 'xmlSecAssert2'
>         if(!( p ) ) { \
>               ^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:93:16: note: forward declaration of 'struct evp_pkey_st'
> typedef struct evp_pkey_st EVP_PKEY;
>                ^
> evp.c:610:46: error: incomplete definition of type 'struct dsa_st'
>     if(xmlSecOpenSSLNodeGetBNValue(cur, &(dsa->p)) == NULL) {
>                                           ~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> evp.c:633:46: error: incomplete definition of type 'struct dsa_st'
>     if(xmlSecOpenSSLNodeGetBNValue(cur, &(dsa->q)) == NULL) {
>                                           ~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> evp.c:656:46: error: incomplete definition of type 'struct dsa_st'
>     if(xmlSecOpenSSLNodeGetBNValue(cur, &(dsa->g)) == NULL) {
>                                           ~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> evp.c:671:50: error: incomplete definition of type 'struct dsa_st'
>         if(xmlSecOpenSSLNodeGetBNValue(cur, &(dsa->priv_key)) == NULL) {
>                                               ~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> evp.c:695:46: error: incomplete definition of type 'struct dsa_st'
>     if(xmlSecOpenSSLNodeGetBNValue(cur, &(dsa->pub_key)) == NULL) {
>                                           ~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> evp.c:790:22: error: incomplete definition of type 'struct dsa_st'
>     xmlSecAssert2(dsa->p != NULL, -1);
>                   ~~~^
> ../../include/xmlsec/errors.h:487:15: note: expanded from macro 'xmlSecAssert2'
>         if(!( p ) ) { \
>               ^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> evp.c:801:47: error: incomplete definition of type 'struct dsa_st'
>     ret = xmlSecOpenSSLNodeSetBNValue(cur, dsa->p, 1);
>                                            ~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> evp.c:813:22: error: incomplete definition of type 'struct dsa_st'
>     xmlSecAssert2(dsa->q != NULL, -1);
>                   ~~~^
> ../../include/xmlsec/errors.h:487:15: note: expanded from macro 'xmlSecAssert2'
>         if(!( p ) ) { \
>               ^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> evp.c:824:47: error: incomplete definition of type 'struct dsa_st'
>     ret = xmlSecOpenSSLNodeSetBNValue(cur, dsa->q, 1);
>                                            ~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> evp.c:836:22: error: incomplete definition of type 'struct dsa_st'
>     xmlSecAssert2(dsa->g != NULL, -1);
>                   ~~~^
> ../../include/xmlsec/errors.h:487:15: note: expanded from macro 'xmlSecAssert2'
>         if(!( p ) ) { \
>               ^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> evp.c:847:47: error: incomplete definition of type 'struct dsa_st'
>     ret = xmlSecOpenSSLNodeSetBNValue(cur, dsa->g, 1);
>                                            ~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> evp.c:859:78: error: incomplete definition of type 'struct dsa_st'
>     if(((keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePrivate) != 0) && (dsa->priv_key != NULL)) {
>                                                                           ~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> evp.c:870:51: error: incomplete definition of type 'struct dsa_st'
>         ret = xmlSecOpenSSLNodeSetBNValue(cur, dsa->priv_key, 1);
>                                                ~~~^
> /Users/gnucashdev/gnucash-stable/include/openssl/ossl_typ.h:107:16: note: forward declaration of 'struct dsa_st'
> typedef struct dsa_st DSA;
>                ^
> fatal error: too many errors emitted, stopping now [-ferror-limit=]
> 
>> On Jan 24, 2018, at 8:36 PM, John Ralls <jralls at ceridwen.us> wrote:
>> 
>> Since you didn’t share the actual errors I can’t really suggest anything...
>> 
>> Regards,
>> John Ralls
>> 
>> 
>>> On Jan 24, 2018, at 2:57 PM, R. Victor Klassen <rvklassen at gmail.com> wrote:
>>> 
>>> This got me much further.
>>> 
>>> The next problem was that no matter how many times I re-tried, gnutls would not check out.   I finally pulled it down by hand, extracted it to what appears to be the right place, and then continued from the configure phase - that seemed to work.  The symptom was 30 minutes of waiting while 0 bytes downloaded and then a timeout.  [I must say I would not be patient for 30 minutes of 0 bandwidth].
>>> 
>>> Continuing on, xmlsec failed to build.  I think the errors were all in evp.c
>>> 
>>> fatal error: too many errors emitted, stopping now [-ferror-limit=]
>>> 1 warning and 20 errors generated.
>>> make[3]: *** [libxmlsec1_openssl_la-evp.lo] Error 1
>>> make[2]: *** [all-recursive] Error 1
>>> make[1]: *** [all-recursive] Error 1
>>> make: *** [all] Error 2
>>> *** Error during phase build of xmlsec: ########## Error running make -j 5  *** [45/72]
>>> 
>>> For this one I have no idea what to try next.
>>> 
>>> 
>>>> On Jan 21, 2018, at 12:36 PM, John Ralls <jralls at ceridwen.us> wrote:
>>>> 
>>>> 
>>>> 
>>>>> On Jan 19, 2018, at 1:46 PM, John Ralls <jralls at ceridwen.us> wrote:
>>>>> 
>>>>> 
>>>>> 
>>>>>> On Jan 18, 2018, at 1:26 PM, R. Victor Klassen <rvklassen at gmail.com> wrote:
>>>>>> 
>>>>>> After a few years of being too busy to try working on the code base, I thought I’d make another attempt at installing a development  version of GnuCash.  Following the instructions on https://wiki.gnucash.org/wiki/MacOSX/Quartz <https://wiki.gnucash.org/wiki/MacOSX/Quartz>, I began by creating a new user, to be certain the environment wasn’t polluted by my previous attempt.
>>>>>> 
>>>>>> I was successful in downloading gtk-osx-build-setup.sh
>>>>>> 
>>>>>> I then ran it from the command line, and after a half-dozen or so tries, succeeded.   (prior attempts hung at 9% or less complete - I presume this is temporary).  
>>>>>> 
>>>>>> There were three warnings:
>>>>>> 
>>>>>> WARNING: aclocal not available (usually part of package 'autoconf')
>>>>>> WARNING: automake not available (usually part of package 'automake')
>>>>>> WARNING: yelp-tools not available (usually part of package 'yelp-tools')
>>>>>> Configuring jhbuild without autotools
>>>>>> 
>>>>>> Are these a problem?
>>>>>> 
>>>>>> I then pulled down http://github.com/gnucash/gnucash-on-osx/raw/master/.jhbuildrc-custom <http://github.com/gnucash/gnucash-on-osx/raw/master/.jhbuildrc-custom>
>>>>>> 
>>>>>> At this point I attempted to uncomment the line 
>>>>>> 
>>>>>> skip.remove( “bash” ) 
>>>>>> 
>>>>>> But it wasn’t in there.   So I added it, and when I attempted to run jhbuild it complained.  So I removed the line.  Is this it no longer a relevant instruction?
>>>>>> 
>>>>>> I then attempted to run 
>>>>>> 
>>>>>> jhbuild build openssl 
>>>>>> 
>>>>>> Which yielded the response:
>>>>>> 
>>>>>> jhbuild build: failed to parse /Users/gnucashdev/Source/jhbuild/modulesets/http:/git.gnome.org/browse/gtk-osx/plain/modulesets-stable/gtk-osx.modules: <http://git.gnome.org/browse/gtk-osx/plain/modulesets-stable/gtk-osx.modules:> [Errno 2] No such file or directory: u'/Users/gnucashdev/Source/jhbuild/modulesets/http:/git.gnome.org/browse/gtk-osx/plain/modulesets-stable/gtk-osx.modules' <http://git.gnome.org/browse/gtk-osx/plain/modulesets-stable/gtk-osx.modules'>
>>>>>> 
>>>>>> At which point I am not sure how to proceed.  In particular. I’m not even sure whether this should go to gnucash-devel or gtx-osx-devel
>>>>> 
>>>>> The jhbuild warnings have to do with jhbuild bootstrapping itself. They're normal.
>>>>> 
>>>>> skip.remove("bash") isn't needed anymore, .jhbuildrc adds it only when the MacOS version is < 10.11 (i.e. no SIP).
>>>>> 
>>>>> I merged a PR the other day that updates openssl to 1.1g and that seems to build OK inline so it's no longer necessary to build it separately before everything else.
>>>>> 
>>>>> All of that aside, something is whacked and I can reproduce the broken moduleset path using an alternate user... but it works fine when I'm me and everything else is the same.
>>>>> 
>>>> 
>>>> I found what was whacked: There was an error in gtk-osx-python.modules and jhbuild has this weird fallback mechanism where instead of reporting an error it tries to load the same moduleset from the jhbuild source directory (~/Source/jhbuild/modulesets), first stripped to the "file part" which sort-of makes sense but then with the whole URI as a filename, which doesn't at all. That of course fails and it's the error that gets reported, which isn't very helpful. My primary user id had an old version of gtk-osx-python.modules in the jhbuild sources so the problem wouldn't reproduce until I re-ran gtk-osx-build-setup.sh, which replaced it with the one in git.
>>>> 
>>>> Regards,
>>>> John Ralls
>>>> 
>>>> 
>>> 
>> 
> 



More information about the gnucash-devel mailing list