From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.151; helo=mga17.intel.com; envelope-from=ray.ni@intel.com; receiver=edk2-devel@lists.01.org Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 42FA8211BFCDD for ; Wed, 30 Jan 2019 23:59:54 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Jan 2019 23:59:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,543,1539673200"; d="scan'208";a="315117222" Received: from ray-dev.ccr.corp.intel.com (HELO [10.239.9.3]) ([10.239.9.3]) by fmsmga006.fm.intel.com with ESMTP; 30 Jan 2019 23:59:51 -0800 To: Ard Biesheuvel , "Gao, Liming" Cc: Leif Lindholm , "Zimmer, Vincent" , "Wolman, Ayellet" , "edk2-devel@lists.01.org" , "Cetola, Stephano" , "Kinney, Michael D" , Laszlo Ersek References: <734D49CCEBEEF84792F5B80ED585239D5BFF82D7@SHSMSX104.ccr.corp.intel.com> <20190129142113.yxvgoogk2ucgk3aj@bivouac.eciton.net> <06bf1381-5f8b-7bda-1d30-df0b03c8f3fd@Intel.com> From: "Ni, Ray" Message-ID: Date: Thu, 31 Jan 2019 16:02:15 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.5.0 MIME-Version: 1.0 In-Reply-To: Subject: Re: [RFC] Proposal to split Pkgs X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jan 2019 07:59:54 -0000 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit On 1/31/2019 3:51 PM, Ard Biesheuvel wrote: >>>> The POC code is inhttps://github.com/jyao1/edk2/tree/ReOrg. >>>> It basically split the EDKII common code to three directories: >>>> Core/, Device/, and Feature/. >>> I'm not sure I like the 'Device' name, but that's not that important >>> at this stage - I like that this is split up the way it is. >>> >>> I also think a lot of things currently under Feture/misc could be >>> broken out into additional subdirectories under Feature/. >>> >>>> The code is in very early POC phase and only code in Core/ directory >>>> can pass the build. >>>> I would like to gather feedbacks through this RFC to see whether >>>> this splitting direction makes sense. >>>> Is there any other better ways of splitting? >>>> Or perhaps do not split in such a small granularity? >>> I think this would be my only negative(ish) feedback on the POC. >>> >>> While it has the benefit of modules requiring to specify more >>> precisely which functionality they are pulling in... >>> ...it means that they now need to list*everything*. >>> >>> And with the mechanism by which I have seen Intel engineers make use >>> of PACKAGES_PATH in the past*, we end up with a bazillion packages >>> that need to be added individually to this variable for each build. >> No. "PACKAGES_PATH" only contains paths pointing to the*parent* >> directory of *Pkg. In this case, it equals to: >> /work/edk2/Core:/work/edk2/Device:/work/edk2/Feature/security:/work/edk2/Feature/network:/work/edk2/Feature/misc >> > Could we*please* not do this? PACKAGES_PATH is very useful for > combining packages from different repositories, but that does not mean > we should split up the core repository in this way. > > What we will end up with is platforms that use > > Core/Package/Foo.inf > > and platforms that use > > Package/Foo.inf > > which creates an aliasing mess where the same file is reachable in > different ways. Also, it encourages the behavior where you need to > fetch version X of repo A and version Y of repo B, and the whole point > of open sourcing is to have all code co-exist in the same source tree. > > Ard, Some platforms which define PACKAGES_PATH to "/work/edk2" will have "Core/Package/Foo.inf" in the DSC/FDF. Some platforms which define PACKAGES_PATH to "/work/edk2/Core" will have "Package/Foo.inf" in the DSC/FDF. It's bad and I 100% agree! The basic rule behind that is PACKAGES_PATH should only contains path pointing to the root of repo. Thanks for raising a very good concern on putting packages inside sub-directory. -- Thanks, Ray