From 9bb572f71c8fe8e39bf88ebf74fc4479aefc89b8 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Thu, 7 Jan 2021 14:03:30 +0300 Subject: unified package mgmt routines --- action.yml | 57 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/action.yml b/action.yml index 9381bb5..0e7253f 100644 --- a/action.yml +++ b/action.yml @@ -56,8 +56,47 @@ runs: } } + function Install-Package { + param( + [Parameter(Mandatory=$true, ValueFromRemainingArguments=$true)] + [string[]] $Packages + ) + + if ($script:linux_host) { + sudo apt-get update -yq + sudo apt-get install -yq --no-install-recommends $Packages + } elseif ($script:cygwin_host) { + $choco = Locate-Choco + & $choco install -y --no-progress --source=cygwin $Packages + } elseif ($script:windows_host) { + $choco = Locate-Choco + & $choco install -y --no-progress $Packages + } else { + throw "Sorry, installing packages is unsupported on $script:os" + } + } + + function Remove-Package { + param( + [Parameter(Mandatory=$true, ValueFromRemainingArguments=$true)] + [string[]] $Packages + ) + + if ($script:linux_host) { + sudo apt-get autoremove --purge -yq $Packages + } elseif ($script:cygwin_host) { + $choco = Locate-Choco + & $choco uninstall -y --no-progress --source=cygwin $Packages + } elseif ($script:windows_host) { + $choco = Locate-Choco + & $choco uninstall -y --no-progress $Packages + } else { + throw "Sorry, removing packages is unsupported on $script:os" + } + } + if ($linux_host) { - sudo apt install mingw-w64 + Install-Package mingw-w64 # Make the compilers use the POSIX threading model, whatever that # is. Without it, the stuff from //etc. doesn't @@ -77,9 +116,8 @@ runs: "/usr/$prefix64/lib/libwinpthread.dll.a" } } elseif ($cygwin_host) { - $choco = Locate-Choco - $cygwin_pkg = if ($x64) { 'mingw64-x86_64-gcc-g++' } else { 'mingw64-i686-gcc-g++' } - & $choco install -y --no-progress --source=cygwin $cygwin_pkg + $pkg = if ($x64) { 'mingw64-x86_64-gcc-g++' } else { 'mingw64-i686-gcc-g++' } + Install-Package $pkg if ($static_workaround) { $cygwin_lib = Join-Path C: tools cygwin usr $prefix sys-root mingw lib @@ -106,15 +144,14 @@ runs: $mingw_lib = Join-Path $mingw_root $prefix lib if ($x64) { - # Assuming the 64-bit version is installed. If 32-bit version - # is installed, we won't detect that. But it's not _that_ - # important, and we save a lot of time. - & $choco install -y --no-progress mingw + # If 32-bit version is installed, we won't detect that. But + # it's not _that important, and we save a lot of time. + Install-Package mingw echo $mingw64_bin >> $env:GITHUB_PATH } else { # Assuming the 64-bit version is installed. - & $choco uninstall -y --no-progress mingw - & $choco install -y --no-progress --x86 mingw + Remove-Package mingw + Install-Package --x86 mingw echo $mingw32_bin >> $env:GITHUB_PATH } -- cgit v1.2.3