acassis commented on PR #17236:
URL: https://github.com/apache/nuttx/pull/17236#issuecomment-3461125031

   > > @TangMeng12 Please look here #13301
   > > The idea behind this logic was to reduce the time needed for the jobs.
   > > With the change you want to make, build times on CI will be longer than 
before.
   > 
   > Throughout NuttX, and mostly in the `nuttx-apps` repo, there are various 
optional components that might be downloaded.
   > 
   > I think we need to discuss (on the mailing list) and come up with a 
systematic approach that balances everyone's needs in a suitable way.
   > 
   > Some of those needs are:
   > 
   >     * In Kconfig, there should be one permission config "Allow downloads", 
help text: "Allow the NuttX build system to automatically download external 
packages from the Internet." Suggested name: `CONFIG_ALLOW_DOWNLOADS`. In the 
build system, downloading will occur through one central function that may call 
wget, curl, git, or other commands as needed, and that function will return an 
error if `CONFIG_ALLOW_DOWNLOADS` is not configured, aborting the build. This 
is important because some developers will want to ensure there are no automatic 
downloads. If external packages are needed, those developers will need to 
provide them manually.
   > 
   >     * Some developers may allow downloads in general, but will prefer to 
download some individual package manually. This allows developers to add their 
own customizations, choose alternate versions, alternate branches, etc. ("Out 
of tree downloads.") To support this, each package should have its own 
fine-grained permission Kconfig to enable or disable downloading that package 
from the internet.
   > 
   >     * Some developers will prefer to store external packages at custom 
path on their workstation. To support this, each package needs a Kconfig to 
provide the custom path on the developer's workstation. This can be combined 
with the previous item.
   > 
   >     * Some developers will prefer to allow downloads, but customize the 
URLs. This way, they can control which server the download will come from. The 
server could be a local server on their own intranet or perhaps a custom fork 
on the internet. To support this, each package needs a Kconfig to specify the 
URL.
   > 
   >     * The CI system needs to utilize its resources in a smart way, as 
pointed out by @simbit18 above. So we need a Kconfig to select between 
downloading the release tarballs or cloning the repository.
   > 
   > 
   > Rather than maintaining a hodgepodge of different approaches, a systematic 
approach will make it easier to add new external dependencies, maintain 
existing ones, and handle licensing correctly.
   
   @TangMeng12 @simbit18 @hartmannathan another item to include in this listing 
is the Mirror support. I created the https://github.com/NuttX/apps-mirror-pkgs 
to have a backup/mirror of the packages that NuttX Apps is using, this way the 
build never will fail case some URL is momentarily inaccessible or if the site 
disappears.  


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to