From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.2596.1601083731573090498 for ; Fri, 25 Sep 2020 18:28:51 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: nathaniel.l.desimone@intel.com) IronPort-SDR: OCdUZflhDQTdy39uS0b7hF1sSf9GdzgsHvvbdpLPOQ7lCAEKRgpew1t031vXGNSH2/ZSEONeou 1mP61Hs2FFRA== X-IronPort-AV: E=McAfee;i="6000,8403,9755"; a="160930076" X-IronPort-AV: E=Sophos;i="5.77,303,1596524400"; d="scan'208";a="160930076" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2020 18:28:49 -0700 IronPort-SDR: F7fdbbf1WMxtI75GNsTI5y8yi8w3uHTuVGwaQv62+daFJ+k45PcfvTvYEig/EOU0oWlbhtqjNM x47UL+yZJWfg== X-IronPort-AV: E=Sophos;i="5.77,303,1596524400"; d="scan'208";a="513245999" Received: from nldesimo-desk1.amr.corp.intel.com ([10.212.4.151]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2020 18:28:49 -0700 From: "Nate DeSimone" To: devel@edk2.groups.io Cc: Ashley E Desimone , Puja Pandya , Bret Barkelew , Prince Agyeman , Erik Bjorge Subject: [edk2-staging/EdkRepo] [PATCH V3 2/2] EdkRepo: Add support for subst drives Date: Fri, 25 Sep 2020 18:28:26 -0700 Message-Id: <20200926012826.4976-3-nathaniel.l.desimone@intel.com> X-Mailer: git-send-email 2.27.0.windows.1 In-Reply-To: <20200926012826.4976-1-nathaniel.l.desimone@intel.com> References: <20200926012826.4976-1-nathaniel.l.desimone@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit get_workspace_path() now converts a virtual drive path to a real path before any git repo operations are done. Cc: Ashley E Desimone Cc: Puja Pandya Cc: Bret Barkelew Cc: Prince Agyeman Cc: Erik Bjorge Signed-off-by: Nate DeSimone --- edkrepo/commands/clone_command.py | 8 ++++++++ edkrepo/config/config_factory.py | 10 +++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/edkrepo/commands/clone_command.py b/edkrepo/commands/clone_command.py index f638090..8769102 100644 --- a/edkrepo/commands/clone_command.py +++ b/edkrepo/commands/clone_command.py @@ -9,6 +9,7 @@ import os import shutil +import sys from edkrepo.commands.edkrepo_command import EdkrepoCommand from edkrepo.commands.edkrepo_command import SubmoduleSkipArgument, SourceManifestRepoArgument @@ -20,6 +21,7 @@ from edkrepo.common.edkrepo_exception import EdkrepoInvalidParametersException, from edkrepo.common.edkrepo_exception import EdkrepoManifestNotFoundException from edkrepo.common.humble import CLONE_INVALID_WORKSPACE, CLONE_INVALID_PROJECT_ARG, CLONE_INVALID_COMBO_ARG from edkrepo.common.humble import SPARSE_CHECKOUT, CLONE_INVALID_LOCAL_ROOTS +from edkrepo.common.pathfix import get_subst_drive_dict from edkrepo.common.workspace_maintenance.workspace_maintenance import case_insensitive_single_match from edkrepo.common.workspace_maintenance.manifest_repos_maintenance import pull_all_manifest_repos, find_project_in_all_indices from edkrepo.common.workspace_maintenance.manifest_repos_maintenance import list_available_manifest_repos @@ -77,6 +79,12 @@ class CloneCommand(EdkrepoCommand): workspace_dir = os.getcwd() else: workspace_dir = os.path.abspath(workspace_dir) + if sys.platform == "win32": + subst = get_subst_drive_dict() + drive = os.path.splitdrive(workspace_dir)[0][0].upper() + if drive in subst: + workspace_dir = os.path.join(subst[drive], os.path.splitdrive(workspace_dir)[1][1:]) + workspace_dir = os.path.normpath(workspace_dir) if os.path.isdir(workspace_dir) and os.listdir(workspace_dir): raise EdkrepoInvalidParametersException(CLONE_INVALID_WORKSPACE) if not os.path.isdir(workspace_dir): diff --git a/edkrepo/config/config_factory.py b/edkrepo/config/config_factory.py index a82a438..fe69460 100644 --- a/edkrepo/config/config_factory.py +++ b/edkrepo/config/config_factory.py @@ -11,13 +11,16 @@ import os import sys import configparser import collections -from ctypes import * +if sys.platform == "win32": + from ctypes import oledll, c_void_p, c_uint32, c_wchar_p + from ctypes import create_unicode_buffer import edkrepo.config.humble.config_factory_humble as humble from edkrepo.common.edkrepo_exception import EdkrepoGlobalConfigNotFoundException, EdkrepoConfigFileInvalidException from edkrepo.common.edkrepo_exception import EdkrepoWorkspaceInvalidException, EdkrepoGlobalDataDirectoryNotFoundException from edkrepo.common.edkrepo_exception import EdkrepoConfigFileReadOnlyException from edkrepo.common.humble import MIRROR_PRIMARY_REPOS_MISSING, MIRROR_DECODE_WARNING, MAX_PATCH_SET_INVALID +from edkrepo.common.pathfix import get_subst_drive_dict from edkrepo_manifest_parser import edk_manifest from edkrepo.common.pathfix import expanduser @@ -238,6 +241,11 @@ def get_workspace_path(): while True: if os.path.isdir(os.path.join(path, "repo")): if os.path.isfile(os.path.join(os.path.join(path, "repo"), "Manifest.xml")): + if sys.platform == "win32": + subst = get_subst_drive_dict() + drive = os.path.splitdrive(path)[0][0].upper() + if drive in subst: + path = os.path.join(subst[drive], os.path.splitdrive(path)[1][1:]) return path if os.path.dirname(path) == path: break -- 2.27.0.windows.1