On Apr 3, 2019, at 8:42 PM, Ni, Ray <ray.ni@intel.com> wrote:

Mike, Laszlo,
It's a good idea to store the shell binaries into the assets of each stable tag.

If we go in this way, it means "build" requires network connection to download the
shell binary from the assets of a certain release.
Do you think it's acceptable?


Ray,

The other option would be to have a configuration step, like installing Python or the C compilers, that copies the binary. You need a network connection to clone the git repo and to stay in sync with it. I guess you could model that as a git submodule, or actually have a script that grabs the binary you want from a remote system, and fall back to the local copy if you don't have a network connection. 


Or we can separate the binary download and build into two phases so build phase
can be independent on network connection.

Is there any known practice/solution for such requirement (stable sub-component binaries
needed by a production image generation)?


I think to some extent this kind of thing is driven by the customers build rules. Basically what the customer think of as their manifest of parts for software version X.

 It might be possible for a build script to do something like this to just grab a specific version of the EFI Shell. I guess HEAD could really come from the manifest of what version you want, and the initial setup could run this command to make sure a backup version of Shell.efi is present in case the network is not present. 
git archive --remote=ssh://host/pathto/repo.git HEAD Shell.efi

I'm sure an organization building something as complex as an OS probably has custom tools to deal with the manifest, but we can probably do something simple with a script/makefile. 

Thanks,
 
Andrew Fish


Thanks,
Ray

-----Original Message-----
From: Kinney, Michael D <michael.d.kinney@intel.com>
Sent: Thursday, April 4, 2019 5:47 AM
To: Laszlo Ersek <lersek@redhat.com>; Ni, Ray <ray.ni@intel.com>; Bi,
Dandan <dandan.bi@intel.com>; devel@edk2.groups.io; Kinney, Michael D
<michael.d.kinney@intel.com>
Cc: Cetola, Stephano <stephano.cetola@intel.com>; Gao, Liming
<liming.gao@intel.com>; Carsey, Jaben <jaben.carsey@intel.com>
Subject: RE: [edk2] [RFC] Plan to delete ShellBinPkg from edk2/master

Laszlo,

A PREBUILD action looks like a good idea.

Release artifacts in GitHub are available as an http link, so a python script to
download into a path in the build output directory and referenced by
DSC/FDF should work.

We could even post shell binaries for the past couple edk2-stable tags
because release content can be updated.

Mike

-----Original Message-----
From: Laszlo Ersek [mailto:lersek@redhat.com]
Sent: Wednesday, April 3, 2019 9:07 AM
To: Kinney, Michael D <michael.d.kinney@intel.com>; Ni, Ray
<ray.ni@intel.com>; Bi, Dandan <dandan.bi@intel.com>;
edk2-devel@lists.01.org
Cc: Cetola, Stephano <stephano.cetola@intel.com>; Gao, Liming
<liming.gao@intel.com>; Carsey, Jaben <jaben.carsey@intel.com>
Subject: Re: [edk2] [RFC] Plan to delete ShellBinPkg from edk2/master

On 04/03/19 17:49, Kinney, Michael D wrote:
Laszlo,

I think it makes sense to post validated shell
binaries
with the edk2-stable tag releases.  GitHub does
support
this when a release tag is made.

However, we would need to make it simple for a
platform
to use a binary from that location.  We may need some enhancements
to pull in binary artifacts from
different
locations to support a platform build that uses one
or
more pre-built binaries.

Can PREBUILD scripts (written by platform owners) download the
required binaries?

Thanks,
Laszlo