Message ID | 20231109123611.146694-1-peter.marko@siemens.com |
---|---|
State | New, archived |
Headers | show |
Series | [kirkstone] goarch: Move Go architecture mapping to a library | expand |
On Thu, Nov 9, 2023 at 7:37 AM Peter Marko <peter.marko@siemens.com> wrote: > > From: Peter Marko <peter.marko@siemens.com> > > Other spaces uses the Go architecture definitions as their own (for > example, container arches are defined to be Go arches). To make it > easier for other places to use this mapping, move the code that does the > translation of OpenEmbedded arches to Go arches to a library. > > (From oe-core rev: 3e86f72fc2e1cc2e5ea4b4499722d736941167ce) > > This commit together with meta-virtualization commit > 115f6367f37095415f289fb6981cda9608ac72ff > broke meta-virtualization master used with > meta-lts-mixins kirkstone/go which is our primary > usecase for having kirkstone/go mixin layer > I was trying to figure out the best way to address this issue just yesterday. If the patch is accepted for backport, then that's definitely another solution. Otherwise, I'll have to carry the meta-virt patch that I did in nanbield on master until such a time as any branches that will reasonably work with meta-virt master have the go_arch library change. Alternatively, I suppose we could trap the error and use a fallback, etc, but I won't get complicated yet :) Bruce > Manually crafted since cherry-pick had too many conflicts: > * different path to classes > * additional architecture loongarch64 > * different way how to import library > > Signed-off-by: Peter Marko <peter.marko@siemens.com> > Cc: Joshua Watt <JPEWhacker@gmail.com> > Cc: Bruce Ashfield <bruce.ashfield@gmail.com> > Cc: Jose Quaresma <jose.quaresma@foundries.io> > --- > meta/classes/base.bbclass | 2 +- > meta/classes/goarch.bbclass | 27 +++------------------------ > meta/lib/oe/go.py | 32 ++++++++++++++++++++++++++++++++ > 3 files changed, 36 insertions(+), 25 deletions(-) > create mode 100644 meta/lib/oe/go.py > > diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass > index b15c5839b6..ee26ee5597 100644 > --- a/meta/classes/base.bbclass > +++ b/meta/classes/base.bbclass > @@ -12,7 +12,7 @@ inherit logging > > OE_EXTRA_IMPORTS ?= "" > > -OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license oe.qa oe.reproducible oe.rust ${OE_EXTRA_IMPORTS}" > +OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license oe.qa oe.reproducible oe.rust oe.go ${OE_EXTRA_IMPORTS}" > OE_IMPORTS[type] = "list" > > PACKAGECONFIG_CONFARGS ??= "" > diff --git a/meta/classes/goarch.bbclass b/meta/classes/goarch.bbclass > index 92fec16b82..394c0c5d84 100644 > --- a/meta/classes/goarch.bbclass > +++ b/meta/classes/goarch.bbclass > @@ -61,31 +61,10 @@ SECURITY_NOPIE_CFLAGS ??= "" > CCACHE_DISABLE ?= "1" > > def go_map_arch(a, d): > - import re > - if re.match('i.86', a): > - return '386' > - elif a == 'x86_64': > - return 'amd64' > - elif re.match('arm.*', a): > - return 'arm' > - elif re.match('aarch64.*', a): > - return 'arm64' > - elif re.match('mips64el.*', a): > - return 'mips64le' > - elif re.match('mips64.*', a): > - return 'mips64' > - elif a == 'mips': > - return 'mips' > - elif a == 'mipsel': > - return 'mipsle' > - elif re.match('p(pc|owerpc)(64le)', a): > - return 'ppc64le' > - elif re.match('p(pc|owerpc)(64)', a): > - return 'ppc64' > - elif a == 'riscv64': > - return 'riscv64' > - else: > + arch = oe.go.map_arch(a) > + if not arch: > raise bb.parse.SkipRecipe("Unsupported CPU architecture: %s" % a) > + return arch > > def go_map_arm(a, d): > if a.startswith("arm"): > diff --git a/meta/lib/oe/go.py b/meta/lib/oe/go.py > new file mode 100644 > index 0000000000..9996057f12 > --- /dev/null > +++ b/meta/lib/oe/go.py > @@ -0,0 +1,32 @@ > +# > +# Copyright OpenEmbedded Contributors > +# > +# SPDX-License-Identifier: MIT > +# > + > +import re > + > +def map_arch(a): > + if re.match('i.86', a): > + return '386' > + elif a == 'x86_64': > + return 'amd64' > + elif re.match('arm.*', a): > + return 'arm' > + elif re.match('aarch64.*', a): > + return 'arm64' > + elif re.match('mips64el.*', a): > + return 'mips64le' > + elif re.match('mips64.*', a): > + return 'mips64' > + elif a == 'mips': > + return 'mips' > + elif a == 'mipsel': > + return 'mipsle' > + elif re.match('p(pc|owerpc)(64le)', a): > + return 'ppc64le' > + elif re.match('p(pc|owerpc)(64)', a): > + return 'ppc64' > + elif a == 'riscv64': > + return 'riscv64' > + return '' > -- > 2.30.2 >
Bruce Ashfield <bruce.ashfield@gmail.com> escreveu no dia quinta, 9/11/2023 à(s) 14:18: > On Thu, Nov 9, 2023 at 7:37 AM Peter Marko <peter.marko@siemens.com> > wrote: > > > > From: Peter Marko <peter.marko@siemens.com> > > > > Other spaces uses the Go architecture definitions as their own (for > > example, container arches are defined to be Go arches). To make it > > easier for other places to use this mapping, move the code that does the > > translation of OpenEmbedded arches to Go arches to a library. > > > > (From oe-core rev: 3e86f72fc2e1cc2e5ea4b4499722d736941167ce) > > > > This commit together with meta-virtualization commit > > 115f6367f37095415f289fb6981cda9608ac72ff > > broke meta-virtualization master used with > > meta-lts-mixins kirkstone/go which is our primary > > usecase for having kirkstone/go mixin layer > > > > I was trying to figure out the best way to address this issue > just yesterday. > > If the patch is accepted for backport, then that's definitely > another solution. > Looks like this kirstone patch doesn't change anything on the goarch.bbclass functionality so everything should work as before. If it is not possible to integrate we can try to move some of these changes to the meta-lts-mixins kirkstone/go. Jose > Otherwise, I'll have to carry the meta-virt patch that I did > in nanbield on master until such a time as any branches > that will reasonably work with meta-virt master have the > go_arch library change. > > Alternatively, I suppose we could trap the error and use > a fallback, etc, but I won't get complicated yet :) > > Bruce > > > Manually crafted since cherry-pick had too many conflicts: > > * different path to classes > > * additional architecture loongarch64 > > * different way how to import library > > > > Signed-off-by: Peter Marko <peter.marko@siemens.com> > > Cc: Joshua Watt <JPEWhacker@gmail.com> > > Cc: Bruce Ashfield <bruce.ashfield@gmail.com> > > Cc: Jose Quaresma <jose.quaresma@foundries.io> > > --- > > meta/classes/base.bbclass | 2 +- > > meta/classes/goarch.bbclass | 27 +++------------------------ > > meta/lib/oe/go.py | 32 ++++++++++++++++++++++++++++++++ > > 3 files changed, 36 insertions(+), 25 deletions(-) > > create mode 100644 meta/lib/oe/go.py > > > > diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass > > index b15c5839b6..ee26ee5597 100644 > > --- a/meta/classes/base.bbclass > > +++ b/meta/classes/base.bbclass > > @@ -12,7 +12,7 @@ inherit logging > > > > OE_EXTRA_IMPORTS ?= "" > > > > -OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package > oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license oe.qa > oe.reproducible oe.rust ${OE_EXTRA_IMPORTS}" > > +OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package > oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license oe.qa > oe.reproducible oe.rust oe.go ${OE_EXTRA_IMPORTS}" > > OE_IMPORTS[type] = "list" > > > > PACKAGECONFIG_CONFARGS ??= "" > > diff --git a/meta/classes/goarch.bbclass b/meta/classes/goarch.bbclass > > index 92fec16b82..394c0c5d84 100644 > > --- a/meta/classes/goarch.bbclass > > +++ b/meta/classes/goarch.bbclass > > @@ -61,31 +61,10 @@ SECURITY_NOPIE_CFLAGS ??= "" > > CCACHE_DISABLE ?= "1" > > > > def go_map_arch(a, d): > > - import re > > - if re.match('i.86', a): > > - return '386' > > - elif a == 'x86_64': > > - return 'amd64' > > - elif re.match('arm.*', a): > > - return 'arm' > > - elif re.match('aarch64.*', a): > > - return 'arm64' > > - elif re.match('mips64el.*', a): > > - return 'mips64le' > > - elif re.match('mips64.*', a): > > - return 'mips64' > > - elif a == 'mips': > > - return 'mips' > > - elif a == 'mipsel': > > - return 'mipsle' > > - elif re.match('p(pc|owerpc)(64le)', a): > > - return 'ppc64le' > > - elif re.match('p(pc|owerpc)(64)', a): > > - return 'ppc64' > > - elif a == 'riscv64': > > - return 'riscv64' > > - else: > > + arch = oe.go.map_arch(a) > > + if not arch: > > raise bb.parse.SkipRecipe("Unsupported CPU architecture: %s" % > a) > > + return arch > > > > def go_map_arm(a, d): > > if a.startswith("arm"): > > diff --git a/meta/lib/oe/go.py b/meta/lib/oe/go.py > > new file mode 100644 > > index 0000000000..9996057f12 > > --- /dev/null > > +++ b/meta/lib/oe/go.py > > @@ -0,0 +1,32 @@ > > +# > > +# Copyright OpenEmbedded Contributors > > +# > > +# SPDX-License-Identifier: MIT > > +# > > + > > +import re > > + > > +def map_arch(a): > > + if re.match('i.86', a): > > + return '386' > > + elif a == 'x86_64': > > + return 'amd64' > > + elif re.match('arm.*', a): > > + return 'arm' > > + elif re.match('aarch64.*', a): > > + return 'arm64' > > + elif re.match('mips64el.*', a): > > + return 'mips64le' > > + elif re.match('mips64.*', a): > > + return 'mips64' > > + elif a == 'mips': > > + return 'mips' > > + elif a == 'mipsel': > > + return 'mipsle' > > + elif re.match('p(pc|owerpc)(64le)', a): > > + return 'ppc64le' > > + elif re.match('p(pc|owerpc)(64)', a): > > + return 'ppc64' > > + elif a == 'riscv64': > > + return 'riscv64' > > + return '' > > -- > > 2.30.2 > > > > > -- > - Thou shalt not follow the NULL pointer, for chaos and madness await > thee at its end > - "Use the force Harry" - Gandalf, Star Trek II > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#190386): > https://lists.openembedded.org/g/openembedded-core/message/190386 > Mute This Topic: https://lists.openembedded.org/mt/102484351/5052612 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [ > quaresma.jose@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- > >
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index b15c5839b6..ee26ee5597 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -12,7 +12,7 @@ inherit logging OE_EXTRA_IMPORTS ?= "" -OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license oe.qa oe.reproducible oe.rust ${OE_EXTRA_IMPORTS}" +OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license oe.qa oe.reproducible oe.rust oe.go ${OE_EXTRA_IMPORTS}" OE_IMPORTS[type] = "list" PACKAGECONFIG_CONFARGS ??= "" diff --git a/meta/classes/goarch.bbclass b/meta/classes/goarch.bbclass index 92fec16b82..394c0c5d84 100644 --- a/meta/classes/goarch.bbclass +++ b/meta/classes/goarch.bbclass @@ -61,31 +61,10 @@ SECURITY_NOPIE_CFLAGS ??= "" CCACHE_DISABLE ?= "1" def go_map_arch(a, d): - import re - if re.match('i.86', a): - return '386' - elif a == 'x86_64': - return 'amd64' - elif re.match('arm.*', a): - return 'arm' - elif re.match('aarch64.*', a): - return 'arm64' - elif re.match('mips64el.*', a): - return 'mips64le' - elif re.match('mips64.*', a): - return 'mips64' - elif a == 'mips': - return 'mips' - elif a == 'mipsel': - return 'mipsle' - elif re.match('p(pc|owerpc)(64le)', a): - return 'ppc64le' - elif re.match('p(pc|owerpc)(64)', a): - return 'ppc64' - elif a == 'riscv64': - return 'riscv64' - else: + arch = oe.go.map_arch(a) + if not arch: raise bb.parse.SkipRecipe("Unsupported CPU architecture: %s" % a) + return arch def go_map_arm(a, d): if a.startswith("arm"): diff --git a/meta/lib/oe/go.py b/meta/lib/oe/go.py new file mode 100644 index 0000000000..9996057f12 --- /dev/null +++ b/meta/lib/oe/go.py @@ -0,0 +1,32 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# + +import re + +def map_arch(a): + if re.match('i.86', a): + return '386' + elif a == 'x86_64': + return 'amd64' + elif re.match('arm.*', a): + return 'arm' + elif re.match('aarch64.*', a): + return 'arm64' + elif re.match('mips64el.*', a): + return 'mips64le' + elif re.match('mips64.*', a): + return 'mips64' + elif a == 'mips': + return 'mips' + elif a == 'mipsel': + return 'mipsle' + elif re.match('p(pc|owerpc)(64le)', a): + return 'ppc64le' + elif re.match('p(pc|owerpc)(64)', a): + return 'ppc64' + elif a == 'riscv64': + return 'riscv64' + return ''