Skip to contentSkip to conversation

insane.bbclass: Added Epiphany machine definitions

PATCH Superseded Peter Saunderson 2 participants 3 messages Mar 29, 2015 – Mar 30, 2015 1 message not in the archive

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 insane.bbclass: Added Epiphany machine definitions

Adding machine definitions for the epiphany (http://www.adapteva.com/) chip.
using https://github.com/adapteva/epiphany-binutils-gdb.
For binutils implementation that defines TARGET_ARCH MACHINE "epiphany": 4643 See https://github.com/adapteva/epiphany-binutils-gdb/blob/epiphany-binutils-2.24/bfd/elf32-epiphany.c
For example layer that uses these defines see https://github.com/peteasa/meta-epiphany.git

Epiphany cross compile is confused by package_qa_check_arch so this check is also skipped.

---
 meta/classes/insane.bbclass | 7 +++++++
 1 file changed, 7 insertions(+)
meta/classes/insane.bbclass +7 -0
index c6dea22..9cdb382 100644
@@ -52,6 +52,9 @@ def package_qa_get_machine_dict():
             "darwin9" : { 
                         "arm" :       (40,     0,    0,          True,          32),
                       },
+            "e-os" :  {
+                        "epiphany":   ( 4643,  0,    0,          True,          32),
+                      },
             "linux" : { 
                         "aarch64" :   (183,    0,    0,          True,          64),
                         "aarch64_be" :(183,    0,    0,          False,         64),
@@ -445,6 +448,10 @@ def package_qa_check_arch(path,name,d, elf, messages):
     provides = d.getVar('PROVIDES', True)
     bpn = d.getVar('BPN', True)
 
+    # FIXME: epiphany cross compile confuses this check
+    if (target_os == 'e-os'):
+        return
+
     # FIXME: Cross package confuse this check, so just skip them
     for s in ['cross', 'nativesdk', 'cross-canadian']:
         if bb.data.inherits_class(s, d):
Signature · 1 line
2.1.0
#1 lore raw
Quoted 1 line · Peter Saunderson

You have [meta-oe] in your subject, I believe you are after just oe-core with this patch correct?

Quoted 3 lines

Adding machine definitions for the epiphany (http://www.adapteva.com/) chip.
using https://github.com/adapteva/epiphany-binutils-gdb.
For binutils implementation that defines TARGET_ARCH MACHINE "epiphany": 4643 See https://github.com/adapteva/epiphany-binutils-gdb/blob/epiphany-binutils-2.24/bfd/elf32-epiphany.c

Epiphany is in upstream binutils with the matching ID,
https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=include/elf/common.h;h=25cfef2d6b1ae8e3f976f1e55576d0fbaff79027;hb=HEAD#l408

Quoted 12 lines

For example layer that uses these defines see https://github.com/peteasa/meta-epiphany.git

Epiphany cross compile is confused by package_qa_check_arch so this check is also skipped.

---
 meta/classes/insane.bbclass | 7 +++++++
 1 file changed, 7 insertions(+)
meta/classes/insane.bbclass +0 -0
index c6dea22..9cdb382 100644

meta/classes/insane.bbclass def package_qa_get_machine_dict(): · line 55

Quoted 4 lines
meta/classes/insane.bbclass +1 -0
@@ -52,6 +52,9 @@ def package_qa_get_machine_dict():
             "darwin9" : {
                         "arm" :       (40,     0,    0,          True,          32),
                       },
+            "e-os" :  {

I assume 'e-os' is short hand for 'epiphany-os'?

Is there are reason for using e-os? I noticed in your layer that your toolchains are actually target os 'elf' (e.g. epiphany-elf-gcc), in which case it should be 'elf' that goes into the TARGET_OS variable. This might be the reason for the issues that you see when compiling?

Regards,
Nathan

Quoted 24 lines
meta/classes/insane.bbclass +6 -1
+                        "epiphany":   ( 4643,  0,    0,          True,          32),
+                      },
             "linux" : {
                         "aarch64" :   (183,    0,    0,          True,          64),
                         "aarch64_be" :(183,    0,    0,          False,         64),
@@ -445,6 +448,10 @@ def package_qa_check_arch(path,name,d, elf, messages):
     provides = d.getVar('PROVIDES', True)
     bpn = d.getVar('BPN', True)
 
+    # FIXME: epiphany cross compile confuses this check
+    if (target_os == 'e-os'):
+        return
+
     # FIXME: Cross package confuse this check, so just skip them
     for s in ['cross', 'nativesdk', 'cross-canadian']:
         if bb.data.inherits_class(s, d):
--

2.1.0

--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

A message that is not in the archive (sent off-list or not yet received): [email protected]

#3 lore raw

Updated subject line.

Quoted 79 lines · Peter Saunderson
Quoted 3 lines · Nathan Rossi

On Mon, Mar 30, 2015 at 5:17 AM, Peter Saunderson <[email protected]> wrote:
You have [meta-oe] in your subject, I believe you are after just oe-core with this patch correct?

Yes, sorry wrong subject line. oe-core only.

Quoted 26 lines

Adding machine definitions for the epiphany (http://www.adapteva.com/) chip.
using https://github.com/adapteva/epiphany-binutils-gdb.
For binutils implementation that defines TARGET_ARCH MACHINE "epiphany": 4643 See https://github.com/adapteva/epiphany-binutils-gdb/blob/epiphany-binutils-2.24/bfd/elf32-epiphany.c
Epiphany is in upstream binutils with the matching ID,
https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=include/elf/common.h;h=25cfef2d6b1ae8e3f976f1e55576d0fbaff79027;hb=HEAD#l408

Quoted 12 lines

For example layer that uses these defines see https://github.com/peteasa/meta-epiphany.git

Epiphany cross compile is confused by package_qa_check_arch so this check is also skipped.

---
  meta/classes/insane.bbclass | 7 +++++++
  1 file changed, 7 insertions(+)
meta/classes/insane.bbclass +0 -0
index c6dea22..9cdb382 100644

meta/classes/insane.bbclass def package_qa_get_machine_dict(): · line 56

Quoted 5 lines
meta/classes/insane.bbclass +1 -0
@@ -52,6 +52,9 @@ def package_qa_get_machine_dict():
              "darwin9" : {
                          "arm" :       (40,     0, 0,          
 True,          32),
                        },
+            "e-os" :  {

I assume 'e-os' is short hand for 'epiphany-os'?

Quoted 4 lines

Is there are reason for using e-os? I noticed in your layer that your toolchains are actually target os 'elf' (e.g. epiphany-elf-gcc), in which case it should be 'elf' that goes into the TARGET_OS variable. This might be the reason for the issues that you see when compiling?

Perhaps the best way to understand my need to skip the package_qa_check_arch is to comment out the FIXME lines for cross, nativesdk and cross-canadian and run bitbake. The files created with cross compile etc are designed to execute on one machine and produce run time files for another so the package_qa_check fails if you include the check for builds that inherit from cross, nativesdk and cross-canadian. Thus the FIXME for cross, nativesdk and cross-canadian allows gcc-cross-arm etc to build and be packaged.

Now the tag e-os started as a shorthand for epiphany-os but actually the os of the end product in this case does not matter and should not be important to this check. The package_qa_check_arch check is designed to ensure that the right kind of file gets packaged and eventually installed on the end product, in this case a linux system running on arm. The check is not run for packages that get installed on linux running on x86_64 that are cross compilers for the linux arm system. Now with the epiphany case all the packages get installed on a system that they do not run on! They get installed in the poky sdk so that I can cross compile and create an elf file that I can download and run on the epiphany chip. They also get installed on the linux arm product and again get run eventually on the epiphany chip. So if the package_qa_check_arch is run on any of the packages tagged with e-os then it would fail because they always get installed on a architecture that is not compatible because the linux arm system is acting as a host for the epiphany system.

Perhaps it would be better to re-name this tag exotic-os because any chip like epiphany or avr could have an entry in this group. At some time in the future it would be possible to implement separate checks for any of these exotic packages, however I am not sure that there is value in spending the effort.

Quoted 17 lines

Regards,
Nathan

Quoted 13 lines
meta/classes/insane.bbclass +2 -0
+                        "epiphany":   ( 4643,  0,    0,          
 True,          32),
+                      },
              "linux" : {
                          "aarch64" :   (183,    0, 0,          
True,          64),
                          "aarch64_be" :(183,    0, 0,          

False, 64),

meta/classes/insane.bbclass +0 -0
@@ -445,6 +448,10 @@ def package_qa_check_arch(path,name,d, elf, 

messages):
provides = d.getVar('PROVIDES', True)
bpn = d.getVar('BPN', True)

Quoted 7 lines

meta/classes/insane.bbclass def package_qa_check_arch(path,name,d, elf, messages): · line 457

Quoted 7 lines
meta/classes/insane.bbclass +4 -0
+    # FIXME: epiphany cross compile confuses this check
+    if (target_os == 'e-os'):
+        return
+
      # FIXME: Cross package confuse this check, so just skip them
      for s in ['cross', 'nativesdk', 'cross-canadian']:
          if bb.data.inherits_class(s, d):

Try to comment these two lines out and then do a bitbake for your target and for the sdk and analyse the results to see the failures induced by including the package_qa_check_arch for gcc- cross, nativesdk and cross-canadian.

Regards,

Peter

Quoted 8 lines
Quoted 8 lines
Signature · 7 lines
2.1.0

-- 
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core