From df7c5772a2db6dd7bcf4a89bae4543a8f8984916 Mon Sep 17 00:00:00 2001 From: Carlos Alberto Enciso Date: Tue, 12 Jul 2022 06:37:29 +0100 Subject: [PATCH] Update the Windows packaging script. As discussed on: https://discourse.llvm.org/t/build-llvm-release-bat-script-options/63146/6 Latest 7-zip versions (21.x) require administrator permissions to create symbolic links. Check if any of the following conditions is true: - Version of 7-zip is 20.x or older - Script is running with administrator permissions Reviewed By: hans, thieta Differential Revision: https://reviews.llvm.org/D129263 --- llvm/utils/release/build_llvm_release.bat | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/llvm/utils/release/build_llvm_release.bat b/llvm/utils/release/build_llvm_release.bat index e44fc14..5fa1409 100755 --- a/llvm/utils/release/build_llvm_release.bat +++ b/llvm/utils/release/build_llvm_release.bat @@ -1,5 +1,5 @@ @echo off -setlocal +setlocal enabledelayedexpansion if "%1"=="" goto usage goto begin @@ -16,6 +16,30 @@ exit /b :begin +REM Note: +REM 7zip versions 21.x and higher will try to extract the symlinks in +REM llvm's git archive, which requires running as administrator. + +REM Check 7-zip version and/or administrator permissions. +for /f "delims=" %%i in ('7z.exe ^| findstr /r "2[1-9].[0-9][0-9]"') do set version=%%i +if not "%version%"=="" ( + REM Unique temporary filename to use by the 'mklink' command. + set "link_name=%temp%\%username%_%random%_%random%.tmp" + + REM As the 'mklink' requires elevated permissions, the symbolic link + REM creation will fail if the script is not running as administrator. + mklink /d "!link_name!" . 1>nul 2>nul + if errorlevel 1 ( + echo. + echo Script requires administrator permissions, or a 7-zip version 20.x or older. + echo Current version is "%version%" + exit /b + ) else ( + REM Remove the temporary symbolic link. + rd "!link_name!" + ) +) + REM Prerequisites: REM REM Visual Studio 2019, CMake, Ninja, GNUWin32, SWIG, Python 3, -- 2.7.4