public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* EDK2 build issues
@ 2017-11-10 22:26 Aaron Durbin
  2017-11-13  2:15 ` Gao, Liming
  0 siblings, 1 reply; 10+ messages in thread
From: Aaron Durbin @ 2017-11-10 22:26 UTC (permalink / raw)
  To: edk2-devel

Hello,

Here are some observations I've encountered trying to utilize edk2 for
certain builds. Part of the problem seems to be with implicit
assumptions in how edk2 is used. I'm trying to build things using edk2
from a clean enviroment on an automated builder. i.e. there isn't a
workspace that exists on one persons computer for the lifetime of
development.

1. BaseTools can't build in parallel. The tests are racey which result
in test failures. Because of this one has to build these in serial
instead of in parallel.

======================================================================
FAIL: testHelp (TianoCompress.Tests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/build/zoombini/tmp/portage/sys-boot/fsp-cnl-9999/work/fsp-cnl-9999/Edk2/BaseTools/Tests/TianoCompress.py",
line 34, in testHelp
    self.assertTrue(result == 0)
AssertionError: False is not true

======================================================================
FAIL: testRandomDataCycles (TianoCompress.Tests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/build/zoombini/tmp/portage/sys-boot/fsp-cnl-9999/work/fsp-cnl-9999/Edk2/BaseTools/Tests/TianoCompress.py",
line 65, in testRandomDataCycles
    self.compressionTestCycle(data)
  File "/build/zoombini/tmp/portage/sys-boot/fsp-cnl-9999/work/fsp-cnl-9999/Edk2/BaseTools/Tests/TianoCompress.py",
line 44, in compressionTestCycle
    self.assertTrue(result == 0)
AssertionError: False is not true

In addition, it seems compilation even breaks trying to build a parser:

VfrSyntax.cpp:53:1: error: expected class-name before '{' token
 {^M
 ^
VfrSyntax.cpp: In constructor 'CVfrDLGLexer::CVfrDLGLexer(DLGFileInput*)':
VfrSyntax.cpp:55:36: error: class 'CVfrDLGLexer' does not have any
field named 'VfrLexer'
   CVfrDLGLexer (DLGFileInput *F) : VfrLexer (F) {};^M
                                    ^

This just slows down builds needing to things serially.

2. It appears the BaseTools uses the ARCH environment variable. I'm
not sure of the origins, but ARCH seems like a complete misnomer for
the *host* you are trying to build tools on -- not the target. Trying
to incorporate edk2 builds into a portage environment effectively
breaks because of this as ARCH refers to target architecture -- not
host builder's ARCH.

3. This more of an observation, but the tools definition seems to make
quite the leap on how consistent compilers are of a certain version.
e.g. GCC 4.9 can be built with all kinds of default options that edk2
implicitly assumes are set based on some distribution's default flags?
And in order to extend toolchain support one needs to create a series
of entries associated with a certain family. Barrier to entry is
pretty high in teasing out where to put things in the ~8000 line
tools_def.template.

Thanks for the consideration.

-Aaron


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-11-27 16:14 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-10 22:26 EDK2 build issues Aaron Durbin
2017-11-13  2:15 ` Gao, Liming
2017-11-13 17:37   ` Aaron Durbin
2017-11-14  1:46     ` Gao, Liming
2017-11-16 21:37       ` Desimone, Nathaniel L
2017-11-17  8:45         ` Gao, Liming
2017-11-22 23:48           ` Desimone, Nathaniel L
2017-11-23  0:01         ` Andrew Fish
2017-11-23  5:28           ` Gao, Liming
2017-11-27 16:18             ` Andrew Fish

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox