Hello, I have gone through all the feedback I have received and have updated this proposal. Here is a summary of the changes in V2:
* IntelFrameworkModulePkg -> Deprecated * IntelFrameworkPkg -> Deprecated * IntelFspPkg -> Deprecated * IntelFspWrapperPkg -> Deprecated * PerformancePkg -> Deprecated * CorebootPayloadPkg -> Platform * EmbeddedPkg -> Driver * ArmPlatformPkg/ArmJunoPkg -> Silicon/Arm/ArmJunoPkg * ArmPlatformPkg/ArmVExpressPkg -> Silicon/Arm/ ArmVExpressPkg * Change Drivers to Driver so no top level directories are plural. * Remove Vendor directory from Silicon and Platform to reduce directory depth * Add Platform/Common directory for non-vendor specific platform packages * Add Silicon/Common directory for non-vendor specific packages of CPU/Chipset/SoC drivers * Keep Vendor directory in Driver. Non-vendor specific packages of drivers are flat just below Driver. Provides area to migrate non-vendor specific drivers from Core over time Please let me know if I missed any feedback and if there is new feedback on this revised proposal for the directory structure or the directory names. <proposal> # EDK II - Proposal to organize packages into directories There have been some discussions about organizing packages into directories. Below is a proposal for a top level directory structure and a first pass mapping of the packages from edk2/master. Where applicable, vendor specific directories can be added. The PACKAGES_PATH feature documented in the link below is used to support this proposed directory structure with no source file changes. An example of setting PACKAGES_PATH in a windows environment is also shown below and I have verified that platforms can be built using this proposal. https://github.com/tianocore/tianocore.github.io/wiki/Multiple_Workspace Please provide feedback on the proposal (for, against, alternate proposal), the number/type of top level directories, and the top level directory names. I have setup a branch with this directory structure in this proposal to help with the review. I have verified that I can build some platforms in this branch using the PACKAGES_PATH settings shown below. https://github.com/mdkinney/edk2/tree/NewDirStruct # Top Level Directory Structure (Listed Alphabetically) ``` edk2 Application Applications and application support libraries BaseTools EDK II build tools/scripts Conf EDK II build configuration files Core Platform agnostic packages for core FW services Deprecated Packages that will be removed from edk2/master soon Driver EDK II Drivers (no platform assumptions) <Package1> Non-Vendor specific EDK II drivers <Package2> Non-Vendor specific EDK II drivers . . . Vendor Vendor specific EDK II drivers <VendorA> <VendorB> Platform Platforms used to validate edk2/master features Common Non-vendor specific platform packages Emulated Non-vendor specific emulated platform packages Arm ARM specific platform packages Intel Intel specific platform packages <VendorM> <VendorM> specific platform packages <VendorN> <VendorN> specific platform packages Silicon CPU/Chipset/SoC packages Common Non-vendor specific CPU/Chipset/SoC drivers Arm Arm specific CPU/Chipset/SoC drivers Intel Intel specific CPU/Chipset/SoC drivers <VendorX> <VendorX> specific CPU/Chipset/SoC drivers <VendorY> <VendorY> specific CPU/Chipset/SoC drivers ``` # Mapping packages from edk2/master into proposed directory structure ``` edk2 Application AppPkg ShellPkg StdLib StdLibPrivateInternalFiles Core CorebootModulePkg CryptoPkg IntelFsp2Pkg IntelFsp2WrapperPkg MdeModulePkg MdePkg SecurityPkg SourceLevelDebugPkg Deprecated EdkCompatibilityPkg EdkShellBinPkg EdkShellPkg FatBinPkg IntelFrameworkModulePkg IntelFrameworkPkg IntelFspPkg IntelFspWrapperPkg PerformancePkg ShellBinPkg Driver EmbeddedPkg FatPkg NetworkPkg OptionRomPkg Vendor Platform Common DuetPkg OvmfPkg CorebootPayloadPkg Emulated EmulatorPkg Nt32Pkg UnixPkg Arm ArmPlatformPkg ArmVirtPkg BeagleBoardPkg Intel QuarkPlatformPkg Vlv2TbltDevicePkg Silicon Common PcAtChipsetPkg UefiCpuPkg Arm ArmPkg ArmJunoPkg ArmVExpressPkg Omap35xxPkg Intel QuarkSocPkg Vlv2DeviceRefCodePkg ``` # Setting PACKAGES_PATH to support builds using proposed directory structure ``` set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Core set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Driver set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Silicon\Arm set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Silicon\Common set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Silicon\Intel set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Platform\Arm set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Platform\Common set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Platform\Emulated set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Platform\Intel set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Application set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Deprecated set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2 ``` </proposal> Best regards, Mike _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

