* [PATCH v2] uninative: rebuild uninative for gcc 4.8 and 4.9
@ 2016-10-27 7:10 Ed Bartosh
2016-10-31 20:11 ` Burton, Ross
0 siblings, 1 reply; 7+ messages in thread
From: Ed Bartosh @ 2016-10-27 7:10 UTC (permalink / raw)
To: openembedded-core
Some c++ libraries fail to build if uninative is built
with gcc 5.x and host gcc version is either 4.8 or 4.9.
The issue should be solved by making separate uninative sstate
directory structure sstate-cache/universal-<gcc version> for host gcc
versions 4.8 and 4.9. This causes rebuilds of uninative if host gcc
is either 4.8 or 4.9 and it doesn't match gcc version used to build
uninative.
[YOCTO #10441]
Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
meta/classes/uninative.bbclass | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.bbclass
index 89cec07..45f9262 100644
--- a/meta/classes/uninative.bbclass
+++ b/meta/classes/uninative.bbclass
@@ -95,11 +95,25 @@ python uninative_event_enable() {
enable_uninative(d)
}
+def gcc_version(d):
+ compiler = d.getVar("BUILD_CC", True)
+ retval, output = oe.utils.getstatusoutput("%s --version" % compiler)
+ if retval:
+ bb.fatal("Error running %s --version: %s" % (compiler, output))
+
+ import re
+ match = re.match(".* (\d\.\d)\.\d .*", output.split('\n')[0])
+ if not match:
+ bb.fatal("Can't get compiler version from %s --version output" % compiler)
+
+ version = match.group(1)
+ return "-%s" % version if version in ("4.8", "4.9") else ""
+
def enable_uninative(d):
loader = d.getVar("UNINATIVE_LOADER", True)
if os.path.exists(loader):
bb.debug(2, "Enabling uninative")
- d.setVar("NATIVELSBSTRING", "universal")
+ d.setVar("NATIVELSBSTRING", "universal%s" % gcc_version(d))
d.appendVar("SSTATEPOSTUNPACKFUNCS", " uninative_changeinterp")
d.prependVar("PATH", "${STAGING_DIR}-uninative/${BUILD_ARCH}-linux${bindir_native}:")
--
2.1.4
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH v2] uninative: rebuild uninative for gcc 4.8 and 4.9
2016-10-27 7:10 [PATCH v2] uninative: rebuild uninative for gcc 4.8 and 4.9 Ed Bartosh
@ 2016-10-31 20:11 ` Burton, Ross
2016-11-08 8:11 ` Ed Bartosh
0 siblings, 1 reply; 7+ messages in thread
From: Burton, Ross @ 2016-10-31 20:11 UTC (permalink / raw)
To: Ed Bartosh; +Cc: OE-core
[-- Attachment #1: Type: text/plain, Size: 353 bytes --]
On 27 October 2016 at 08:10, Ed Bartosh <ed.bartosh@linux.intel.com> wrote:
> + match = re.match(".* (\d\.\d)\.\d .*", output.split('\n')[0])
>
Debian uses this string:
gcc (Debian 4.9.2-10) 4.9.2
So your regex needs to be a bit more permissive, and it looks like grabbing
the second number would be more appropriate here too.
Ross
[-- Attachment #2: Type: text/html, Size: 998 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v2] uninative: rebuild uninative for gcc 4.8 and 4.9
2016-10-31 20:11 ` Burton, Ross
@ 2016-11-08 8:11 ` Ed Bartosh
2016-12-05 10:56 ` Burton, Ross
0 siblings, 1 reply; 7+ messages in thread
From: Ed Bartosh @ 2016-11-08 8:11 UTC (permalink / raw)
To: openembedded-core
Some c++ libraries fail to build if uninative is built
with gcc 5.x and host gcc version is either 4.8 or 4.9.
The issue should be solved by making separate uninative sstate
directory structure sstate-cache/universal-<gcc version> for host gcc
versions 4.8 and 4.9. This causes rebuilds of uninative if host gcc
is either 4.8 or 4.9 and it doesn't match gcc version used to build
uninative.
[YOCTO #10441]
Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
meta/classes/uninative.bbclass | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.bbclass
index 89cec07..3862b31 100644
--- a/meta/classes/uninative.bbclass
+++ b/meta/classes/uninative.bbclass
@@ -95,11 +95,25 @@ python uninative_event_enable() {
enable_uninative(d)
}
+def gcc_version(d):
+ compiler = d.getVar("BUILD_CC", True)
+ retval, output = oe.utils.getstatusoutput("%s --version" % compiler)
+ if retval:
+ bb.fatal("Error running %s --version: %s" % (compiler, output))
+
+ import re
+ match = re.match(".* (\d\.\d)\.\d.*", output.split('\n')[0])
+ if not match:
+ bb.fatal("Can't get compiler version from %s --version output" % compiler)
+
+ version = match.group(1)
+ return "-%s" % version if version in ("4.8", "4.9") else ""
+
def enable_uninative(d):
loader = d.getVar("UNINATIVE_LOADER", True)
if os.path.exists(loader):
bb.debug(2, "Enabling uninative")
- d.setVar("NATIVELSBSTRING", "universal")
+ d.setVar("NATIVELSBSTRING", "universal%s" % gcc_version(d))
d.appendVar("SSTATEPOSTUNPACKFUNCS", " uninative_changeinterp")
d.prependVar("PATH", "${STAGING_DIR}-uninative/${BUILD_ARCH}-linux${bindir_native}:")
--
2.1.4
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH v2] uninative: rebuild uninative for gcc 4.8 and 4.9
2016-11-08 8:11 ` Ed Bartosh
@ 2016-12-05 10:56 ` Burton, Ross
2016-12-13 17:05 ` [PATCH] populate_sdk_ext: get NATIVELSBSTRING variable Ed Bartosh
0 siblings, 1 reply; 7+ messages in thread
From: Burton, Ross @ 2016-12-05 10:56 UTC (permalink / raw)
To: Ed Bartosh; +Cc: OE-core
[-- Attachment #1: Type: text/plain, Size: 2536 bytes --]
This fails on the AB when generating a eSDK, eg
http://errors.yoctoproject.org/Errors/Details/110635/
I suspect the cause is that the sstate is generated using the (eg)
universal-4.9 name, but populate_sdk_ext still uses just "universal" when
creating a mirror of the sstate archive.
Ross
On 8 November 2016 at 08:11, Ed Bartosh <ed.bartosh@linux.intel.com> wrote:
> Some c++ libraries fail to build if uninative is built
> with gcc 5.x and host gcc version is either 4.8 or 4.9.
>
> The issue should be solved by making separate uninative sstate
> directory structure sstate-cache/universal-<gcc version> for host gcc
> versions 4.8 and 4.9. This causes rebuilds of uninative if host gcc
> is either 4.8 or 4.9 and it doesn't match gcc version used to build
> uninative.
>
> [YOCTO #10441]
>
> Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
> ---
> meta/classes/uninative.bbclass | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.
> bbclass
> index 89cec07..3862b31 100644
> --- a/meta/classes/uninative.bbclass
> +++ b/meta/classes/uninative.bbclass
> @@ -95,11 +95,25 @@ python uninative_event_enable() {
> enable_uninative(d)
> }
>
> +def gcc_version(d):
> + compiler = d.getVar("BUILD_CC", True)
> + retval, output = oe.utils.getstatusoutput("%s --version" % compiler)
> + if retval:
> + bb.fatal("Error running %s --version: %s" % (compiler, output))
> +
> + import re
> + match = re.match(".* (\d\.\d)\.\d.*", output.split('\n')[0])
> + if not match:
> + bb.fatal("Can't get compiler version from %s --version output" %
> compiler)
> +
> + version = match.group(1)
> + return "-%s" % version if version in ("4.8", "4.9") else ""
> +
> def enable_uninative(d):
> loader = d.getVar("UNINATIVE_LOADER", True)
> if os.path.exists(loader):
> bb.debug(2, "Enabling uninative")
> - d.setVar("NATIVELSBSTRING", "universal")
> + d.setVar("NATIVELSBSTRING", "universal%s" % gcc_version(d))
> d.appendVar("SSTATEPOSTUNPACKFUNCS", " uninative_changeinterp")
> d.prependVar("PATH", "${STAGING_DIR}-uninative/${
> BUILD_ARCH}-linux${bindir_native}:")
>
> --
> 2.1.4
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
[-- Attachment #2: Type: text/html, Size: 3703 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH] populate_sdk_ext: get NATIVELSBSTRING variable
2016-12-05 10:56 ` Burton, Ross
@ 2016-12-13 17:05 ` Ed Bartosh
2016-12-13 19:44 ` Paul Eggleton
0 siblings, 1 reply; 7+ messages in thread
From: Ed Bartosh @ 2016-12-13 17:05 UTC (permalink / raw)
To: openembedded-core
Setting fixedlsbstring to 'universal' can break populate_sdk_ext
task as NATIVELSBSTRING can be set to universal-<gcc version> in
some cases.
Getting NATIVELSBSTRING value using getVar should fix this.
Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
meta/classes/populate_sdk_ext.bbclass | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass
index 3c3a73c..6ef48c0 100644
--- a/meta/classes/populate_sdk_ext.bbclass
+++ b/meta/classes/populate_sdk_ext.bbclass
@@ -374,8 +374,8 @@ python copy_buildsystem () {
sstate_out = baseoutpath + '/sstate-cache'
bb.utils.remove(sstate_out, True)
- # uninative.bbclass sets NATIVELSBSTRING to 'universal'
- fixedlsbstring = 'universal'
+
+ fixedlsbstring = d.getVar('NATIVELSBSTRING', True)
sdk_include_toolchain = (d.getVar('SDK_INCLUDE_TOOLCHAIN', True) == '1')
sdk_ext_type = d.getVar('SDK_EXT_TYPE', True)
--
2.1.4
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH] populate_sdk_ext: get NATIVELSBSTRING variable
2016-12-13 17:05 ` [PATCH] populate_sdk_ext: get NATIVELSBSTRING variable Ed Bartosh
@ 2016-12-13 19:44 ` Paul Eggleton
2016-12-13 23:55 ` [PATCH v3] uninative: rebuild uninative for gcc 4.8 and 4.9 Ed Bartosh
0 siblings, 1 reply; 7+ messages in thread
From: Paul Eggleton @ 2016-12-13 19:44 UTC (permalink / raw)
To: Ed Bartosh; +Cc: openembedded-core
Hi Ed,
On Tue, 13 Dec 2016 19:05:49 Ed Bartosh wrote:
> Setting fixedlsbstring to 'universal' can break populate_sdk_ext
> task as NATIVELSBSTRING can be set to universal-<gcc version> in
> some cases.
>
> Getting NATIVELSBSTRING value using getVar should fix this.
>
> Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
> ---
> meta/classes/populate_sdk_ext.bbclass | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/meta/classes/populate_sdk_ext.bbclass
> b/meta/classes/populate_sdk_ext.bbclass index 3c3a73c..6ef48c0 100644
> --- a/meta/classes/populate_sdk_ext.bbclass
> +++ b/meta/classes/populate_sdk_ext.bbclass
> @@ -374,8 +374,8 @@ python copy_buildsystem () {
>
> sstate_out = baseoutpath + '/sstate-cache'
> bb.utils.remove(sstate_out, True)
> - # uninative.bbclass sets NATIVELSBSTRING to 'universal'
> - fixedlsbstring = 'universal'
> +
> + fixedlsbstring = d.getVar('NATIVELSBSTRING', True)
>
> sdk_include_toolchain = (d.getVar('SDK_INCLUDE_TOOLCHAIN', True) ==
> '1') sdk_ext_type = d.getVar('SDK_EXT_TYPE', True)
Have you tested this with OE-Core alone or any other configuration where
uninative is not enabled? I suspect it won't work with that.
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v3] uninative: rebuild uninative for gcc 4.8 and 4.9
2016-12-13 19:44 ` Paul Eggleton
@ 2016-12-13 23:55 ` Ed Bartosh
0 siblings, 0 replies; 7+ messages in thread
From: Ed Bartosh @ 2016-12-13 23:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Paul Eggleton
Some c++ libraries fail to build if uninative is built
with gcc 5.x and host gcc version is either 4.8 or 4.9.
The issue should be solved by making separate uninative sstate
directory structure sstate-cache/universal-<gcc version> for host gcc
versions 4.8 and 4.9. This causes rebuilds of uninative if host gcc
is either 4.8 or 4.9 and it doesn't match gcc version used to build
uninative.
[YOCTO #10441]
Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
meta/classes/populate_sdk_ext.bbclass | 5 +++--
meta/classes/uninative.bbclass | 2 +-
meta/lib/oe/utils.py | 14 ++++++++++++++
3 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass
index 3c3a73c..1affa9d 100644
--- a/meta/classes/populate_sdk_ext.bbclass
+++ b/meta/classes/populate_sdk_ext.bbclass
@@ -374,8 +374,9 @@ python copy_buildsystem () {
sstate_out = baseoutpath + '/sstate-cache'
bb.utils.remove(sstate_out, True)
- # uninative.bbclass sets NATIVELSBSTRING to 'universal'
- fixedlsbstring = 'universal'
+
+ # uninative.bbclass sets NATIVELSBSTRING to 'universal%s' % oe.utils.host_gcc_version(d)
+ fixedlsbstring = "universal%s" % oe.utils.host_gcc_version(d)
sdk_include_toolchain = (d.getVar('SDK_INCLUDE_TOOLCHAIN', True) == '1')
sdk_ext_type = d.getVar('SDK_EXT_TYPE', True)
diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.bbclass
index 9242320..11cbf9b 100644
--- a/meta/classes/uninative.bbclass
+++ b/meta/classes/uninative.bbclass
@@ -88,7 +88,7 @@ def enable_uninative(d):
loader = d.getVar("UNINATIVE_LOADER", True)
if os.path.exists(loader):
bb.debug(2, "Enabling uninative")
- d.setVar("NATIVELSBSTRING", "universal")
+ d.setVar("NATIVELSBSTRING", "universal%s" % oe.utils.host_gcc_version(d))
d.appendVar("SSTATEPOSTUNPACKFUNCS", " uninative_changeinterp")
d.prependVar("PATH", "${STAGING_DIR}-uninative/${BUILD_ARCH}-linux${bindir_native}:")
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py
index d6545b1..2b095f1 100644
--- a/meta/lib/oe/utils.py
+++ b/meta/lib/oe/utils.py
@@ -230,6 +230,20 @@ def format_pkg_list(pkg_dict, ret_format=None):
return '\n'.join(output)
+def host_gcc_version(d):
+ compiler = d.getVar("BUILD_CC", True)
+ retval, output = getstatusoutput("%s --version" % compiler)
+ if retval:
+ bb.fatal("Error running %s --version: %s" % (compiler, output))
+
+ import re
+ match = re.match(".* (\d\.\d)\.\d.*", output.split('\n')[0])
+ if not match:
+ bb.fatal("Can't get compiler version from %s --version output" % compiler)
+
+ version = match.group(1)
+ return "-%s" % version if version in ("4.8", "4.9") else ""
+
#
# Python 2.7 doesn't have threaded pools (just multiprocessing)
# so implement a version here
--
2.1.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-12-13 23:55 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-27 7:10 [PATCH v2] uninative: rebuild uninative for gcc 4.8 and 4.9 Ed Bartosh
2016-10-31 20:11 ` Burton, Ross
2016-11-08 8:11 ` Ed Bartosh
2016-12-05 10:56 ` Burton, Ross
2016-12-13 17:05 ` [PATCH] populate_sdk_ext: get NATIVELSBSTRING variable Ed Bartosh
2016-12-13 19:44 ` Paul Eggleton
2016-12-13 23:55 ` [PATCH v3] uninative: rebuild uninative for gcc 4.8 and 4.9 Ed Bartosh
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox