From 206588bc29108819d6fb678b6fee67817bc3c4cb Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Sat, 28 Nov 2020 02:08:51 +0300 Subject: refactoring --- action.yml | 108 +++++++++++++++++++++++++++++-------------------------------- 1 file changed, 52 insertions(+), 56 deletions(-) diff --git a/action.yml b/action.yml index f3de1ca..21d2e1e 100644 --- a/action.yml +++ b/action.yml @@ -34,18 +34,20 @@ runs: steps: - id: setup run: | - $x64 = '${{ inputs.platform }}' -eq 'x64' - $cygwin = '${{ inputs.cygwin }}' -eq '1' - $static_workaround = '${{ inputs.static }}' -eq '1' + New-Variable os -Value '${{ runner.os }}' -Option Constant + + New-Variable linux_host -Value ($os -eq 'Linux') -Option Constant + New-Variable cygwin_host -Value ('${{ inputs.cygwin }}' -eq '1') -Option Constant + New-Variable windows_host -Value ($os -eq 'Windows' -and !$cygwin) -Option Constant + + New-Variable x64 -Value ('${{ inputs.platform }}' -eq 'x64') -Option Constant + New-Variable static_workaround -Value ('${{ inputs.static }}' -eq '1') -Option Constant $prefix32 = 'i686-w64-mingw32' $prefix64 = 'x86_64-w64-mingw32' $prefix = if ($x64) { $prefix64 } else { $prefix32 } - if ('${{ runner.os }}' -eq 'Linux') { - # ------------------------------------------------------------- - # Ubuntu - # ------------------------------------------------------------- + if ($linux_host) { sudo apt install mingw-w64 # Make the compilers use the POSIX threading model, whatever that @@ -65,57 +67,51 @@ runs: "/usr/$prefix64/lib/libpthread.dll.a" ` "/usr/$prefix64/lib/libwinpthread.dll.a" } - } elseif ('${{ runner.os }}' -eq 'Windows') { - if ($cygwin) { - # ------------------------------------------------------------- - # Cygwin - # ------------------------------------------------------------- - $cygwin_pkg = if ($x64) { 'mingw64-x86_64-gcc-g++' } else { 'mingw64-i686-gcc-g++' } - choco.exe install -y --no-progress --source=cygwin $cygwin_pkg - - if ($static_workaround) { - $cygwin_lib = Join-Path C: tools cygwin usr $prefix sys-root mingw lib - Remove-Item (Join-Path $cygwin_lib 'libpthread.dll.a') - Remove-Item (Join-Path $cygwin_lib 'libwinpthread.dll.a') - } + } elseif ($cygwin_host) { + $cygwin_pkg = if ($x64) { 'mingw64-x86_64-gcc-g++' } else { 'mingw64-i686-gcc-g++' } + choco.exe install -y --no-progress --source=cygwin $cygwin_pkg + + if ($static_workaround) { + $cygwin_lib = Join-Path C: tools cygwin usr $prefix sys-root mingw lib + Remove-Item (Join-Path $cygwin_lib 'libpthread.dll.a') + Remove-Item (Join-Path $cygwin_lib 'libwinpthread.dll.a') + } + } elseif ($windows_host) { + $mingw32 = 'mingw32' + $mingw64 = 'mingw64' + $mingw = if ($x64) { $mingw64 } else { $mingw32 } + + $mingw_install = Join-Path C: ProgramData chocolatey lib mingw tools install + + $mingw32_root = Join-Path $mingw_install $mingw32 + $mingw64_root = Join-Path $mingw_install $mingw64 + $mingw_root = Join-Path $mingw_install $mingw + + $mingw32_bin = Join-Path $mingw32_root bin + $mingw64_bin = Join-Path $mingw64_root bin + $mingw_bin = Join-Path $mingw_root bin + + $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.exe install -y --no-progress mingw + echo $mingw64_bin >> $env:GITHUB_PATH } else { - # ------------------------------------------------------------- - # Windows - # ------------------------------------------------------------- - $mingw32 = 'mingw32' - $mingw64 = 'mingw64' - $mingw = if ($x64) { $mingw64 } else { $mingw32 } - - $mingw_install = Join-Path C: ProgramData chocolatey lib mingw tools install - - $mingw32_root = Join-Path $mingw_install $mingw32 - $mingw64_root = Join-Path $mingw_install $mingw64 - $mingw_root = Join-Path $mingw_install $mingw - - $mingw32_bin = Join-Path $mingw32_root bin - $mingw64_bin = Join-Path $mingw64_root bin - $mingw_bin = Join-Path $mingw_root bin - - $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.exe install -y --no-progress mingw - echo $mingw64_bin >> $env:GITHUB_PATH - } else { - # Assuming the 64-bit version is installed. - choco.exe uninstall -y --no-progress mingw - choco.exe install -y --no-progress --x86 mingw - echo $mingw32_bin >> $env:GITHUB_PATH - } - - if ($static_workaround) { - Remove-Item (Join-Path $mingw_lib 'libpthread.dll.a') - Remove-Item (Join-Path $mingw_lib 'libwinpthread.dll.a') - } + # Assuming the 64-bit version is installed. + choco.exe uninstall -y --no-progress mingw + choco.exe install -y --no-progress --x86 mingw + echo $mingw32_bin >> $env:GITHUB_PATH + } + + if ($static_workaround) { + Remove-Item (Join-Path $mingw_lib 'libpthread.dll.a') + Remove-Item (Join-Path $mingw_lib 'libwinpthread.dll.a') } + } else { + throw "Sorry, installing MinGW is unsupported on $os" } $gcc = $prefix + '-gcc' -- cgit v1.2.3