On 2017/10/3 18:14, Andrew Goodbody wrote:
-----Original Message-----
From: Fupan Li <[email protected]>
The patch recipes-core/openjdk/patches-openjdk-8/openjdk8-fix-adlc-
flags.patch
had tried to fix this issue, and it tried to filter out the
TARGET_FLAGS/TARGET_
CXXFLGAS, but for the flags such as "-fno-lifetime-dse" was added to
CFLAGS/CXXFLAGS,
directly, thus that patch failed to filter it out.
To fix this issue, it's better to add those GCC version specific flags to
BUILD_CFLAGS/
BUILD_CXXFLAGS and TARGET_CFLAGS/TARGET_CXXFLAGS separatedly,
thus that patch can work
as expected.
Signed-off-by: Fupan Li <[email protected]>
---
recipes-core/openjdk/openjdk-8-common.inc | 36
++++++++++++++++++++-----------
1 file changed, 24 insertions(+), 12 deletions(-)
diff --git a/recipes-core/openjdk/openjdk-8-common.inc b/recipes-
core/openjdk/openjdk-8-common.inc
index 83828e1..c609232 100644
--- a/recipes-core/openjdk/openjdk-8-common.inc
+++ b/recipes-core/openjdk/openjdk-8-common.inc
@@ -231,27 +231,39 @@ FLAGS_GCC7 = "-fno-lifetime-dse -fno-delete-null-
pointer-checks"
# version is and only add the flags that are appropriate for that GCC
# version.
-def version_specific_cflags(d):
+def version_specific_cflags(d, toolchain):
extraflags = None
version = None
- if bb.data.inherits_class('native', d):
- from subprocess import Popen, PIPE
+ from subprocess import Popen, PIPE
+ cmd = d.expand('%s -dumpversion' % toolchain ).split()
+ cc = Popen(cmd, stdout=PIPE, stderr=PIPE)
+ version = cc.communicate()[0].decode('utf-8')[0]
- cmd = d.expand('${CC} -dumpversion').split()
- cc = Popen(cmd, stdout=PIPE, stderr=PIPE)
- version = cc.communicate()[0].decode('utf-8')[0]
+ if version.isdigit():
+ extraflags = d.getVar('FLAGS_GCC%d' % int(version), True) or ''
+ return extraflags
+ return ''
+
+python __anonymous() {
+ if bb.data.inherits_class('native', d):
+ toolchain = d.getVar('CC', True)
+ extraflags = version_specific_cflags(d, toolchain)
+ d.appendVar("CFLAGS", ' ' + extraflags)
+ d.appendVar("CXXFLAGS", ' ' + extraflags)
else:
# in the cross case, trust that GCCVERSION is correct. This won't
# work if the native toolchain is Clang, but as of this writing that
# doesn't work anyway.
version = d.getVar('GCCVERSION', expand=True)[0]
-
- if version.isdigit():
extraflags = d.getVar('FLAGS_GCC%d' % int(version), True) or ''
- return extraflags
- return ''
+ d.appendVar("TARGET_CFLAGS", ' ' + extraflags)
+ d.appendVar("TARGET_CXXFLAGS", ' ' + extraflags)
+
+ toolchain = d.getVar('BUILD_CC', True)
+ extraflags = version_specific_cflags(d, toolchain)
+ d.appendVar("BUILD_CFLAGS", ' ' + extraflags)
+ d.appendVar("BUILD_CXXFLAGS", ' ' + extraflags)
+}
-CFLAGS_append = " ${@version_specific_cflags(d)}"
-CXXFLAGS_append = " ${@version_specific_cflags(d)}"
CXX_append = " -std=gnu++98"
--
2.11.0
Hi, Andrew
Can you try this latest patch I attached?
Thanks!
Fupan
I get the following build failure with the above patch now, backing it out
makes the build work OK.
ERROR:
/home/andrew/src/camol3/camol/layers/meta-java/recipes-core/openjdk/openjre-8_102b14.bb:
Error executing a python function in <code>:
The stack trace of python calls that resulted in this exception/failure was:
File: '<code>', lineno: 13, function: <module>
0009:__anon_35__home_andrew_src_camol3_camol_layers_openembedded_core_meta_classes_devshell_bbclass(d)
0010:__anon_101__home_andrew_src_camol3_camol_layers_openembedded_core_meta_classes_sstate_bbclass(d)
0011:__anon_313__home_andrew_src_camol3_camol_layers_openembedded_core_meta_classes_package_ipk_bbclass(d)
0012:__anon_154__home_andrew_src_camol3_camol_layers_openembedded_core_meta_classes_siteinfo_bbclass(d)
***
0013:__anon_267__home_andrew_src_camol3_camol_layers_meta_java_recipes_core_openjdk_openjdk_8_common_inc(d)
0014:__anon_108__home_andrew_src_camol3_camol_layers_openembedded_core_meta_classes_update_alternatives_bbclass(d)
File:
'/home/andrew/src/camol3/camol/layers/meta-java/recipes-core/openjdk/openjdk-8-common.inc',
lineno: 260, function:
__anon_267__home_andrew_src_camol3_camol_layers_meta_java_recipes_core_openjdk_openjdk_8_common_inc
0256: # work if the native toolchain is Clang, but as of this
writing that
0257: # doesn't work anyway.
0258: version = d.getVar('GCCVERSION', expand=True)[0]
0259: extraflags = d.getVar('FLAGS_GCC%d' % int(version), True) or
''
*** 0260: d.appendVar("TARGET_CFLAGS", ' ' + extraflags)
0261: d.appendVar("TARGET_CXXFLAGS", ' ' + extraflags)
0262:
0263: toolchain = d.getVar('BUILD_CC', True)
0264: extraflags = version_specific_cflags(d, toolchain)
Exception: ValueError: invalid literal for int() with base 10: 'l'
ERROR: Failed to parse recipe:
/home/andrew/src/camol3/camol/layers/meta-java/recipes-core/openjdk/openjre-8_102b14.bb
ERROR:
/home/andrew/src/camol3/camol/layers/meta-java/recipes-core/openjdk/openjdk-8_102b14.bb:
Error executing a python function in <code>:
The stack trace of python calls that resulted in this exception/failure was:
File: '<code>', lineno: 13, function: <module>
0009:__anon_35__home_andrew_src_camol3_camol_layers_openembedded_core_meta_classes_devshell_bbclass(d)
0010:__anon_101__home_andrew_src_camol3_camol_layers_openembedded_core_meta_classes_sstate_bbclass(d)
0011:__anon_313__home_andrew_src_camol3_camol_layers_openembedded_core_meta_classes_package_ipk_bbclass(d)
0012:__anon_154__home_andrew_src_camol3_camol_layers_openembedded_core_meta_classes_siteinfo_bbclass(d)
***
0013:__anon_267__home_andrew_src_camol3_camol_layers_meta_java_recipes_core_openjdk_openjdk_8_common_inc(d)
0014:__anon_108__home_andrew_src_camol3_camol_layers_openembedded_core_meta_classes_update_alternatives_bbclass(d)
File:
'/home/andrew/src/camol3/camol/layers/meta-java/recipes-core/openjdk/openjdk-8-common.inc',
lineno: 260, function:
__anon_267__home_andrew_src_camol3_camol_layers_meta_java_recipes_core_openjdk_openjdk_8_common_inc
0256: # work if the native toolchain is Clang, but as of this
writing that
0257: # doesn't work anyway.
0258: version = d.getVar('GCCVERSION', expand=True)[0]
0259: extraflags = d.getVar('FLAGS_GCC%d' % int(version), True) or
''
*** 0260: d.appendVar("TARGET_CFLAGS", ' ' + extraflags)
0261: d.appendVar("TARGET_CXXFLAGS", ' ' + extraflags)
0262:
0263: toolchain = d.getVar('BUILD_CC', True)
0264: extraflags = version_specific_cflags(d, toolchain)
Exception: ValueError: invalid literal for int() with base 10: 'l'
Andrew
From 78929ea09f37069e7826b06bf214feb9a2b1a310 Mon Sep 17 00:00:00 2001
From: Fupan Li <[email protected]>
Date: Fri, 29 Sep 2017 19:00:31 -0700
Subject: [PATCH] openjdk-8-common: Fix the issue of building failed adlc on
host with gcc < 6
The patch recipes-core/openjdk/patches-openjdk-8/openjdk8-fix-adlc-flags.patch
had tried to fix this issue, and it tried to filter out the TARGET_FLAGS/TARGET_
CXXFLGAS, but for the flags such as "-fno-lifetime-dse" was added to
CFLAGS/CXXFLAGS,
directly, thus that patch failed to filter it out.
To fix this issue, it's better to add those GCC version specific flags to
BUILD_CFLAGS/
BUILD_CXXFLAGS and TARGET_CFLAGS/TARGET_CXXFLAGS separatedly, thus that patch
can work
as expected.
Signed-off-by: Fupan Li <[email protected]>
---
recipes-core/openjdk/openjdk-8-common.inc | 39 ++++++++++++++++++++-----------
1 file changed, 26 insertions(+), 13 deletions(-)
diff --git a/recipes-core/openjdk/openjdk-8-common.inc
b/recipes-core/openjdk/openjdk-8-common.inc
index 83828e1..be35bfe 100644
--- a/recipes-core/openjdk/openjdk-8-common.inc
+++ b/recipes-core/openjdk/openjdk-8-common.inc
@@ -231,27 +231,40 @@ FLAGS_GCC7 = "-fno-lifetime-dse
-fno-delete-null-pointer-checks"
# version is and only add the flags that are appropriate for that GCC
# version.
-def version_specific_cflags(d):
+def version_specific_cflags(d, toolchain):
extraflags = None
version = None
- if bb.data.inherits_class('native', d):
- from subprocess import Popen, PIPE
+ from subprocess import Popen, PIPE
+ cmd = d.expand('%s -dumpversion' % toolchain ).split()
+ cc = Popen(cmd, stdout=PIPE, stderr=PIPE)
+ version = cc.communicate()[0].decode('utf-8')[0]
- cmd = d.expand('${CC} -dumpversion').split()
- cc = Popen(cmd, stdout=PIPE, stderr=PIPE)
- version = cc.communicate()[0].decode('utf-8')[0]
+ if version.isdigit():
+ extraflags = d.getVar('FLAGS_GCC%d' % int(version), True) or ''
+ return extraflags
+ return ''
+
+python __anonymous() {
+ if bb.data.inherits_class('native', d):
+ toolchain = d.getVar('CC', True)
+ extraflags = version_specific_cflags(d, toolchain)
+ d.appendVar("CFLAGS", ' ' + extraflags)
+ d.appendVar("CXXFLAGS", ' ' + extraflags)
else:
# in the cross case, trust that GCCVERSION is correct. This won't
# work if the native toolchain is Clang, but as of this writing that
# doesn't work anyway.
version = d.getVar('GCCVERSION', expand=True)[0]
+ if version.isdigit():
+ extraflags = d.getVar('FLAGS_GCC%d' % int(version), True) or ''
+ d.appendVar("TARGET_CFLAGS", ' ' + extraflags)
+ d.appendVar("TARGET_CXXFLAGS", ' ' + extraflags)
+
+ toolchain = d.getVar('BUILD_CC', True)
+ extraflags = version_specific_cflags(d, toolchain)
+ d.appendVar("BUILD_CFLAGS", ' ' + extraflags)
+ d.appendVar("BUILD_CXXFLAGS", ' ' + extraflags)
+}
- if version.isdigit():
- extraflags = d.getVar('FLAGS_GCC%d' % int(version), True) or ''
- return extraflags
- return ''
-
-CFLAGS_append = " ${@version_specific_cflags(d)}"
-CXXFLAGS_append = " ${@version_specific_cflags(d)}"
CXX_append = " -std=gnu++98"
--
2.11.0
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core