From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web12.1022.1587511624924453176 for ; Tue, 21 Apr 2020 16:27:05 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: erik.c.bjorge@intel.com) IronPort-SDR: q6djlgg3f5UQqOoDCYmACVFajwFhEXI3M8yxTJoSg8ehG+24u9cK0iBf3o2+B3KQFpcxZy98SE jKI0GgLqFt6A== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Apr 2020 16:27:04 -0700 IronPort-SDR: YeipolVFtr63lR4gRSpjfA7bRHWxGiOLMc7loQxC8exqU/S95KUD3rVFW/RT7c6azfs8Rhl+07 jTYnD5a0fgTg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,411,1580803200"; d="scan'208";a="291754455" Received: from ecbjorge-mobl1.amr.corp.intel.com ([10.252.132.250]) by orsmga008.jf.intel.com with ESMTP; 21 Apr 2020 16:27:03 -0700 From: "Bjorge, Erik C" To: devel@edk2.groups.io Cc: Nate DeSimone , Ashley DeSimone , Puja Pandya , Bret Barkelew , Prince Agyeman Subject: [edk2-staging/EdkRepo] [PATCH v1] EdkRepo: Improve removal of content with AlwaysExclude Date: Tue, 21 Apr 2020 16:26:35 -0700 Message-Id: <5612a4e98256fbb2230393845632116b5a10729e.1587511536.git.erik.c.bjorge@intel.com> X-Mailer: git-send-email 2.21.0.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The AlwaysExclude XML tag has existed but only removed entries from the list of sparse objects. Now items in the AlwaysExclude tag will be actively removed by prefixing '!' to the entry. Signed-off-by: Erik Bjorge Cc: Nate DeSimone Cc: Ashley DeSimone Cc: Puja Pandya Cc: Erik Bjorge Cc: Bret Barkelew Cc: Prince Agyeman --- project_utils/sparse.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/project_utils/sparse.py b/project_utils/sparse.py index b17d688..dbe2d80 100644 --- a/project_utils/sparse.py +++ b/project_utils/sparse.py @@ -3,7 +3,7 @@ ## @file # sparse.py # -# Copyright (c) 2017- 2019, Intel Corporation. All rights reserved.
+# Copyright (c) 2017- 2020, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent # import os @@ -552,11 +552,11 @@ class BuildInfo: def sparse_checkout(self, root=None, always_include=[], always_exclude=[]): """Performs a sparse checkout operation on a single repository""" - local_prune_data = set() + local_prune_data = [] for item in always_include: - local_prune_data.add('/{}'.format(item)) + local_prune_data.append('/{}'.format(item)) for item in always_exclude: - local_prune_data.discard('/{}'.format(item)) + local_prune_data.append('!/{}'.format(item)) try: repo = git.Repo(root) except: @@ -578,7 +578,11 @@ def process_sparse_checkout(workspace_root, repo_list, current_combo, manifest): workspace_list.extend([os.path.join(workspace_root, os.path.normpath(x.root)) for x in repo_list]) # Filter sparse data entries that apply to the current combo or all combos - sparse_data = [x for x in manifest.sparse_data if x.combination is None or x.combination == current_combo] + # Build list in three steps (all, repo, combo) to make sure the priority is correct + sparse_data = [] + sparse_data.extend([x for x in manifest.sparse_data if x.remote_name is None and x.combination is None]) + sparse_data.extend([x for x in manifest.sparse_data if x.remote_name is not None and x.combination is None]) + sparse_data.extend([x for x in manifest.sparse_data if x.remote_name is not None and x.combination == current_combo]) # Create object that processes build information. build_info = BuildInfo(workspace_list) @@ -602,8 +606,8 @@ if __name__ == "__main__": # Program Information # __title__ = 'Sparse Checkout' - __version__ = '0.02.00' - __copyright__ = 'Copyright (c) 2017, Intel Corporation. All rights reserved.' + __version__ = '0.03.00' + __copyright__ = 'Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.' # # Processes command line arguments -- 2.21.0.windows.1