[PATCH] D129263: Windows packaging script. Check administrator permissions and/or 7-Zip version.

Carlos Alberto Enciso via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 8 04:57:18 PDT 2022


CarlosAlbertoEnciso updated this revision to Diff 443213.
CarlosAlbertoEnciso added a comment.

Change the test for administrator permissions by using the `mklink` command.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D129263/new/

https://reviews.llvm.org/D129263

Files:
  llvm/utils/release/build_llvm_release.bat


Index: llvm/utils/release/build_llvm_release.bat
===================================================================
--- llvm/utils/release/build_llvm_release.bat
+++ llvm/utils/release/build_llvm_release.bat
@@ -16,6 +16,30 @@
 
 :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 Unique temporal filename to use by the 'mklink' command.
+set "link_name=%temp%\%username%_%random%_%random%.tmp"
+
+REM Check for correct 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 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 temporal symbolic link.
+    rd "%link_name%"
+  )
+)
+
 REM Prerequisites:
 REM
 REM   Visual Studio 2019, CMake, Ninja, GNUWin32, SWIG, Python 3,


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D129263.443213.patch
Type: text/x-patch
Size: 1270 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220708/0c7fe679/attachment.bin>


More information about the llvm-commits mailing list