waf-samba: fix build failure on targets unsupported by qemu
v3 cover waf-samba: fix build failure on targets unsupported by qemu
From: Jackie Huang <[email protected]>
V3 Comments:
rebase since talloc is renamed to libtalloc
v2 comments:
rebase since samba reladted packages are move to meta-networking from meta-oe.
V1 Comments:
samba and required packages started to use waf build system since 4.x, and the waf bbclass use qemu user mode to help configure checking by default, but not all targets are supported by qemu user mode, so it definitely fail on those targets (it failed on our fsl_t2xxx and cav-octeon3).
The solution here it so use waf cross-answer mode to avoid using qemu, but we need to prepare the cross-answers, it's easy and error-prone if we try to get these cross-answers manually, but fortunately, waf provides another mode to help generate them in newer version, so upgrade related packages and backport patches for samba (I also tried to upgrad samba to 4.3.1, but it still doesn't work in my runtime testing after some bug fixing, so I keep in the current version for now, I may upgrade it sometime later if I get better understand about the new version).
Build tested on:
intel-x86-64
qemux86
qemuarm
qemuarma9
qemuarm64
qemumips
qemumips64
fsl-ls20xx
fsl-t2xxx
xilinx-zynq
cav-octeon3
--
The following changes since commit 2b6226e66f5339edc5e5f19aa3f1f5d7d2ce99ea:
postfix.inc: fix start postfix failed while hostname is numeric (2016-01-05 12:43:34 -0500)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib.git jhuang0/d_samba_rebase_160106-0
http://git.pokylinux.org/cgit.cgi//log/?h=jhuang0/d_samba_rebase_160106-0
Jackie Huang (7):
libtdb: upgrade to 1.3.7
libldb: upgrade to 1.1.21
libtevent: upgrade to 0.9.25
libtalloc: upgrade to 2.1.3
samba: fix the incorrect tmpfiles installed directory
samba: backport patches for cross-compiling waf-samba.bbclass: add cross-answers option and files
...1-waf-sanitize-and-fix-added-cross-answer.patch | 60 ++++++++
...-Adds-a-new-mode-to-samba-cross-compiling.patch | 112 ++++++++++++++
...-readability-of-cross-answers-generated-b.patch | 66 ++++++++
...wafsamba-CHECK_SIZEOF-cross-compile-frien.patch | 72 +++++++++
.../0005-build-unify-and-fix-endian-tests.patch | 169 +++++++++++++++++++++
...006-avoid-using-colon-in-the-checking-msg.patch | 32 ++++
...sing-of-cross-answers-file-in-case-answer.patch | 36 +++++
.../recipes-connectivity/samba/samba_4.1.12.bb | 16 +-
.../libldb/{libldb_1.1.17.bb => libldb_1.1.21.bb} | 4 +-
.../{libtalloc_2.1.1.bb => libtalloc_2.1.3.bb} | 4 +-
.../libtdb/{libtdb_1.3.0.bb => libtdb_1.3.7.bb} | 4 +-
.../{libtevent_0.9.21.bb => libtevent_0.9.25.bb} | 4 +-
meta-oe/classes/waf-samba.bbclass | 43 +++++-
meta-oe/conf/layer.conf | 1 +
meta-oe/files/waf-cross-answers/README | 3 +
.../waf-cross-answers/cross-answers-aarch64.txt | 38 +++++
.../files/waf-cross-answers/cross-answers-arm.txt | 39 +++++
.../files/waf-cross-answers/cross-answers-i586.txt | 39 +++++
.../files/waf-cross-answers/cross-answers-i686.txt | 39 +++++
.../files/waf-cross-answers/cross-answers-mips.txt | 39 +++++
.../waf-cross-answers/cross-answers-mips64.txt | 38 +++++
.../waf-cross-answers/cross-answers-powerpc.txt | 39 +++++
.../waf-cross-answers/cross-answers-powerpc64.txt | 39 +++++
.../waf-cross-answers/cross-answers-x86_64.txt | 38 +++++
24 files changed, 959 insertions(+), 15 deletions(-)
create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0001-waf-sanitize-and-fix-added-cross-answer.patch
create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0002-Adds-a-new-mode-to-samba-cross-compiling.patch
create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0003-waf-improve-readability-of-cross-answers-generated-b.patch
create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0004-build-make-wafsamba-CHECK_SIZEOF-cross-compile-frien.patch
create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0005-build-unify-and-fix-endian-tests.patch
create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0006-avoid-using-colon-in-the-checking-msg.patch
create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0007-waf-Fix-parsing-of-cross-answers-file-in-case-answer.patch
rename meta-networking/recipes-support/libldb/{libldb_1.1.17.bb => libldb_1.1.21.bb} (92%)
rename meta-networking/recipes-support/libtalloc/{libtalloc_2.1.1.bb => libtalloc_2.1.3.bb} (91%)
rename meta-networking/recipes-support/libtdb/{libtdb_1.3.0.bb => libtdb_1.3.7.bb} (87%)
rename meta-networking/recipes-support/libtevent/{libtevent_0.9.21.bb => libtevent_0.9.25.bb} (88%)
create mode 100644 meta-oe/files/waf-cross-answers/README
create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-aarch64.txt
create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-arm.txt
create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-i586.txt
create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-i686.txt
create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-mips.txt
create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-mips64.txt
create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-powerpc.txt
create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-powerpc64.txt
create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-x86_64.txtSignature · 1 line
1.9.1
PATCH v3 1/7 libtdb: upgrade to 1.3.7
From: Jackie Huang <[email protected]>
---
.../recipes-support/libtdb/{libtdb_1.3.0.bb => libtdb_1.3.7.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta-networking/recipes-support/libtdb/{libtdb_1.3.0.bb => libtdb_1.3.7.bb} (87%)meta-networking/recipes-support/libtdb/libtdb_1.3.7.bb renamed from meta-networking/recipes-support/libtdb/libtdb_1.3.0.bb +2 -2
@@ -8,8 +8,8 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/LGPL-3.0;md5=b SRC_URI = "http://samba.org/ftp/tdb/tdb-${PV}.tar.gz \ file://do-not-check-xsltproc-manpages.patch" -SRC_URI[md5sum] = "f18cd6afc4f5670edfe58f72d2665f94" -SRC_URI[sha256sum] = "04bee48d405ab7815810575a6e0cb364cc0eea6187b54b18c84e9c18a768ba20" +SRC_URI[md5sum] = "e3741a19c427255acd1e92c5e09d9df7" +SRC_URI[sha256sum] = "a64d95ca0cc06a28fed24c6e952aed7660cae04983108735d6bc30b925136412" S = "${WORKDIR}/tdb-${PV}"
Signature · 1 line
1.9.1
PATCH v3 2/7 libldb: upgrade to 1.1.21
In reply to [email protected]From: Jackie Huang <[email protected]>
---
.../recipes-support/libldb/{libldb_1.1.17.bb => libldb_1.1.21.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta-networking/recipes-support/libldb/{libldb_1.1.17.bb => libldb_1.1.21.bb} (92%)meta-networking/recipes-support/libldb/libldb_1.1.21.bb renamed from meta-networking/recipes-support/libldb/libldb_1.1.17.bb +2 -2
@@ -17,8 +17,8 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/LGPL-3.0;md5=b file://${COREBASE}/meta/files/common-licenses/LGPL-2.1;md5=1a6d268fd218675ffea8be556788b780 \ file://${COREBASE}/meta/files/common-licenses/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891" -SRC_URI[md5sum] = "7c2ab4e3f2a4186493aa06eabbc61cc0" -SRC_URI[sha256sum] = "b9a312aad19e9463716d257d8f2529fd7fc1a5ef24f6dcdc0c4a1930d7bdb6e6" +SRC_URI[md5sum] = "94ba09c7452fff68df3481686c56677e" +SRC_URI[sha256sum] = "267bbb7f278068eaf0de27adffda2e691a070a93c5c15ee27c828e87b4c7dbf1" inherit waf-samba
Signature · 1 line
1.9.1
PATCH v3 3/7 libtevent: upgrade to 0.9.25
In reply to [email protected]From: Jackie Huang <[email protected]>
---
.../libtevent/{libtevent_0.9.21.bb => libtevent_0.9.25.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta-networking/recipes-support/libtevent/{libtevent_0.9.21.bb => libtevent_0.9.25.bb} (88%)meta-networking/recipes-support/libtevent/libtevent_0.9.25.bb renamed from meta-networking/recipes-support/libtevent/libtevent_0.9.21.bb +2 -2
@@ -9,8 +9,8 @@ RDEPENDS_python-tevent = "python" SRC_URI = "http://samba.org/ftp/tevent/tevent-${PV}.tar.gz" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/LGPL-3.0;md5=bfccfe952269fff2b407dd11f2f3083b" -SRC_URI[md5sum] = "3d5a76c0a1b5f724842d785fd055633f" -SRC_URI[sha256sum] = "f2be7463573dab2d8210cb57fe7e7e2aeb323274cbdc865a6e29ddcfb977f0f4" +SRC_URI[md5sum] = "8d01a2076cb8cd30cab40393d27043df" +SRC_URI[sha256sum] = "fedeb0d55a11b3593b562ec09b32e44bd67619ed10e5fa10d1868adb1649c669" inherit waf-samba
Signature · 1 line
1.9.1
PATCH v3 4/7 libtalloc: upgrade to 2.1.3
In reply to [email protected]From: Jackie Huang <[email protected]>
---
.../libtalloc/{libtalloc_2.1.1.bb => libtalloc_2.1.3.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta-networking/recipes-support/libtalloc/{libtalloc_2.1.1.bb => libtalloc_2.1.3.bb} (91%)meta-networking/recipes-support/libtalloc/libtalloc_2.1.3.bb renamed from meta-networking/recipes-support/libtalloc/libtalloc_2.1.1.bb +2 -2
@@ -9,8 +9,8 @@ SRC_URI = "http://samba.org/ftp/talloc/talloc-${PV}.tar.gz" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/LGPL-3.0;md5=bfccfe952269fff2b407dd11f2f3083b \ file://${COREBASE}/meta/files/common-licenses/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891" -SRC_URI[md5sum] = "5dffb86414218a91864ed4453ba9be07" -SRC_URI[sha256sum] = "3e29ce6c3ba3c4f7c2d57ce8cf0fbc24c86618c519f2b2fb6a459025488b6174" +SRC_URI[md5sum] = "3e285de2228ae67ff0a0f5cec658f627" +SRC_URI[sha256sum] = "7aa5f75b22d4ef9c737b25515f2a2837ddc13014ff4ac6e58dd9e311f41f2cb0" inherit waf-samba
Signature · 1 line
1.9.1
PATCH v3 5/7 samba: fix the incorrect tmpfiles installed directory
In reply to [email protected]From: Jackie Huang <[email protected]>
- The tmpfiles are always installed in /usr/lib even for multilib.
- It makes no sense to have two tmpfiles in both /usr/lib/tmpfiles.d and /etc/tmpfiles.d, install it as one in /etc/tmpfiles.d.
--- meta-networking/recipes-connectivity/samba/samba_4.1.12.bb | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
meta-networking/recipes-connectivity/samba/samba_4.1.12.bb +3 -6
@@ -117,8 +117,9 @@ do_install_append() { -i ${D}${systemd_unitdir}/system/*.service install -d ${D}${sysconfdir}/tmpfiles.d - echo "d ${localstatedir}/log/samba 0755 root root -" \ - > ${D}${sysconfdir}/tmpfiles.d/99-${BPN}.conf + install -m644 packaging/systemd/samba.conf.tmp ${D}${sysconfdir}/tmpfiles.d/samba.conf + echo "d ${localstatedir}/log/samba 0755 root root -" \ + >> ${D}${sysconfdir}/tmpfiles.d/samba.conf elif ${@bb.utils.contains('PACKAGECONFIG', 'lsb', 'true', 'false', d)}; then install -d ${D}${sysconfdir}/init.d install -m 0755 packaging/LSB/samba.sh ${D}${sysconfdir}/init.d
@@ -135,9 +136,6 @@ do_install_append() { echo "127.0.0.1 localhost" > ${D}${sysconfdir}/samba/lmhosts install -m644 packaging/LSB/smb.conf ${D}${sysconfdir}/samba/smb.conf - install -d ${D}${libdir}/tmpfiles.d - install -m644 packaging/systemd/samba.conf.tmp ${D}${libdir}/tmpfiles.d/samba.conf - install -d ${D}${sysconfdir}/sysconfig/ install -m644 packaging/systemd/samba.sysconfig ${D}${sysconfdir}/sysconfig/samba }
@@ -281,7 +279,6 @@ FILES_libnss-winbind = "${libdir}/libnss_*${SOLIBS} \ " FILES_${PN} += "${base_libdir}/security/pam_smbpass.so \ - ${libdir}/tmpfiles.d/* \ " SMB_SERVICE="${systemd_unitdir}/system/nmb.service ${systemd_unitdir}/system/smb.service"
Signature · 1 line
1.9.1
PATCH v3 6/7 samba: backport patches for cross-compiling
In reply to [email protected]From: Jackie Huang <[email protected]>
* Adds a new mode for samba cross-compiling:
When both --cross-answers and --cross-execute are set, this means:
- Use cross-answers
- If answer is unknown, then instead of adding UNKNOWN to the cross-answers file and failing configure, the new mode runs cross-execute to determine the answer and adds that to the cross-answers file.
* And some fixes and improvements for cross-compiling.
--- ...1-waf-sanitize-and-fix-added-cross-answer.patch | 60 ++++++++ ...-Adds-a-new-mode-to-samba-cross-compiling.patch | 112 ++++++++++++++ ...-readability-of-cross-answers-generated-b.patch | 66 ++++++++ ...wafsamba-CHECK_SIZEOF-cross-compile-frien.patch | 72 +++++++++ .../0005-build-unify-and-fix-endian-tests.patch | 169 +++++++++++++++++++++ ...006-avoid-using-colon-in-the-checking-msg.patch | 32 ++++ ...sing-of-cross-answers-file-in-case-answer.patch | 36 +++++ .../recipes-connectivity/samba/samba_4.1.12.bb | 7 + 8 files changed, 554 insertions(+) create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0001-waf-sanitize-and-fix-added-cross-answer.patch create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0002-Adds-a-new-mode-to-samba-cross-compiling.patch create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0003-waf-improve-readability-of-cross-answers-generated-b.patch create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0004-build-make-wafsamba-CHECK_SIZEOF-cross-compile-frien.patch create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0005-build-unify-and-fix-endian-tests.patch create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0006-avoid-using-colon-in-the-checking-msg.patch create mode 100644 meta-networking/recipes-connectivity/samba/samba-4.1.12/0007-waf-Fix-parsing-of-cross-answers-file-in-case-answer.patch
meta-networking/recipes-connectivity/samba/samba-4.1.12/0001-waf-sanitize-and-fix-added-cross-answer.patch new file +60 -0
@@ -0,0 +1,60 @@ +From 1b32c7d7f148bcf2598799b21dfa3ba1ed824d32 Mon Sep 17 00:00:00 2001 +From: Uri Simchoni <[email protected]> +Date: Mon, 18 May 2015 21:12:06 +0300 +Subject: [PATCH 1/7] waf: sanitize and fix added cross answer + +When configuring samba for cross-compilation using the cross-answers +method, the function add_answer receives the standard output and exit code +of a configuration test and updates the cross-answers file accordingly. + +This patch sanitizes the standard output to conform to the cross-answers +file format - one line of output. It also adds a missing newline. + +(Note - at this point add_answer is only ever called with empty output +but this change is significant for the reminder of this patchset) + +Signed-off-by: Uri Simchoni <[email protected]> +Reviewed-by: Andrew Bartlett <[email protected]> +Reviewed-by: Alexander Bokovoy <[email protected]> + +Upstream-Status: Backport + +Signed-off-by: Jackie Huang <[email protected]> +--- + buildtools/wafsamba/samba_cross.py | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/buildtools/wafsamba/samba_cross.py b/buildtools/wafsamba/samba_cross.py +index 3838e34..fc1d78e 100644 +--- a/buildtools/wafsamba/samba_cross.py ++++ b/buildtools/wafsamba/samba_cross.py +@@ -19,6 +19,16 @@ def add_answer(ca_file, msg, answer): + except: + Logs.error("Unable to open cross-answers file %s" % ca_file) + sys.exit(1) ++ (retcode, retstring) = answer ++ # if retstring is more than one line then we probably ++ # don't care about its actual content (the tests should ++ # yield one-line output in order to comply with the cross-answer ++ # format) ++ retstring = retstring.strip() ++ if len(retstring.split('\n')) > 1: ++ retstring = '' ++ answer = (retcode, retstring) ++ + if answer == ANSWER_OK: + f.write('%s: OK\n' % msg) + elif answer == ANSWER_UNKNOWN: +@@ -26,8 +36,7 @@ def add_answer(ca_file, msg, answer): + elif answer == ANSWER_FAIL: + f.write('%s: FAIL\n' % msg) + else: +- (retcode, retstring) = answer +- f.write('%s: (%d, "%s")' % (msg, retcode, retstring)) ++ f.write('%s: (%d, "%s")\n' % (msg, retcode, retstring)) + f.close() + + +-- +1.9.1 +
meta-networking/recipes-connectivity/samba/samba-4.1.12/0002-Adds-a-new-mode-to-samba-cross-compiling.patch new file +112 -0
112 lines not on this page · raw message
meta-networking/recipes-connectivity/samba/samba-4.1.12/0003-waf-improve-readability-of-cross-answers-generated-b.patch new file +66 -0
66 lines not on this page · raw message
meta-networking/recipes-connectivity/samba/samba-4.1.12/0004-build-make-wafsamba-CHECK_SIZEOF-cross-compile-frien.patch new file +72 -0
72 lines not on this page · raw message
meta-networking/recipes-connectivity/samba/samba-4.1.12/0005-build-unify-and-fix-endian-tests.patch new file +169 -0
169 lines not on this page · raw message
meta-networking/recipes-connectivity/samba/samba-4.1.12/0006-avoid-using-colon-in-the-checking-msg.patch new file +32 -0
@@ -0,0 +1,32 @@ +From 5413f97290d3126262eb309ecbcf7769509f2a11 Mon Sep 17 00:00:00 2001 +From: Jackie Huang <[email protected]> +Date: Tue, 10 Nov 2015 00:48:35 -0500 +Subject: [PATCH 6/7] avoid using colon in the checking msg + +Upstream-Status: Pending + +colon is used as the separator when parse from +a answers file, the colon here makes it never +get the right answer. + +Signed-off-by: Jackie Huang <[email protected]> +--- + wscript_configure_system_mitkrb5 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/wscript_configure_system_mitkrb5 b/wscript_configure_system_mitkrb5 +index a62d00b..a2d89f0 100644 +--- a/wscript_configure_system_mitkrb5 ++++ b/wscript_configure_system_mitkrb5 +@@ -240,7 +240,7 @@ conf.CHECK_CODE(''' + ''', + 'HAVE_WRFILE_KEYTAB', + headers='krb5.h', lib='krb5', execute=True, +- msg="Checking whether the WRFILE:-keytab is supported"); ++ msg="Checking whether the WRFILE -keytab is supported"); + # Check for KRB5_DEPRECATED handling + conf.CHECK_CODE('''#define KRB5_DEPRECATED 1 + #include <krb5.h>''', +-- +1.9.1 +
meta-networking/recipes-connectivity/samba/samba-4.1.12/0007-waf-Fix-parsing-of-cross-answers-file-in-case-answer.patch new file +36 -0
@@ -0,0 +1,36 @@ +From 649c731526dc1473bd1804d2903d7559e63616da Mon Sep 17 00:00:00 2001 +From: Uri Simchoni <[email protected]> +Date: Mon, 4 May 2015 09:12:45 +0300 +Subject: [PATCH 7/7] waf: Fix parsing of cross-answers file in case answer includes a colon + +The answer provided in the cross-answers file may include a colon, +as in: +Checking uname version type: "#57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014" + +Signed-off-by: Uri Simchoni <[email protected]> +Reviewed-by: Andrew Bartlett <[email protected]> +Reviewed-by: Alexander Bokovoy <[email protected]> + +Upstream-Status: Backport + +Signed-off-by: Jackie Huang <[email protected]> +--- + buildtools/wafsamba/samba_cross.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/buildtools/wafsamba/samba_cross.py b/buildtools/wafsamba/samba_cross.py +index d1e7006..7961212 100644 +--- a/buildtools/wafsamba/samba_cross.py ++++ b/buildtools/wafsamba/samba_cross.py +@@ -54,7 +54,7 @@ def cross_answer(ca_file, msg): + if line == '' or line[0] == '#': + continue + if line.find(':') != -1: +- a = line.split(':') ++ a = line.split(':', 1) + thismsg = a[0].strip() + if thismsg != msg: + continue +-- +1.9.1 +
meta-networking/recipes-connectivity/samba/samba_4.1.12.bb +7 -0
@@ -34,6 +34,13 @@ SRC_URI = "${SAMBA_MIRROR}/stable/samba-${PV}.tar.gz \ file://19-systemd-daemon-is-contained-by-libsystemd.patch \ file://20-do-not-import-target-module-while-cross-compile.patch \ file://21-add-config-option-without-valgrind.patch \ + file://0001-waf-sanitize-and-fix-added-cross-answer.patch \ + file://0002-Adds-a-new-mode-to-samba-cross-compiling.patch \ + file://0003-waf-improve-readability-of-cross-answers-generated-b.patch \ + file://0004-build-make-wafsamba-CHECK_SIZEOF-cross-compile-frien.patch \ + file://0005-build-unify-and-fix-endian-tests.patch \ + file://0006-avoid-using-colon-in-the-checking-msg.patch \ + file://0007-waf-Fix-parsing-of-cross-answers-file-in-case-answer.patch \ " SRC_URI[md5sum] = "232016d7581a1ba11e991ec2674553c4"
Signature · 1 line
1.9.1
PATCH v3 7/7 waf-samba.bbclass: add cross-answers option and files
In reply to [email protected]From: Jackie Huang <[email protected]>
--cross-execute uses qemu to run cross-compiled binaries, it works fine for qemu supported targets, but it definitely will fail if the target is not supported by qemu. So we need to use the cross-answers option.
Added three methods and set 'answer' as default:
1. answers:
Only --cross-answers - try the cross-answers file, and if there's no corresponding answer, add to the file and mark the configure process as unfinished.
2. exec:
Only --cross-execute - get the answer from cross-execute, an emulator (qemu) is used to run cross-compiled binaries.
3. both:
Try the cross-answers file first, and if there is no corresponding answer, use cross-execute to get an answer, and add that answer to the file.
The cross files in are all generated by qemu when the 'both' mode is enabled, and are placed in a common directory LAYERDIR/files/waf-cross-answers which is set as WAF_CROSS_ANSWERS_PATH in layer.conf of meta-oe, so that we don't have to put copies of them for each package (there are 5 packages inerit waf-samba for now)
--- meta-oe/classes/waf-samba.bbclass | 43 +++++++++++++++++++++- meta-oe/conf/layer.conf | 1 + meta-oe/files/waf-cross-answers/README | 3 ++ .../waf-cross-answers/cross-answers-aarch64.txt | 38 +++++++++++++++++++ .../files/waf-cross-answers/cross-answers-arm.txt | 39 ++++++++++++++++++++ .../files/waf-cross-answers/cross-answers-i586.txt | 39 ++++++++++++++++++++ .../files/waf-cross-answers/cross-answers-i686.txt | 39 ++++++++++++++++++++ .../files/waf-cross-answers/cross-answers-mips.txt | 39 ++++++++++++++++++++ .../waf-cross-answers/cross-answers-mips64.txt | 38 +++++++++++++++++++ .../waf-cross-answers/cross-answers-powerpc.txt | 39 ++++++++++++++++++++ .../waf-cross-answers/cross-answers-powerpc64.txt | 39 ++++++++++++++++++++ .../waf-cross-answers/cross-answers-x86_64.txt | 38 +++++++++++++++++++ 12 files changed, 394 insertions(+), 1 deletion(-) create mode 100644 meta-oe/files/waf-cross-answers/README create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-aarch64.txt create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-arm.txt create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-i586.txt create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-i686.txt create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-mips.txt create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-mips64.txt create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-powerpc.txt create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-powerpc64.txt create mode 100644 meta-oe/files/waf-cross-answers/cross-answers-x86_64.txt
meta-oe/classes/waf-samba.bbclass +42 -1
@@ -20,7 +20,38 @@ CONFIGUREOPTS = " --prefix=${prefix} \ --mandir=${mandir} \ " +# Three methods for waf cross compile: +# 1. answers: +# Only --cross-answers - try the cross-answers file, and if +# there's no corresponding answer, add to the file and mark +# the configure process as unfinished. +# 2. exec: +# Only --cross-execute - get the answer from cross-execute, +# an emulator (qemu) is used to run cross-compiled binaries. +# 3. both: +# (notes: not supported in lower version of some packages, +# please check buildtools/wafsamba/samba_cross.py in the +# package source) +# Try the cross-answers file first, and if there is no +# corresponding answer, use cross-execute to get an answer, +# and add that answer to the file. +# +# The first one is preferred since it may fail with 2 or 3 if +# the target board is not suported by qemu, but we can use 2 or 3 +# to help generate the cross answer when adding new board support. +CROSS_METHOD ?= "answer" + do_configure() { + + # Prepare the cross-answers file + CROSS_ANSWERS="${B}/cross-answers-${TARGET_ARCH}.txt" + if [ -e ${CROSS_ANSWERS} ]; then + rm -f ${CROSS_ANSWERS} + fi + echo 'Checking uname machine type: "${TARGET_ARCH}"' >> ${CROSS_ANSWERS} + echo 'Checking uname release type: "${OLDEST_KERNEL}"' >> ${CROSS_ANSWERS} + cat ${WAF_CROSS_ANSWERS_PATH}/cross-answers-${TARGET_ARCH}.txt >> ${CROSS_ANSWERS} + qemu_binary="${@qemu_target_binary(d)}" if [ "${qemu_binary}" = "qemu-allarch" ]; then qemu_binary="qemuwrapper"
@@ -42,7 +73,17 @@ do_configure() { export STAGING_INCDIR=${STAGING_INCDIR} export PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} - ./configure ${CONFIGUREOPTS} ${EXTRA_OECONF} --cross-compile --cross-execute="${CROSS_EXEC}" + CONFIG_CMD="./configure ${CONFIGUREOPTS} ${EXTRA_OECONF} --cross-compile" + if [ "${CROSS_METHOD}" = "answer" ]; then + ${CONFIG_CMD} --cross-answers="${CROSS_ANSWERS}" + elif [ "${CROSS_METHOD}" = "exec" ]; then + ${CONFIG_CMD} --cross-exec="${CROSS_EXEC}" + elif [ "${CROSS_METHOD}" = "both" ]; then + ${CONFIG_CMD} --cross-answers="${CROSS_ANSWERS}" --cross-exec="${CROSS_EXEC}" + else + echo "ERROR: ${CROSS_METHOD} is not valid for cross-compile!" + exit 1 + fi } do_install() {
meta-oe/conf/layer.conf +1 -0
@@ -30,6 +30,7 @@ LAYERVERSION_openembedded-layer = "1" LAYERDEPENDS_openembedded-layer = "core" LICENSE_PATH += "${LAYERDIR}/licenses" +WAF_CROSS_ANSWERS_PATH = "${LAYERDIR}/files/waf-cross-answers" SIGGEN_EXCLUDERECIPES_ABISAFE += " \ mplayer-common \
meta-oe/files/waf-cross-answers/README new file +3 -0
@@ -0,0 +1,3 @@ +The files in this directory are cross answers files +used by waf-samba.bbaclss, please see waf-samba.bbaclss +for details about how they are used.
meta-oe/files/waf-cross-answers/cross-answers-aarch64.txt new file +38 -0
@@ -0,0 +1,38 @@ +Checking uname sysname type: "Linux" +Checking uname version type: "# Wed May 20 10:34:39 UTC 2015" +Checking simple C program: "hello world" +rpath library support: OK +-Wl,--version-script support: OK +Checking getconf LFS_CFLAGS: NO +Checking correct behavior of strtoll: NO +Checking for working strptime: OK +Checking for C99 vsnprintf: "1" +Checking for HAVE_SHARED_MMAP: OK +Checking for HAVE_MREMAP: OK +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_IFACE_GETIFADDRS: NO +Checking for HAVE_IFACE_IFCONF: NO +Checking for HAVE_IFACE_IFREQ: NO +Checking for large file support without additional flags: OK +Checking for HAVE_INCOHERENT_MMAP: NO +Checking value of NSIG: "65" +Checking value of _NSIG: "65" +Checking value of SIGRTMAX: "64" +Checking value of SIGRTMIN: "34" +Checking whether the WRFILE -keytab is supported: OK +Checking for kernel change notify support: OK +Checking for Linux kernel oplocks: OK +Checking for kernel share modes: OK +Checking whether POSIX capabilities are available: OK +Checking if can we convert from CP850 to UCS-2LE: OK +Checking if can we convert from UTF-8 to UCS-2LE: OK +vfs_fileid checking for statfs() and struct statfs.f_fsid: OK +Checking whether we can use Linux thread-specific credentials: OK +Checking whether fcntl locking is available: OK +Checking for the maximum value of the 'time_t' type: OK +Checking whether the realpath function allows a NULL argument: OK +Checking for ftruncate extend: OK +getcwd takes a NULL argument: OK +Checking for small off_t: NO +Checking whether blkcnt_t is 32 bit: NO +Checking whether blkcnt_t is 64 bit: OK
meta-oe/files/waf-cross-answers/cross-answers-arm.txt new file +39 -0
@@ -0,0 +1,39 @@ +Checking uname sysname type: "Linux" +Checking uname version type: "# Wed May 20 10:34:39 UTC 2015" +Checking simple C program: "hello world" +rpath library support: OK +-Wl,--version-script support: OK +Checking getconf LFS_CFLAGS: NO +Checking correct behavior of strtoll: NO +Checking for working strptime: OK +Checking for C99 vsnprintf: "1" +Checking for HAVE_SHARED_MMAP: OK +Checking for HAVE_MREMAP: OK +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_IFACE_GETIFADDRS: NO +Checking for HAVE_IFACE_IFCONF: NO +Checking for HAVE_IFACE_IFREQ: NO +Checking for large file support without additional flags: NO +Checking for -D_FILE_OFFSET_BITS=64: OK +Checking for HAVE_INCOHERENT_MMAP: NO +Checking value of NSIG: "65" +Checking value of _NSIG: "65" +Checking value of SIGRTMAX: "64" +Checking value of SIGRTMIN: "34" +Checking whether the WRFILE -keytab is supported: OK +Checking for kernel change notify support: OK +Checking for Linux kernel oplocks: OK +Checking for kernel share modes: OK +Checking whether POSIX capabilities are available: OK +Checking if can we convert from CP850 to UCS-2LE: OK +Checking if can we convert from UTF-8 to UCS-2LE: OK +vfs_fileid checking for statfs() and struct statfs.f_fsid: OK +Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK +Checking whether fcntl locking is available: OK +Checking for the maximum value of the 'time_t' type: NO +Checking whether the realpath function allows a NULL argument: OK +Checking for ftruncate extend: OK +getcwd takes a NULL argument: OK +Checking for small off_t: NO +Checking whether blkcnt_t is 32 bit: NO +Checking whether blkcnt_t is 64 bit: OK
meta-oe/files/waf-cross-answers/cross-answers-i586.txt new file +39 -0
@@ -0,0 +1,39 @@ +Checking uname sysname type: "Linux" +Checking uname version type: "# Wed May 20 10:34:39 UTC 2015" +Checking simple C program: "hello world" +rpath library support: OK +-Wl,--version-script support: OK +Checking getconf LFS_CFLAGS: NO +Checking correct behavior of strtoll: NO +Checking for working strptime: OK +Checking for C99 vsnprintf: "1" +Checking for HAVE_SHARED_MMAP: OK +Checking for HAVE_MREMAP: OK +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_IFACE_GETIFADDRS: NO +Checking for HAVE_IFACE_IFCONF: NO +Checking for HAVE_IFACE_IFREQ: NO +Checking for large file support without additional flags: NO +Checking for -D_FILE_OFFSET_BITS=64: OK +Checking for HAVE_INCOHERENT_MMAP: NO +Checking value of NSIG: "65" +Checking value of _NSIG: "65" +Checking value of SIGRTMAX: "64" +Checking value of SIGRTMIN: "34" +Checking whether the WRFILE -keytab is supported: OK +Checking for kernel change notify support: OK +Checking for Linux kernel oplocks: OK +Checking for kernel share modes: OK +Checking whether POSIX capabilities are available: OK +Checking if can we convert from CP850 to UCS-2LE: OK +Checking if can we convert from UTF-8 to UCS-2LE: OK +vfs_fileid checking for statfs() and struct statfs.f_fsid: OK +Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK +Checking whether fcntl locking is available: OK +Checking for the maximum value of the 'time_t' type: NO +Checking whether the realpath function allows a NULL argument: OK +Checking for ftruncate extend: OK +getcwd takes a NULL argument: OK +Checking for small off_t: NO +Checking whether blkcnt_t is 32 bit: NO +Checking whether blkcnt_t is 64 bit: OK
meta-oe/files/waf-cross-answers/cross-answers-i686.txt new file +39 -0
@@ -0,0 +1,39 @@ +Checking uname sysname type: "Linux" +Checking uname version type: "# Wed May 20 10:34:39 UTC 2015" +Checking simple C program: "hello world" +rpath library support: OK +-Wl,--version-script support: OK +Checking getconf LFS_CFLAGS: NO +Checking correct behavior of strtoll: NO +Checking for working strptime: OK +Checking for C99 vsnprintf: "1" +Checking for HAVE_SHARED_MMAP: OK +Checking for HAVE_MREMAP: OK +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_IFACE_GETIFADDRS: NO +Checking for HAVE_IFACE_IFCONF: NO +Checking for HAVE_IFACE_IFREQ: NO +Checking for large file support without additional flags: NO +Checking for -D_FILE_OFFSET_BITS=64: OK +Checking for HAVE_INCOHERENT_MMAP: NO +Checking value of NSIG: "65" +Checking value of _NSIG: "65" +Checking value of SIGRTMAX: "64" +Checking value of SIGRTMIN: "34" +Checking whether the WRFILE -keytab is supported: OK +Checking for kernel change notify support: OK +Checking for Linux kernel oplocks: OK +Checking for kernel share modes: OK +Checking whether POSIX capabilities are available: OK +Checking if can we convert from CP850 to UCS-2LE: OK +Checking if can we convert from UTF-8 to UCS-2LE: OK +vfs_fileid checking for statfs() and struct statfs.f_fsid: OK +Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK +Checking whether fcntl locking is available: OK +Checking for the maximum value of the 'time_t' type: NO +Checking whether the realpath function allows a NULL argument: OK +Checking for ftruncate extend: OK +getcwd takes a NULL argument: OK +Checking for small off_t: NO +Checking whether blkcnt_t is 32 bit: NO +Checking whether blkcnt_t is 64 bit: OK
meta-oe/files/waf-cross-answers/cross-answers-mips.txt new file +39 -0
@@ -0,0 +1,39 @@ +Checking uname sysname type: "Linux" +Checking uname version type: "# Wed May 20 10:34:39 UTC 2015" +Checking simple C program: "hello world" +rpath library support: OK +-Wl,--version-script support: OK +Checking getconf LFS_CFLAGS: NO +Checking correct behavior of strtoll: NO +Checking for working strptime: OK +Checking for C99 vsnprintf: "1" +Checking for HAVE_SHARED_MMAP: OK +Checking for HAVE_MREMAP: OK +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_IFACE_GETIFADDRS: NO +Checking for HAVE_IFACE_IFCONF: NO +Checking for HAVE_IFACE_IFREQ: NO +Checking for large file support without additional flags: NO +Checking for -D_FILE_OFFSET_BITS=64: OK +Checking for HAVE_INCOHERENT_MMAP: NO +Checking value of NSIG: "128" +Checking value of _NSIG: "128" +Checking value of SIGRTMAX: "127" +Checking value of SIGRTMIN: "34" +Checking whether the WRFILE -keytab is supported: OK +Checking for kernel change notify support: OK +Checking for Linux kernel oplocks: OK +Checking for kernel share modes: OK +Checking whether POSIX capabilities are available: OK +Checking if can we convert from CP850 to UCS-2LE: OK +Checking if can we convert from UTF-8 to UCS-2LE: OK +vfs_fileid checking for statfs() and struct statfs.f_fsid: OK +Checking whether we can use Linux thread-specific credentials: OK +Checking whether fcntl locking is available: OK +Checking for the maximum value of the 'time_t' type: NO +Checking whether the realpath function allows a NULL argument: OK +Checking for ftruncate extend: OK +getcwd takes a NULL argument: OK +Checking for small off_t: NO +Checking whether blkcnt_t is 32 bit: NO +Checking whether blkcnt_t is 64 bit: OK
meta-oe/files/waf-cross-answers/cross-answers-mips64.txt new file +38 -0
@@ -0,0 +1,38 @@ +Checking uname sysname type: "Linux" +Checking uname version type: "# Wed May 20 10:34:39 UTC 2015" +Checking simple C program: "hello world" +rpath library support: OK +-Wl,--version-script support: OK +Checking getconf LFS_CFLAGS: NO +Checking correct behavior of strtoll: NO +Checking for working strptime: OK +Checking for C99 vsnprintf: "1" +Checking for HAVE_SHARED_MMAP: OK +Checking for HAVE_MREMAP: OK +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_IFACE_GETIFADDRS: NO +Checking for HAVE_IFACE_IFCONF: NO +Checking for HAVE_IFACE_IFREQ: NO +Checking for large file support without additional flags: OK +Checking for HAVE_INCOHERENT_MMAP: OK +Checking value of NSIG: "128" +Checking value of _NSIG: "128" +Checking value of SIGRTMAX: "127" +Checking value of SIGRTMIN: "34" +Checking whether the WRFILE -keytab is supported: OK +Checking for kernel change notify support: OK +Checking for Linux kernel oplocks: OK +Checking for kernel share modes: OK +Checking whether POSIX capabilities are available: OK +Checking if can we convert from CP850 to UCS-2LE: OK +Checking if can we convert from UTF-8 to UCS-2LE: OK +vfs_fileid checking for statfs() and struct statfs.f_fsid: OK +Checking whether we can use Linux thread-specific credentials: OK +Checking whether fcntl locking is available: OK +Checking for the maximum value of the 'time_t' type: OK +Checking whether the realpath function allows a NULL argument: OK +Checking for ftruncate extend: OK +getcwd takes a NULL argument: OK +Checking for small off_t: NO +Checking whether blkcnt_t is 32 bit: NO +Checking whether blkcnt_t is 64 bit: OK
meta-oe/files/waf-cross-answers/cross-answers-powerpc.txt new file +39 -0
@@ -0,0 +1,39 @@ +Checking uname sysname type: "Linux" +Checking uname version type: "# Wed May 20 10:34:39 UTC 2015" +Checking simple C program: "hello world" +rpath library support: OK +-Wl,--version-script support: OK +Checking getconf LFS_CFLAGS: NO +Checking correct behavior of strtoll: NO +Checking for working strptime: OK +Checking for C99 vsnprintf: "1" +Checking for HAVE_SHARED_MMAP: OK +Checking for HAVE_MREMAP: OK +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_IFACE_GETIFADDRS: NO +Checking for HAVE_IFACE_IFCONF: NO +Checking for HAVE_IFACE_IFREQ: NO +Checking for large file support without additional flags: NO +Checking for -D_FILE_OFFSET_BITS=64: OK +Checking for HAVE_INCOHERENT_MMAP: NO +Checking value of NSIG: "65" +Checking value of _NSIG: "65" +Checking value of SIGRTMAX: "64" +Checking value of SIGRTMIN: "34" +Checking whether the WRFILE -keytab is supported: OK +Checking for kernel change notify support: OK +Checking for Linux kernel oplocks: OK +Checking for kernel share modes: OK +Checking whether POSIX capabilities are available: OK +Checking if can we convert from CP850 to UCS-2LE: OK +Checking if can we convert from UTF-8 to UCS-2LE: OK +vfs_fileid checking for statfs() and struct statfs.f_fsid: OK +Checking whether we can use Linux thread-specific credentials: OK +Checking whether fcntl locking is available: OK +Checking for the maximum value of the 'time_t' type: NO +Checking whether the realpath function allows a NULL argument: OK +Checking for ftruncate extend: OK +getcwd takes a NULL argument: OK +Checking for small off_t: NO +Checking whether blkcnt_t is 32 bit: NO +Checking whether blkcnt_t is 64 bit: OK
meta-oe/files/waf-cross-answers/cross-answers-powerpc64.txt new file +39 -0
@@ -0,0 +1,39 @@ +Checking uname sysname type: "Linux" +Checking uname version type: "# Wed May 20 10:34:39 UTC 2015" +Checking simple C program: "hello world" +rpath library support: OK +-Wl,--version-script support: OK +Checking getconf LFS_CFLAGS: NO +Checking correct behavior of strtoll: NO +Checking for working strptime: OK +Checking for C99 vsnprintf: "1" +Checking for HAVE_SHARED_MMAP: OK +Checking for HAVE_MREMAP: OK +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_IFACE_GETIFADDRS: NO +Checking for HAVE_IFACE_IFCONF: NO +Checking for HAVE_IFACE_IFREQ: NO +Checking for large file support without additional flags: OK +Checking for HAVE_INCOHERENT_MMAP: NO +Checking value of NSIG: "65" +Checking value of _NSIG: "65" +Checking value of SIGRTMAX: "64" +Checking value of SIGRTMIN: "34" +Checking whether the WRFILE -keytab is supported: OK +Checking for kernel change notify support: OK +Checking for Linux kernel oplocks: OK +Checking for kernel share modes: OK +Checking whether POSIX capabilities are available: OK +Checking if can we convert from CP850 to UCS-2LE: (255, "") +Checking if can we convert from IBM850 to UCS-2LE: (255, "") +Checking if can we convert from UTF-8 to UCS-2LE: OK +vfs_fileid checking for statfs() and struct statfs.f_fsid: OK +Checking whether we can use Linux thread-specific credentials: OK +Checking whether fcntl locking is available: OK +Checking for the maximum value of the 'time_t' type: OK +Checking whether the realpath function allows a NULL argument: OK +Checking for ftruncate extend: OK +getcwd takes a NULL argument: OK +Checking for small off_t: NO +Checking whether blkcnt_t is 32 bit: NO +Checking whether blkcnt_t is 64 bit: OK
meta-oe/files/waf-cross-answers/cross-answers-x86_64.txt new file +38 -0
@@ -0,0 +1,38 @@ +Checking uname sysname type: "Linux" +Checking uname version type: "# Wed May 20 10:34:39 UTC 2015" +Checking simple C program: "hello world" +rpath library support: OK +-Wl,--version-script support: OK +Checking getconf LFS_CFLAGS: NO +Checking correct behavior of strtoll: NO +Checking for working strptime: OK +Checking for C99 vsnprintf: "1" +Checking for HAVE_SHARED_MMAP: OK +Checking for HAVE_MREMAP: OK +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_IFACE_GETIFADDRS: NO +Checking for HAVE_IFACE_IFCONF: NO +Checking for HAVE_IFACE_IFREQ: NO +Checking for large file support without additional flags: OK +Checking for HAVE_INCOHERENT_MMAP: NO +Checking value of NSIG: "65" +Checking value of _NSIG: "65" +Checking value of SIGRTMAX: "64" +Checking value of SIGRTMIN: "34" +Checking whether the WRFILE -keytab is supported: OK +Checking for kernel change notify support: OK +Checking for Linux kernel oplocks: OK +Checking for kernel share modes: OK +Checking whether POSIX capabilities are available: OK +Checking if can we convert from CP850 to UCS-2LE: OK +Checking if can we convert from UTF-8 to UCS-2LE: OK +vfs_fileid checking for statfs() and struct statfs.f_fsid: OK +Checking whether we can use Linux thread-specific credentials: OK +Checking whether fcntl locking is available: OK +Checking for the maximum value of the 'time_t' type: OK +Checking whether the realpath function allows a NULL argument: OK +Checking for ftruncate extend: OK +getcwd takes a NULL argument: OK +Checking for small off_t: NO +Checking whether blkcnt_t is 32 bit: NO +Checking whether blkcnt_t is 64 bit: OK
Signature · 1 line
1.9.1