From: "Michael Kubacki" <michael.kubacki@outlook.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: Leif Lindholm <leif@nuviainc.com>,
Laszlo Ersek <lersek@redhat.com>,
Ard Biesheuvel <ard.biesheuvel@arm.com>,
Ray Ni <ray.ni@intel.com>,
Sai Chaganty <rangasai.v.chaganty@intel.com>,
Eric Dong <eric.dong@intel.com>, Dandan Bi <dandan.bi@intel.com>,
Michael D Kinney <michael.d.kinney@intel.com>,
Kelly Steele <kelly.steele@intel.com>,
Zailiang Sun <zailiang.sun@intel.com>,
Yi Qian <yi.qian@intel.com>, Chasel Chiu <chasel.chiu@intel.com>,
Nate DeSimone <nathaniel.l.desimone@intel.com>,
Agyeman Prince <prince.agyeman@intel.com>,
Bob Feng <bob.c.feng@intel.com>,
Liming Gao <gaoliming@byosoft.com.cn>,
Abner Chang <abner.chang@hpe.com>,
Daniel Schaefer <daniel.schaefer@hpe.com>,
Gilbert Chen <gilbert.chen@hpe.com>
Subject: [edk2-platforms] [RFC] Compatibility Expectations in edk2-platforms
Date: Mon, 5 Oct 2020 15:36:17 -0700 [thread overview]
Message-ID: <MWHPR07MB344057997A0214CC67473C00E90C0@MWHPR07MB3440.namprd07.prod.outlook.com> (raw)
Hi all,
First, I'd like to clarify that I completely support the development of
open source edk2 platforms and this observation is only intended to
suggest an improvement for interoperability with edk2 development and
not to detract from the great work happening in open source platforms.
There's currently an expectation that edk2-platforms must build with
edk2/master. I'd like to address the present lack of infrastructure and
uniformity in edk2-platforms that, in my opinion, makes this perpetually
painful.
1. Inconsistent maintainer support
* Some packages currently do not build. Some packages are not
getting updated often.
* Example: Last week I had to update Vlv2TbltDevicePkg which did not
build.
* Example: Many packages only document support for old toolchains.
2. Inconsistent toolchain support
To build these according to instruction, a developer needs to install
Visual Studio dating back to 2015 (though it is 2020), and multiple
versions of iASL, NASM, a separate host OS for Linux/Windows builds, etc.
Just a few quick examples:
* Vlv2TbltDevicePkg documented supported toolchains:
https://github.com/tianocore/edk2-platforms/blob/master/Platform/Intel/Vlv2TbltDevicePkg/Readme.md
* Compilers: VS13, VS15
* Windows DDK: 3790.1830 in C:\WINDDK\3790.1830
* Python: 3
* iASL: iasl-win-20160527 in C:\ASL
* NASM: 2.12.02 in C:\NASM
* OpenSSL: Latest version in C:\Openssl (add OPENSSL_PATH)
* Platform/ARM supported toolchains:
https://github.com/tianocore/edk2-platforms/blob/master/Platform/ARM/Readme.md
* OS: A 32-bit or 64-bit Linux host machine.
* Compilers: Visual Studio is not officially supported,
experimental support can be found here:
[https://git.linaro.org/people/leif.lindholm/edk2.git/log/?h=aarch64-vs]
* Platform/Intel (MinPlatformPkg):
* Compilers: VS15
* Python: 3.7.3
* iASL compiler: latest in C:\ASL
* NASM: latest in C:\NASM
3. Inconsistent build requirements
Many builds use the "build" command. Others have script wrappers with
unique parameters. Platforms are free to choose what they do and do not
support and developers have to figure it out.
4. Lack of build health indicators
Basically, there is no public CI across platforms. It is not clear
exactly what platform builds are broken, what configurations they are
broken against, how long they have been broken, etc.
6. Lack of community testing capability
An edk2 contributor cannot be expected to understand the nuances of
every platform in edk2-platforms to always make the right integration
decision for a change in edk2. Platform objectives like performance and
security vary and are not clearly documented. In turn, this slows
progress in edk2. In many cases, edk2 contributors do not have a way to
check for runtime regressions in edk2-platforms as they do not possess
the platform they're requested to update.
Within the purview of an individual edk2-platforms maintainer, these
problems are relatively insignificant, largely due to the somewhat
isolated nature of platform development. However, it does not scale well
to edk2 contributors that need to build and test N platforms.
While community alignment on build tools, toolchain support, keeping
current, and other areas would help, I believe many of the concerns can
be mitigated with publicly accessible CI that proves current build
support, build health, build commands, allows developer build testing,
and potentially even device boot regression testing for those without
platforms on hand.
Without such support, I believe platforms can only have a dependency on
edk2 (not vice versa). Maintainers move their edk2 pointer when they
have verified that their platform properly integrates the latest
changes. This is relatively common in relationships with package-based
dependencies and how this is typically handled outside edk2-platforms. I
believe this is reasonable even with public CI in place unless
maintainers understand and accept the challenges and additional support
that is involved with being on edk2/master.
I just wanted to give my observation of some recent challenges and see
if the community can align on some practices to help simplify
edk2-platforms integration and testing.
Thanks,
Michael
next reply other threads:[~2020-10-05 22:36 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-05 22:36 Michael Kubacki [this message]
2020-10-06 6:20 ` [edk2-platforms] [RFC] Compatibility Expectations in edk2-platforms Laszlo Ersek
2020-10-07 4:19 ` [edk2-devel] " Nate DeSimone
2020-10-07 5:01 ` Michael Kubacki
2020-10-07 5:42 ` Andrew Fish
2020-10-13 2:29 ` 回复: " gaoliming
2020-10-16 0:55 ` Nate DeSimone
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=MWHPR07MB344057997A0214CC67473C00E90C0@MWHPR07MB3440.namprd07.prod.outlook.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox