From: "Nate DeSimone" <nathaniel.l.desimone@intel.com>
To: devel@edk2.groups.io
Cc: Ashley E Desimone <ashley.e.desimone@intel.com>,
Puja Pandya <puja.pandya@intel.com>,
Bret Barkelew <Bret.Barkelew@microsoft.com>,
Prince Agyeman <prince.agyeman@intel.com>,
Erik Bjorge <erik.c.bjorge@intel.com>
Subject: [edk2-staging/EdkRepo] [PATCH V1 2/2] EdkRepo: Add support for subst drives
Date: Wed, 5 Aug 2020 22:46:35 -0700 [thread overview]
Message-ID: <20200806054635.4809-3-nathaniel.l.desimone@intel.com> (raw)
In-Reply-To: <20200806054635.4809-1-nathaniel.l.desimone@intel.com>
get_workspace_path() now converts a virtual drive path
to a real path before any git repo operations are done.
Cc: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Signed-off-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
---
edkrepo/commands/clone_command.py | 6 ++++++
edkrepo/config/config_factory.py | 10 +++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/edkrepo/commands/clone_command.py b/edkrepo/commands/clone_command.py
index f638090..650bc81 100644
--- a/edkrepo/commands/clone_command.py
+++ b/edkrepo/commands/clone_command.py
@@ -20,6 +20,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_list
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 +78,11 @@ class CloneCommand(EdkrepoCommand):
workspace_dir = os.getcwd()
else:
workspace_dir = os.path.abspath(workspace_dir)
+ subst = get_subst_drive_list()
+ for drive in subst.keys():
+ if '{}:'.format(drive) == os.path.splitdrive(workspace_dir)[0].upper():
+ 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..45ac16f 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_list
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_list()
+ for drive in subst.keys():
+ if '{}:'.format(drive) == os.path.splitdrive(path)[0].upper():
+ 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
next prev parent reply other threads:[~2020-08-06 5:46 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-06 5:46 [edk2-staging/EdkRepo] [PATCH V1 0/2] EdkRepo: Add support for SUBST drives Nate DeSimone
2020-08-06 5:46 ` [edk2-staging/EdkRepo] [PATCH V1 1/2] EdkRepo: Add function to enumerate subst drives Nate DeSimone
2020-08-18 21:11 ` Ashley E Desimone
2020-08-06 5:46 ` Nate DeSimone [this message]
2020-08-18 21:15 ` [edk2-staging/EdkRepo] [PATCH V1 2/2] EdkRepo: Add support for " Ashley E Desimone
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200806054635.4809-3-nathaniel.l.desimone@intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox