[Slackbuilds-users] qt5 5.5.1 fails to build with multiple jobs

Andrzej Telszewski atelszewski at gmail.com
Sun Mar 13 12:18:24 UTC 2016


On 13/03/16 11:12, Willy Sudiarto Raharjo wrote:
>> Well, for me, the RESUMED build fails with the single job too, now with
>> the following error:
>
> best not to resume a broken build
> please restart the whole process as i just built Qt 5.5.1 yesterday and
> it went fine
>

Are you guys up to date with the Thu Mar 10 02:46:49 UTC 2016 -current 
update?

This update has updated mozilla-nss package.

And now, if I remove mozilla-nss package, the RESUMED qt5 build fails in 
a different place, which leads me to thinking that mozilla-nss is used 
for qt5 build.

And now, the previous build of qt5 fails with:
/home/software/slackware/pkg/tmpdir/qt-everywhere-opensource-src-5.5.1/qtwebengine/src/3rdparty/chromium/net/third_party/nss/ssl/ssl3con.c:2091:15: 
error: ‘CK_NSS_AEAD_PARAMS {aka struct CK_NSS_AEAD_PARAMS}’ has no 
member named ‘pIv’
      aeadParams.pIv = (unsigned char *) additionalData;
                ^
/home/software/slackware/pkg/tmpdir/qt-everywhere-opensource-src-5.5.1/qtwebengine/src/3rdparty/chromium/net/third_party/nss/ssl/ssl3con.c:2092:15: 
error: ‘CK_NSS_AEAD_PARAMS {aka struct CK_NSS_AEAD_PARAMS}’ has no 
member named ‘ulIvLen’
      aeadParams.ulIvLen = 8;
                ^

which would be correct, if the SYSTEM wide header was used, that is:
/usr/include/nss/pkcs11n.h

because structure defined there in:

typedef struct CK_NSS_AEAD_PARAMS {
     CK_BYTE_PTR  pNonce;
     CK_ULONG     ulNonceLen;
     CK_BYTE_PTR  pAAD;
     CK_ULONG     ulAADLen;
     CK_ULONG     ulTagLen;
} CK_NSS_AEAD_PARAMS;

actually does not have pIv and ulIvLen fields.

And I'm convinced that system header is used, because of:
-I/usr/include/nss
being defined when the compiler is invoked.


There is this patch:
qt-everywhere-opensource-src-5.5.1/qtwebengine/src/3rdparty/chromium/net/third_party/nss/patches/chacha20poly1305.patch

which adds the correct structure, that is:
typedef struct CK_NSS_AEAD_PARAMS {
     CK_BYTE_PTR  pIv;  /* This is the nonce. */
     CK_ULONG     ulIvLen;
     CK_BYTE_PTR  pAAD;
     CK_ULONG     ulAADLen;
     CK_ULONG     ulTagLen;
} CK_NSS_AEAD_PARAMS;


but I'm not sure if all of this is correctly taken into account, because 
if you look at:
qt-everywhere-opensource-src-5.5.1/qtwebengine/src/3rdparty/chromium/net/third_party/nss/ssl/ssl3con.c:45

then you have:

#ifndef CKM_NSS_CHACHA20_POLY1305
#define CKM_NSS_CHACHA20_POLY1305               (CKM_NSS + 26)

typedef struct CK_NSS_AEAD_PARAMS {
     CK_BYTE_PTR  pIv;  /* This is the nonce. */
     CK_ULONG     ulIvLen;
     CK_BYTE_PTR  pAAD;
     CK_ULONG     ulAADLen;
     CK_ULONG     ulTagLen;
} CK_NSS_AEAD_PARAMS;

#endif

so if CKM_NSS_CHACHA20_POLY1305 is already defined, then this correct 
struct is not taken into account.


And CKM_NSS_CHACHA20_POLY1305 is defined outside, if the system headers 
are being used:

qt-everywhere-opensource-src-5.5.1/qtwebengine/src/3rdparty/chromium/net/third_party/nss/ssl/ssl3con.c:

includes:
/usr/include/nss/cert.h

which includes:
/usr/include/nss/certt.h

which includes:
/usr/include/nss/pkcs11t.h

which includes:
/usr/include/nss/pkcs11n.h

which contains faulty struct:

typedef struct CK_NSS_AEAD_PARAMS {
     CK_BYTE_PTR  pNonce;
     CK_ULONG     ulNonceLen;
     CK_BYTE_PTR  pAAD;
     CK_ULONG     ulAADLen;
     CK_ULONG     ulTagLen;
} CK_NSS_AEAD_PARAMS;

and the definition of CKM_NSS_CHACHA20_POLY1305.


And it looks like CKM_NSS_CHACHA20_POLY1305 was not defined in the 
previous mozilla-nss package. I'm not sure which version it was, but if 
it was 3.20.1, the I cannot find CKM_NSS_CHACHA20_POLY1305 in the 
source. That would mean that qt5 should build fine with 
mozilla-nss-3.20.1, but will fail with mozilla-nss-3.23, which is 
actually happening to me.

I hope I expressed myself clearly ;)

Any ideas?

-- 
Best regards,
Andrzej Telszewski


More information about the SlackBuilds-users mailing list