> -----Original Message----- > From: Fupan Li <fupan...@windriver.com> > > 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 <fupan...@windriver.com> > --- > 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
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 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core