crda: check the word size of target instead of host machine.

Issue: LIN8-5177

When 'USE_OPENSSL=1' is configured for crda, key2pub.py doesn't
create "keys-ssl.c" with target's word size. Pass 'SITEINFO_BITS'
from building system to key2pub.py.

(LOCAL REV: NOT UPSTREAM) -- sent to oe-devel on 20161130

Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
This commit is contained in:
Haiqing Bai 2016-11-30 10:56:38 +08:00 committed by Joe MacDonald
parent 0fc2bd373a
commit f25fd7a2ef
3 changed files with 98 additions and 1 deletions

View File

@ -0,0 +1,58 @@
From 8d2164a090f17286ea8291f30a123595cf447dc3 Mon Sep 17 00:00:00 2001
From: Haiqing Bai <Haiqing.Bai@windriver.com>
Date: Wed, 30 Nov 2016 10:27:36 +0800
Subject: [PATCH] crda: fix issues when 'USE_OPENSSL=1'.
Fxed the below issues if configured with 'USE_OPENSSL=1':
a. keys-ssl.c uses BN_ULONG but doesn't include the openssl headers leading
to build failures:
keys-ssl.c:2:8: error: unknown type name 'BN_ULONG'
static BN_ULONG e_0[1] = {
b. The large unqualified constants also break building:
keys-ssl.c:8:2: warning: overflow in implicit constant conversion [-Woverflow]
0x63a2705416a0d8e1, 0xdc9fca11c8ba757b,
c. keys-ssl.c: error: 'keys' defined but not used [-Werror=unused-variable]
static struct pubkey keys[] = {
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Upsteam-Status: Pending
Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com>
---
utils/key2pub.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/utils/key2pub.py b/utils/key2pub.py
index 401d58a..3ae00b8 100755
--- a/utils/key2pub.py
+++ b/utils/key2pub.py
@@ -24,7 +24,7 @@ def print_ssl_64(output, name, val):
for v1, v2, v3, v4, v5, v6, v7, v8 in vnew:
if not idx:
output.write('\t')
- output.write('0x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x, ' % (ord(v1), ord(v2), ord(v3), ord(v4), ord(v5), ord(v6), ord(v7), ord(v8)))
+ output.write('0x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2xULL, ' % (ord(v1), ord(v2), ord(v3), ord(v4), ord(v5), ord(v6), ord(v7), ord(v8)))
idx += 1
if idx == 2:
idx = 0
@@ -60,6 +60,7 @@ def print_ssl_32(output, name, val):
def print_ssl(output, name, val):
import os
output.write('#include <stdint.h>\n')
+ output.write('#include <openssl/bn.h>\n')
if os.getenv('TARGET_BITS') == '64':
return print_ssl_64(output, name, val)
else:
@@ -78,7 +79,7 @@ struct pubkey {
#define KEYS(e,n) { KEY(e), KEY(n), }
-static struct pubkey keys[] = {
+static struct pubkey keys[] __attribute__((unused))= {
''')
for n in xrange(n + 1):
output.write(' KEYS(e_%d, n_%d),\n' % (n, n))
--
1.9.1

View File

@ -0,0 +1,34 @@
From c1c42513edd27c97341f2033af77c13a4724eb8f Mon Sep 17 00:00:00 2001
From: Haiqing Bai <Haiqing.Bai@windriver.com>
Date: Fri, 25 Nov 2016 16:48:01 +0800
Subject: [PATCH] crda: Use target word size instead of host's.
In key2pub.py, the codes check the wordsize
of the host machine but not the target's, this fix
fetches the wordsize of target from the build system.
Upstream-Status: Pending
Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com>
---
utils/key2pub.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/utils/key2pub.py b/utils/key2pub.py
index 3e84cd2..401d58a 100755
--- a/utils/key2pub.py
+++ b/utils/key2pub.py
@@ -58,9 +58,9 @@ def print_ssl_32(output, name, val):
output.write('};\n\n')
def print_ssl(output, name, val):
- import struct
+ import os
output.write('#include <stdint.h>\n')
- if len(struct.pack('@L', 0)) == 8:
+ if os.getenv('TARGET_BITS') == '64':
return print_ssl_64(output, name, val)
else:
return print_ssl_32(output, name, val)
--
1.9.1

View File

@ -4,7 +4,7 @@ SECTION = "net"
LICENSE = "copyleft-next-0.3.0"
LIC_FILES_CHKSUM = "file://copyleft-next-0.3.0;md5=8743a2c359037d4d329a31e79eabeffe"
DEPENDS = "python-m2crypto-native python-native libgcrypt libnl"
DEPENDS = "python-m2crypto-native python-native libgcrypt libnl openssl"
SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz \
file://do-not-run-ldconfig-if-destdir-is-set.patch \
@ -12,6 +12,8 @@ SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz \
file://fix-gcc-6-unused-variables.patch \
file://0001-Makefile-respect-LDFLAGS-for-libreg.patch \
file://make.patch \
file://use-target-word-size-instead-of-host-s.patch \
file://fix-issues-when-USE_OPENSSL-1.patch \
"
SRC_URI[md5sum] = "0431fef3067bf503dfb464069f06163a"
SRC_URI[sha256sum] = "43fcb9679f8b75ed87ad10944a506292def13e4afb194afa7aa921b01e8ecdbf"
@ -19,6 +21,9 @@ SRC_URI[sha256sum] = "43fcb9679f8b75ed87ad10944a506292def13e4afb194afa7aa921b01e
inherit python-dir pythonnative
# Recursive make problem
EXTRA_OEMAKE = "MAKEFLAGS= DESTDIR=${D} LIBDIR=${libdir}/crda LDLIBREG='-Wl,-rpath,${libdir}/crda -lreg'"
EXTRA_OEMAKE_append = " USE_OPENSSL=1"
TARGET_BITS = "${SITEINFO_BITS}"
export TARGET_BITS
do_compile() {
oe_runmake all_noverify