From nobody Tue May 7 12:15:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+65643+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+65643+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1601083733; cv=none; d=zohomail.com; s=zohoarc; b=nqSRdgGw5zl1D+rY2mquJ07jlQs/YEs0NplsgRjfN3KXks6C3xLbmfAx0jejIAGcYBN0+iNJpyTW3kmyoFGOcc2+t1buexGwb1qyvHoBDeTSgMmN8bW6fOiA0/eYnQv8ZXEVVaRadi+M9adCRufoKDs2ztNEb3DU+OaZxt3lUrU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1601083733; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=D82L1r+g8ucrsiYFhb2rQD0tJazs9zUzkwWNBkWXAZQ=; b=lrJnnuoxLx3i1yIp9Ofn/LUFNrAWGoIRXmZAgGGXShB4ah2CttuD1phDq/jAwRzA3IuzBxRXaLuwGcyErnkEDAA6/ZHqAKswLyNIP/hZwJGIa6pV10GHKRDA1fsI5aBKfR6LNl+t//VKPoqw+XqkAPNQHmCdQ5xSAWMi3N0fQ2A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+65643+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1601083733332814.2354370173746; Fri, 25 Sep 2020 18:28:53 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id YwPCYY1788612xrRfx0dimb0; Fri, 25 Sep 2020 18:28:52 -0700 X-Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web10.2557.1601083731831999581 for ; Fri, 25 Sep 2020 18:28:51 -0700 IronPort-SDR: t2Fqd5TZOgr8u28i46GS90OzhywWjlG/6yar14o14Pd0j6k8eV5JmtKbVW1/Vi7DntNoaKKuEk dejJjwjYvSUw== X-IronPort-AV: E=McAfee;i="6000,8403,9755"; a="160930074" X-IronPort-AV: E=Sophos;i="5.77,303,1596524400"; d="scan'208";a="160930074" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-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: ng1cmDkf7FGdU6QxoiPHafaFEx5ONFKOGoYsxth/UVhu2lqvr5xU5rDjS+1NqcW3uKJDbWvuRh ghfn7QVRFa7w== X-IronPort-AV: E=Sophos;i="5.77,303,1596524400"; d="scan'208";a="513245996" X-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:48 -0700 From: "Nate DeSimone" To: devel@edk2.groups.io Cc: Ashley E Desimone , Puja Pandya , Bret Barkelew , Prince Agyeman , Erik Bjorge Subject: [edk2-devel] [edk2-staging/EdkRepo] [PATCH V3 1/2] EdkRepo: Add function to enumerate subst drives Date: Fri, 25 Sep 2020 18:28:25 -0700 Message-Id: <20200926012826.4976-2-nathaniel.l.desimone@intel.com> In-Reply-To: <20200926012826.4976-1-nathaniel.l.desimone@intel.com> References: <20200926012826.4976-1-nathaniel.l.desimone@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,nathaniel.l.desimone@intel.com X-Gm-Message-State: yQ4zhTKflK9LABP1FqqCW8t5x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1601083732; bh=M4lNuddp60kMkxH7CDnUoRsBL9btd/YueZUWUAbOkoU=; h=Cc:Date:From:Reply-To:Subject:To; b=dJtLJsAV6kdVvbA26/JxXMYzPCWxpiBLmCcYAVSaw6tySeI7a82EO50m76V//AMKQlS SfDciRSZWvIORhNgpliYtU8xYLz85T8VnS2qi50FLT1pnnstJFiyr3UtoNnl64G7jZZlY jdpnws/cM8Vu+lnT6FpzkdBSwbvqa0YIw4E= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Cc: Ashley E Desimone Cc: Puja Pandya Cc: Bret Barkelew Cc: Prince Agyeman Cc: Erik Bjorge Signed-off-by: Nate DeSimone Reviewed-by: Ashley DeSimone Reviewed-by: Erik Bjorge --- edkrepo/common/pathfix.py | 50 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/edkrepo/common/pathfix.py b/edkrepo/common/pathfix.py index 1a9c20f..2775442 100644 --- a/edkrepo/common/pathfix.py +++ b/edkrepo/common/pathfix.py @@ -3,7 +3,7 @@ ## @file # checkout_command.py # -# Copyright (c) 2018- 2020, Intel Corporation. All rights reserved.
+# Copyright (c) 2018 - 2020, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent # import os @@ -11,6 +11,7 @@ import sys if sys.platform =3D=3D "win32": from ctypes import windll, POINTER, byref, GetLastError, Structure, Wi= nError from ctypes import c_void_p, c_ushort, c_int, c_ulong, c_wchar, c_wch= ar_p + from ctypes import create_unicode_buffer =20 def _is_wow64_process(): kernel32 =3D windll.kernel32 @@ -211,3 +212,50 @@ def expanduser(path): userhome =3D os.path.join(os.path.dirname(userhome), path[1:i]) =20 return userhome + path[i:] + +def get_subst_drive_dict(): + if sys.platform !=3D "win32": + return {} + def _query_subst_drive(drive_letter): + kernel32 =3D windll.kernel32 + QueryDosDevice =3D kernel32.QueryDosDeviceW + QueryDosDevice.argtypes =3D [c_wchar_p, c_wchar_p, c_ulong] + QueryDosDevice.restype =3D c_ulong + MAX_PATH =3D 260 + + if len(drive_letter) > 1 or len(drive_letter) =3D=3D 0: + raise ValueError("Bad drive letter") + drive =3D '{}:'.format(drive_letter.upper()) + drive_buffer =3D create_unicode_buffer(drive) + target_path_buffer_size =3D c_ulong(MAX_PATH) + target_path_buffer =3D create_unicode_buffer(target_path_buffer_si= ze.value) + while True: + count =3D QueryDosDevice(drive_buffer, target_path_buffer, tar= get_path_buffer_size) + if count =3D=3D 0: + last_error =3D GetLastError() + if last_error =3D=3D 122: #ERROR_INSUFFICIENT_BUFFER + #Increase the buffer size and try again + target_path_buffer_size =3D c_ulong((target_path_buffe= r_size.value * 161) / 100) + target_path_buffer =3D create_unicode_buffer(target_pa= th_buffer_size.value) + elif last_error =3D=3D 2: #ERROR_FILE_NOT_FOUND + #This is an invalid drive, return an empty string + return '' + else: + raise WinError(last_error) + else: + break + target_path =3D target_path_buffer.value + if len(target_path) > 4 and target_path[0:4] =3D=3D '\\??\\': + if (ord(target_path[4]) >=3D ord('A') and ord(target_path[4]) = <=3D ord('Z')) or \ + (ord(target_path[4]) >=3D ord('a') and ord(target_path[4])= <=3D ord('z')): + #This is a SUBST'd drive, return the path + return target_path[4:].strip() + #This is a non-SUBST'd (aka real) drive, return an empty string + return '' + subst_dict =3D {} + for index in range(26): + drive_letter =3D chr(ord('A') + index) + target_path =3D _query_subst_drive(drive_letter) + if target_path !=3D '': + subst_dict[drive_letter] =3D target_path + return subst_dict --=20 2.27.0.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#65643): https://edk2.groups.io/g/devel/message/65643 Mute This Topic: https://groups.io/mt/77130071/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Tue May 7 12:15:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+65642+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+65642+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1601083733; cv=none; d=zohomail.com; s=zohoarc; b=S/JykTCPmxjwuDr+gdcHbWnbI210G40BWCbt2Z9hkEBkhbj0ATyGIl9Zt7fvgwhKoY89LtZ1flapwRS4aTpS13mp32P3t/ck9NrPtZciPbo2AdghHb4UfnAD5PYZZl2ZtPNsnRGJ55ESNP6dwhZZzlghenTtPjnje/H4lnb2LbU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1601083733; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=wDf0IfEw4bMx6cTCB3SD3PC7uHZb/wRGPTSx2HiGr0s=; b=UCGC4eHB3H6p/d6OLkCMivKqP3IybRBLW5q81mLiYuppu8XRlAfwCzWO4hpj3DYwGpnsKjciyKy15vA9T7d4DMS5s8O6AGvN4TmcJbvkiydfZAnJ6dFublAyG3GaeMN249RaPaFNbeJYTg+8ojQrYC8d6iNJFQjCMwm4rtsSbcw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+65642+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 160108373381536.81472292136198; Fri, 25 Sep 2020 18:28:53 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id HNSUYY1788612xeKpRBkPz6y; Fri, 25 Sep 2020 18:28:53 -0700 X-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 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 X-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" X-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-devel] [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> In-Reply-To: <20200926012826.4976-1-nathaniel.l.desimone@intel.com> References: <20200926012826.4976-1-nathaniel.l.desimone@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,nathaniel.l.desimone@intel.com X-Gm-Message-State: MuEWf9MLL9yy0fTvBSffLPjGx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1601083733; bh=sJb8G39yrUlWIgb3Q1mkuHjSSRESZLanb+C/axyYhlE=; h=Cc:Date:From:Reply-To:Subject:To; b=F4ErQito4l5R1NPj56vuPOZH8YkalkBPcH6I2pQhrThhxXSBWzFTO+N/skmSMla0ueq cbPlyPUSqNoJBhfcBpvfyOL+JjAzo63A7bv+Rb9slj04Fxkdl5zwc911n8bP0Ov2W4sBY RJ2VHVD6tURrDXkdY4IrbYSrB+UEU36RTYA= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Ashley DeSimone Reviewed-by: Erik Bjorge --- 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_com= mand.py index f638090..8769102 100644 --- a/edkrepo/commands/clone_command.py +++ b/edkrepo/commands/clone_command.py @@ -9,6 +9,7 @@ =20 import os import shutil +import sys =20 from edkrepo.commands.edkrepo_command import EdkrepoCommand from edkrepo.commands.edkrepo_command import SubmoduleSkipArgument, Source= ManifestRepoArgument @@ -20,6 +21,7 @@ from edkrepo.common.edkrepo_exception import EdkrepoInval= idParametersException, from edkrepo.common.edkrepo_exception import EdkrepoManifestNotFoundExcept= ion from edkrepo.common.humble import CLONE_INVALID_WORKSPACE, CLONE_INVALID_P= ROJECT_ARG, CLONE_INVALID_COMBO_ARG from edkrepo.common.humble import SPARSE_CHECKOUT, CLONE_INVALID_LOCAL_ROO= TS +from edkrepo.common.pathfix import get_subst_drive_dict from edkrepo.common.workspace_maintenance.workspace_maintenance import cas= e_insensitive_single_match from edkrepo.common.workspace_maintenance.manifest_repos_maintenance impor= t pull_all_manifest_repos, find_project_in_all_indices from edkrepo.common.workspace_maintenance.manifest_repos_maintenance impor= t list_available_manifest_repos @@ -77,6 +79,12 @@ class CloneCommand(EdkrepoCommand): workspace_dir =3D os.getcwd() else: workspace_dir =3D os.path.abspath(workspace_dir) + if sys.platform =3D=3D "win32": + subst =3D get_subst_drive_dict() + drive =3D os.path.splitdrive(workspace_dir)[0][0].upper() + if drive in subst: + workspace_dir =3D os.path.join(subst[drive], os.path.split= drive(workspace_dir)[1][1:]) + workspace_dir =3D os.path.normpath(workspace_dir) if os.path.isdir(workspace_dir) and os.listdir(workspace_dir): raise EdkrepoInvalidParametersException(CLONE_INVALID_WORKSPAC= E) if not os.path.isdir(workspace_dir): diff --git a/edkrepo/config/config_factory.py b/edkrepo/config/config_facto= ry.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 =3D=3D "win32": + from ctypes import oledll, c_void_p, c_uint32, c_wchar_p + from ctypes import create_unicode_buffer =20 import edkrepo.config.humble.config_factory_humble as humble from edkrepo.common.edkrepo_exception import EdkrepoGlobalConfigNotFoundEx= ception, EdkrepoConfigFileInvalidException from edkrepo.common.edkrepo_exception import EdkrepoWorkspaceInvalidExcept= ion, EdkrepoGlobalDataDirectoryNotFoundException from edkrepo.common.edkrepo_exception import EdkrepoConfigFileReadOnlyExce= ption from edkrepo.common.humble import MIRROR_PRIMARY_REPOS_MISSING, MIRROR_DEC= ODE_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 =20 @@ -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"), "Ma= nifest.xml")): + if sys.platform =3D=3D "win32": + subst =3D get_subst_drive_dict() + drive =3D os.path.splitdrive(path)[0][0].upper() + if drive in subst: + path =3D os.path.join(subst[drive], os.path.splitd= rive(path)[1][1:]) return path if os.path.dirname(path) =3D=3D path: break --=20 2.27.0.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#65642): https://edk2.groups.io/g/devel/message/65642 Mute This Topic: https://groups.io/mt/77130070/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-