summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdonais Romero González <[email protected]>2024-06-27 16:15:58 -0700
committerGitHub <[email protected]>2024-06-27 16:15:58 -0700
commit77a45280ca061d8691b2b1534bfe0198b88cb4e1 (patch)
tree200236a019eeee7e0b4e08cb0b23839ea0d7e611
parent3327adfd7bfd41cc4065312ca4893a0aa2ce1a01 (diff)
parentf9eb04d34edd823873e491a7da6e6ed7a064e823 (diff)
Improve version info, vsix installation, and update building locally documentation
-rw-r--r--.github/scripts/Install-Vsix.ps182
-rw-r--r--.github/workflows/Code-Scanning.yml2
-rw-r--r--.github/workflows/ci-pr.yml2
-rw-r--r--.github/workflows/ci.yml2
-rw-r--r--Build-SampleSet.ps141
-rw-r--r--Building-Locally.md6
-rw-r--r--Env-Vars.ps19
7 files changed, 64 insertions, 80 deletions
diff --git a/.github/scripts/Install-Vsix.ps1 b/.github/scripts/Install-Vsix.ps1
index 24c7ef45..50ef088b 100644
--- a/.github/scripts/Install-Vsix.ps1
+++ b/.github/scripts/Install-Vsix.ps1
@@ -1,68 +1,38 @@
<#
.SYNOPSIS
-Checks WDK vsix version and downloads and installs as necessary.
+Download and install the latest WDK VSIX.
#>
-[CmdletBinding()]
-param(
- [bool]$optimize = $false
-)
+# set uri by resolving amd64 vsix
+$uri = "https://marketplace.visualstudio.com$((Invoke-WebRequest -Uri "https://marketplace.visualstudio.com/items?itemName=DriverDeveloperKits-WDK.WDKVsix").Links | Where-Object outerHTML -like '*(amd64)*' | select -expand href)"
-$root = Get-Location
+# set download version
+$uri_version = ([regex]'(\d+\.)(\d+\.)(\d+\.)(\d+)').Matches($uri).Value
-# launch developer powershell (if necessary)
-if (-not $env:VSCMD_VER) {
- Import-Module (Resolve-Path "$env:ProgramFiles\Microsoft Visual Studio\2022\*\Common7\Tools\Microsoft.VisualStudio.DevShell.dll")
- Enter-VsDevShell -VsInstallPath (Resolve-Path "$env:ProgramFiles\Microsoft Visual Studio\2022\*")
- cd $root
-}
-
-# source environment variables
-. .\Env-Vars.ps1
+# set msbuild path
+$msbuild_path = (Resolve-Path "$env:ProgramFiles\Microsoft Visual Studio\2022\*\MSBuild\")
-$version = $env:SAMPLES_VSIX_VERSION
-$uri = $env:SAMPLES_VSIX_URI
+# download vsix, expand, and store the downloaded version extracted from the extension manifest
+"Downloading WDK VSIX version: $uri_version..."
+Invoke-WebRequest -Uri "$uri" -OutFile wdk.zip
+"Expanding WDK VSIX archive..."
+Expand-Archive ".\wdk.zip" .\
+"Extracting version from manifest..."
+$downloaded_version = ([xml](Get-Content .\extension.vsixmanifest)).PackageManifest.Metadata.Identity.Version
+"Downloaded WDK VSIX version: $downloaded_version"
-function PrintWdkVsix {
- $installed = ls "${env:ProgramData}\Microsoft\VisualStudio\Packages\Microsoft.Windows.DriverKit,version=*" | Select -ExpandProperty Name
- "WDK Vsix Version: $installed"
+# copy msbuild files, extension manifest, and check installed version from the extension manifest
+"Copying WDK extension files to build path..."
+cp (".\`$MSBuild\*", ".\extension.vsixmanifest") "$msbuild_path" -Recurse -Force
+"Extracting version from copied manifest..."
+$installed_version = ([xml](Get-Content ${msbuild_path}\extension.vsixmanifest)).PackageManifest.Metadata.Identity.Version
+"Installed WDK VSIX Version: $installed_version"
+if (-not ("$downloaded_version" -eq "$installed_version")) {
+ "WDK VSIX installation failed due to version mismatch"
+ exit 1
}
-function TestWdkVsix {
- Test-Path "${env:ProgramData}\Microsoft\VisualStudio\Packages\Microsoft.Windows.DriverKit,version=$version"
-}
-
-if ($optimize) {
- "---> Downloading vsix and configuring build environment..."
- Invoke-WebRequest -Uri "$uri" -OutFile wdk.zip
- Expand-Archive ".\wdk.zip" .\
- cp ".\`$MSBuild\*" (Resolve-Path "$env:ProgramFiles\Microsoft Visual Studio\2022\*\MSBuild\") -Recurse -Force
- "<--- Finished"
-}
-else {
- "Getting installed WDK vsix..."
- PrintWdkVsix
- "Checking the WDK.vsix version installed..."
- if (-not (TestWdkVsix)) {
- "The correct WDK vsix is not installed."
- "Will attempt to download and install now..."
- Invoke-WebRequest -Uri "$uri" -OutFile wdk.vsix
- "Finished downloading."
- "Starting install process. This will take some time to complete..."
- Start-Process vsixinstaller -ArgumentList "/f /q /sp .\wdk.vsix" -wait
- "The install process has finished."
- "Checking the WDK.vsix version installed..."
- if (TestWdkVsix) {
- PrintWdkVsix
- "The WDK vsix version is OK"
- }
- else {
- "The WDK vsix install FAILED"
- Write-Host "`u{274C} wdk vsix install had an issue"
- Write-Error "the wdk vsix cannot be installed at this time"
- exit 1
- }
- }
-} \ No newline at end of file
+# set github environment variable for vsix version
+"SAMPLES_VSIX_VERSION=$installed_version" | Out-File -FilePath "$env:GITHUB_ENV" -Append
diff --git a/.github/workflows/Code-Scanning.yml b/.github/workflows/Code-Scanning.yml
index 32bb5a65..cd0d8abf 100644
--- a/.github/workflows/Code-Scanning.yml
+++ b/.github/workflows/Code-Scanning.yml
@@ -38,7 +38,7 @@ jobs:
submodules: 'recursive'
- name: Install WDK VSIX
- run: .\.github\scripts\Install-Vsix.ps1 -optimize:$true
+ run: .\.github\scripts\Install-Vsix.ps1
- name: Install Nuget Packages
run: nuget restore .\packages.config -PackagesDirectory .\packages\
diff --git a/.github/workflows/ci-pr.yml b/.github/workflows/ci-pr.yml
index a179127a..c04f4adb 100644
--- a/.github/workflows/ci-pr.yml
+++ b/.github/workflows/ci-pr.yml
@@ -23,7 +23,7 @@ jobs:
submodules: 'recursive'
- name: Install WDK VSIX
- run: .\.github\scripts\Install-Vsix.ps1 -optimize:$true
+ run: .\.github\scripts\Install-Vsix.ps1
- name: Install Nuget Packages
run: nuget restore .\packages.config -PackagesDirectory .\packages\
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 13563aa8..c35a81ec 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -23,7 +23,7 @@ jobs:
submodules: 'recursive'
- name: Install WDK VSIX
- run: .\.github\scripts\Install-Vsix.ps1 -optimize:$true
+ run: .\.github\scripts\Install-Vsix.ps1
- name: Install Nuget Packages
run: nuget restore .\packages.config -PackagesDirectory .\packages\
diff --git a/Build-SampleSet.ps1 b/Build-SampleSet.ps1
index 2197b967..adae8bb0 100644
--- a/Build-SampleSet.ps1
+++ b/Build-SampleSet.ps1
@@ -10,16 +10,13 @@ param(
$root = Get-Location
-# launch developer powershell (if necessary)
+# launch developer powershell (if necessary to prevent multiple developer sessions)
if (-not $env:VSCMD_VER) {
Import-Module (Resolve-Path "$env:ProgramFiles\Microsoft Visual Studio\2022\*\Common7\Tools\Microsoft.VisualStudio.DevShell.dll")
Enter-VsDevShell -VsInstallPath (Resolve-Path "$env:ProgramFiles\Microsoft Visual Studio\2022\*")
cd $root
}
-# source environment variables
-. .\Env-Vars.ps1
-
$ThrottleFactor = 5
$LogicalProcessors = (Get-CIMInstance -Class 'CIM_Processor' -Verbose:$false).NumberOfLogicalProcessors
@@ -56,26 +53,34 @@ finally {
}
#
-# Determine build environment: 'GitHub', 'NuGet', 'EWDK', or 'WDK'. Only used to determine build number.
+# Determine build environment: 'GitHub', 'NuGet', 'EWDK', or 'WDK'.
# Determine build number (used for exclusions based on build number). Five digits. Say, '22621'.
+# Determine NuGet package version (if applicable).
+# Determine WDK vsix version.
#
$build_environment=""
$build_number=0
+$nuget_package_version=0
+$vsix_version=""
#
-# In Github we build using Nuget only and source version from repo .\Env-Vars.ps1.
+# In Github we build using NuGet and get the version from packages and vsix version from env var set from the install vsix step.
#
if ($env:GITHUB_REPOSITORY) {
$build_environment="GitHub"
- $build_number=$env:SAMPLES_BUILD_NUMBER
+ $nuget_package_version=([regex]'(?<=x64\.)(\d+\.)(\d+\.)(\d+\.)(\d+)').Matches((Get-Childitem .\packages\*WDK.x64* -Name)).Value
+ $build_number=$nuget_package_version.split('.')[2]
+ $vsix_version = $env:SAMPLES_VSIX_VERSION
}
#
# WDK NuGet will require presence of a folder 'packages'. The version is sourced from repo .\Env-Vars.ps1.
#
-# Hack: If user has hydrated nuget packages, then use those. That will be indicated by presence of a folder named .\packages.
+# Hack: If user has hydrated nuget packages, then use those. That will be indicated by presence of a folder named '.\packages'.
+# Further, we need to test that the directory has been hydrated using '.\packages\*'.
#
-elseif(Test-Path(".\packages")) {
+elseif(Test-Path(".\packages\*")) {
$build_environment=("NuGet")
- $build_number=$env:SAMPLES_BUILD_NUMBER
+ $nuget_package_version=([regex]'(?<=x64\.)(\d+\.)(\d+\.)(\d+\.)(\d+)').Matches((Get-Childitem .\packages\*WDK.x64* -Name)).Value
+ $build_number=$nuget_package_version.split('.')[2]
}
#
# EWDK sets environment variable BuildLab. For example 'ni_release_svc_prod1.22621.2428'.
@@ -101,7 +106,19 @@ else {
Write-Error "Could not determine build environment."
exit 1
}
-
+#
+# Get the vsix version from packages if not set
+if (-not $vsix_version) {
+ $vsix_version = ls "${env:ProgramData}\Microsoft\VisualStudio\Packages\Microsoft.Windows.DriverKit,version=*" | Select -ExpandProperty Name
+ if ($vsix_version) {
+ $vsix_version = $vsix_version.split('=')[1]
+ }
+ else {
+ Write-Error "No version of the WDK VSIX could be found. The WDK VSIX is not installed."
+ exit 1
+ }
+}
+#
#
# InfVerif_AdditionalOptions
#
@@ -165,6 +182,8 @@ $SolutionsTotal = $sampleSet.Count * $Configurations.Count * $Platforms.Count
Write-Output ("Build Environment: " + $build_environment)
Write-Output ("Build Number: " + $build_number)
+if (($build_environment -eq "GitHub") -or ($build_environment -eq "NuGet")) { Write-Output ("Nuget Package Version: " + $nuget_package_version) }
+Write-Output ("WDK VSIX Version: " + $vsix_version)
Write-Output ("Samples: " + $sampleSet.Count)
Write-Output ("Configurations: " + $Configurations.Count + " (" + $Configurations + ")")
Write-Output ("Platforms: " + $Platforms.Count + " (" + $Platforms + ")")
diff --git a/Building-Locally.md b/Building-Locally.md
index bb9fc610..e3db8dde 100644
--- a/Building-Locally.md
+++ b/Building-Locally.md
@@ -79,7 +79,11 @@ To build the Windows Driver Samples you need a "driver build environment". In e
### Option A: Use WDK NuGet Packages
* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to install Visual Studio, but only complete "Step 1". You do not need to install the SDK or the WDK.
-* Install the Visual Studio Windows Driver Kit Extension (WDK.vsix). Open Visual Studio -> Extensions -> Manage Extensions... -> Online -> Visual Studio Market Place -> Windows Driver Kit -> 10.0.26100.0 -> Download
+* Install the Visual Studio Windows Driver Kit Extension (WDK.vsix).
+ * Open Visual Studio -> Extensions -> Manage Extensions... -> Browse.
+ * In the search bar type: `Windows Driver Kit`.
+ * Find the `Microsoft` signed extension.
+ * Click the Install button.
* Launch a "Developer Command Prompt for VS 2022".
* Restore WDK packages from feed :
diff --git a/Env-Vars.ps1 b/Env-Vars.ps1
deleted file mode 100644
index 0d37e03c..00000000
--- a/Env-Vars.ps1
+++ /dev/null
@@ -1,9 +0,0 @@
-# Environment variables for script sourcing.
-# Note: When a new WDK ships the following need to be updated:
-# 1. Environment variables in .\Env-Vars.ps1 (this script)
-# 2. Nuget package versions in .\packages.config
-# 3. Nuget package versions in .\Directory.Build.props
-# 4. SDK and WDK versions and WDK vsix link in .\configuration.dsc.yaml
-$env:SAMPLES_VSIX_VERSION = "10.0.26100.0"
-$env:SAMPLES_VSIX_URI = "https://marketplace.visualstudio.com/_apis/public/gallery/publishers/DriverDeveloperKits-WDK/vsextensions/WDKVsix/10.0.26100.0/vspackage?targetPlatform=5e3e564c-03bb-4499-8ae5-b2b35e9a86dc"
-$env:SAMPLES_BUILD_NUMBER = "26100"