From 914c8d9d8bdee0f4ed0cdb7bcbb70d6cadfb8851 Mon Sep 17 00:00:00 2001 From: praveenkuttappan Date: Wed, 17 Feb 2021 14:28:02 -0800 Subject: [PATCH 1/2] Handle metapackages that cannot be installed --- eng/scripts/Language-Settings.ps1 | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/eng/scripts/Language-Settings.ps1 b/eng/scripts/Language-Settings.ps1 index d2b7e5690caf..656bb7647591 100644 --- a/eng/scripts/Language-Settings.ps1 +++ b/eng/scripts/Language-Settings.ps1 @@ -13,7 +13,15 @@ function Get-python-PackageInfoFromRepo ($pkgPath, $serviceDirectory, $pkgName) { $setupLocation = $pkgPath.Replace('\','/') pushd $RepoRoot - $setupProps = (python -c "import sys; import os; sys.path.append(os.path.join('scripts', 'devops_tasks')); from common_tasks import get_package_properties; obj=get_package_properties('$setupLocation'); print('{0},{1},{2}'.format(obj[0], obj[1], obj[2]));") -split "," + $setupProps = $null + try{ + $setupProps = (python -c "import sys; import os; sys.path.append(os.path.join('scripts', 'devops_tasks')); from common_tasks import get_package_properties; obj=get_package_properties('$setupLocation'); print('{0},{1},{2}'.format(obj[0], obj[1], obj[2]));") -split "," + } + catch + { + # This is soft error and failure is expected for python metapackages + Write-Host "Failed to parse package properties for " $pkgName + } popd if (($setupProps -ne $null) -and ($setupProps[0] -eq $pkgName)) { @@ -27,6 +35,7 @@ function Get-python-PackageInfoFromRepo ($pkgPath, $serviceDirectory, $pkgName) $pkgProp.SdkType = "client" } $pkgProp.IsNewSdk = $setupProps[3] + $pkgProp.ArtifactName = $pkgName return $pkgProp } } From 0dbd8404c5dbbb037139dbeb6fb1b0bc90950fcb Mon Sep 17 00:00:00 2001 From: praveenkuttappan Date: Wed, 17 Feb 2021 17:21:16 -0800 Subject: [PATCH 2/2] Set package properties and reduce python calls to get package properties --- eng/scripts/Language-Settings.ps1 | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/eng/scripts/Language-Settings.ps1 b/eng/scripts/Language-Settings.ps1 index 656bb7647591..755894e0b8e6 100644 --- a/eng/scripts/Language-Settings.ps1 +++ b/eng/scripts/Language-Settings.ps1 @@ -6,27 +6,34 @@ $MetadataUri = "https://raw.githubusercontent.com/Azure/azure-sdk/master/_data/r $BlobStorageUrl = "https://azuresdkdocs.blob.core.windows.net/%24web?restype=container&comp=list&prefix=python%2F&delimiter=%2F" function Get-python-PackageInfoFromRepo ($pkgPath, $serviceDirectory, $pkgName) -{ - pip install packaging==20.4 -q -I - $pkgName = $pkgName.Replace('_', '-') +{ + $packageName = $pkgName.Replace('_', '-') + $pkgDirName = Split-Path $pkgPath -Leaf + if ($pkgDirName -ne $packageName) + { + # Common code triggers this function against each directory but we can skip if it doesn't match package name + return $null + } + if (Test-Path (Join-Path $pkgPath "setup.py")) { $setupLocation = $pkgPath.Replace('\','/') pushd $RepoRoot $setupProps = $null try{ + pip install packaging==20.4 -q -I $setupProps = (python -c "import sys; import os; sys.path.append(os.path.join('scripts', 'devops_tasks')); from common_tasks import get_package_properties; obj=get_package_properties('$setupLocation'); print('{0},{1},{2}'.format(obj[0], obj[1], obj[2]));") -split "," } catch { # This is soft error and failure is expected for python metapackages - Write-Host "Failed to parse package properties for " $pkgName + Write-Host "Failed to parse package properties for " $packageName } popd - if (($setupProps -ne $null) -and ($setupProps[0] -eq $pkgName)) + if (($setupProps -ne $null) -and ($setupProps[0] -eq $packageName)) { $pkgProp = [PackageProps]::new($setupProps[0], $setupProps[1], $pkgPath, $serviceDirectory) - if ($pkgName -match "mgmt") + if ($packageName -match "mgmt") { $pkgProp.SdkType = "mgmt" } @@ -34,7 +41,7 @@ function Get-python-PackageInfoFromRepo ($pkgPath, $serviceDirectory, $pkgName) { $pkgProp.SdkType = "client" } - $pkgProp.IsNewSdk = $setupProps[3] + $pkgProp.IsNewSdk = $setupProps[2] $pkgProp.ArtifactName = $pkgName return $pkgProp }