diff options
| -rw-r--r-- | .github/actions/check-cc-cygwin/action.yml | 26 | ||||
| -rw-r--r-- | .github/workflows/test.yml | 35 | ||||
| -rw-r--r-- | README.md | 8 | ||||
| -rw-r--r-- | action.yml | 62 |
4 files changed, 4 insertions, 127 deletions
diff --git a/.github/actions/check-cc-cygwin/action.yml b/.github/actions/check-cc-cygwin/action.yml deleted file mode 100644 index 042709f..0000000 --- a/.github/actions/check-cc-cygwin/action.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Check cc/c++ -description: Check cc/c++ (on Cygwin) -runs: - using: composite - steps: - - run: | - check_tool() { - local exe - for exe; do - full_path="$( command -v "$exe" )" - echo "$full_path" - - output="$( "$full_path" --version )" - echo "$output" - - # Is this really the most stable piece of `gcc --version` output? - if ! echo "$output" | grep -F -- "This is free software; see the source for copying conditions."; then - echo 'Unexpected `'"$exe"' --version` output.' >&2 - exit 1 - fi - done - } - - check_tool cc - check_tool c++ - shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8cf771c..1a62ee6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,41 +9,6 @@ on: workflow_dispatch: jobs: - cygwin: - strategy: - # It's much easier to re-run as few jobs as possible: - fail-fast: false - matrix: - hardlinks: [0, 1] - runs-on: windows-latest - name: 'Cygwin: hardlinks${{ matrix.hardlinks }}' - defaults: - run: - shell: pwsh - steps: - - name: Checkout - uses: actions/checkout@v6 - - name: Install Cygwin - uses: egor-tensin/setup-cygwin@v4 - - name: Set up MinGW - id: setup - uses: ./ - with: - cygwin: 1 - cc: 1 - hardlinks: '${{ matrix.hardlinks }}' - - name: Build foo.exe - run: | - & '${{ steps.setup.outputs.gxx }}' -std=c++14 -o foo foo.cpp - - name: Run foo.exe - uses: ./.github/actions/run-foo - - name: Check cc/c++ - uses: ./.github/actions/check-cc - if: matrix.hardlinks - - name: Check cc/c++ - uses: ./.github/actions/check-cc-cygwin - if: '!matrix.hardlinks' - test: strategy: # It's much easier to re-run as few jobs as possible: @@ -14,14 +14,10 @@ Use it in your workflow like this: * `x64` is the default value for the `platform` parameter and can be omitted. Use `x86` if you want to build 32-bit binaries. -* Set the `cygwin` parameter to `1` to set up MinGW inside an existing Cygwin -installation (see [my other action] for setting up Cygwin itself). * `cc` and `c++` executables are set up, pointing to the `*-gcc` and `*-g++` executables. Disable this by setting the `cc` parameter to `0`. -[my other action]: https://github.com/egor-tensin/setup-cygwin - API --- @@ -29,12 +25,8 @@ API | --------- | ----- | ------- | ----------- | platform | x64 | ✓ | Install the x86_64 toolchain. | | *any* | | Install the i686 toolchain. -| cygwin | *any* | ✓ | Install native binaries. -| | 1 | | Install Cygwin packages. | cc | 1 | ✓ | Set up `cc`/`c++` executables. | | *any* | | Don't set up `cc`/`c++`. -| hardlinks | *any* | ✓ | Cygwin: don't convert any symlinks. -| | 1 | | Cygwin: convert symlinks in /usr/bin to hardlinks. | version | | ✓ | Install the default (latest) version. | | *any* | | Install the specified version, if possible. @@ -6,18 +6,10 @@ inputs: description: Target platform required: false default: x64 - cygwin: - description: Install Cygwin packages - required: false - default: 0 cc: description: Set up cc/c++ executables required: false default: 1 - hardlinks: - description: On Cygwin, replace executable symlinks with hardlinks - required: false - default: 0 version: description: Specify mingw version; will fall back to package manager default if not supplied required: false @@ -47,8 +39,7 @@ runs: New-Variable mingw_version_supplied -Value ('${{ inputs.version }}' -ne '') -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_host) -Option Constant + New-Variable windows_host -Value ($os -eq 'Windows') -Option Constant New-Variable x64 -Value ('${{ inputs.platform }}' -eq 'x64') -Option Constant @@ -74,9 +65,6 @@ runs: if ($script:linux_host) { sudo apt-get update sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends $Packages - } elseif ($script:cygwin_host) { - $choco = Locate-Choco - & $choco install $Packages -y --no-progress --source=cygwin } elseif ($script:windows_host) { $choco = Locate-Choco & $choco upgrade $Packages -y --no-progress --allow-downgrade @@ -93,9 +81,6 @@ runs: if ($script:linux_host) { sudo apt-get autoremove --purge -yq $Packages - } elseif ($script:cygwin_host) { - $choco = Locate-Choco - & $choco uninstall $Packages -y --no-progress --source=cygwin } elseif ($script:windows_host) { $choco = Locate-Choco & $choco uninstall $Packages -y --no-progress @@ -120,18 +105,6 @@ runs: sudo update-alternatives --set "$prefix32-g++" "/usr/bin/$prefix32-g++-posix" sudo update-alternatives --set "$prefix64-gcc" "/usr/bin/$prefix64-gcc-posix" sudo update-alternatives --set "$prefix64-g++" "/usr/bin/$prefix64-g++-posix" - } elseif ($cygwin_host) { - $pkg = if ($x64) { 'mingw64-x86_64-gcc-g++' } else { 'mingw64-i686-gcc-g++' } - if ($mingw_version_supplied) { - Install-Package $pkg --version $mingw_version - } else { - Install-Package $pkg - } - - $bin_dir = cygpath.exe -wa "/usr/$prefix/sys-root/mingw/bin" - $lib_dir = cygpath.exe -wa "/usr/$prefix/sys-root/mingw/lib" - - echo $bin_dir >> $env:GITHUB_PATH } elseif ($windows_host) { $choco = Locate-Choco @@ -182,8 +155,7 @@ runs: 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_host) -Option Constant + New-Variable windows_host -Value ($os -eq 'Windows') -Option Constant New-Variable cc -Value ('${{ inputs.cc }}' -eq '1') -Option Constant @@ -198,12 +170,11 @@ runs: $exe_path = (Get-Command $Exe).Path $link_dir = if ($script:windows_host) { Split-Path $exe_path } else { '/usr/local/bin' } $link_name = if ($script:windows_host) { "$LinkName.exe" } else { $LinkName } - $link_path = if ($script:cygwin_host) { "$link_dir/$link_name" } else { Join-Path $link_dir $link_name } + $link_path = Join-Path $link_dir $link_name + echo "Creating link $link_path -> $exe_path" if ($script:linux_host) { sudo ln -f -s $exe_path $link_path - } elseif ($script:cygwin_host) { - ln.exe -f -s $exe_path $link_path } elseif ($script:windows_host) { New-Item -ItemType HardLink -Path $link_path -Value $exe_path -Force | Out-Null } @@ -215,31 +186,6 @@ runs: } shell: pwsh - - run: | - New-Variable cygwin_host -Value ('${{ inputs.cygwin }}' -eq '1') -Option Constant - New-Variable hardlinks -Value ('${{ inputs.hardlinks }}' -eq '1') -Option Constant - - if ($cygwin_host -and $hardlinks) { - echo @' - while IFS= read -d '' -r link_path; do - dest_path="$( readlink --canonicalize-existing -- "$link_path" )" - dest_ext=".${dest_path##*.}" - [ "$dest_ext" == ".$dest_path" ] && dest_ext= - link_ext=".${link_path##*.}" - [ "$link_ext" == ".$link_path" ] && link_ext= - echo "Removing symlink $link_path" && rm -f -- "$link_path" - [ "$link_ext" != "$dest_ext" ] && echo "${PATHEXT//\;/ - }" | grep -q --ignore-case --line-regexp -F -- "$dest_ext" && link_path="$link_path$dest_ext" - echo "Creating hardlink $link_path -> $dest_path" && ln -- "$dest_path" "$link_path" - done < <( find /usr/local/bin /usr/bin \ - -type l '-(' \ - -path /usr/local/bin/cc -o \ - -path /usr/local/bin/c++ \ - '-)' -print0 ) - '@ | & bash.exe --login -o errexit -o nounset -o pipefail -o igncr - } - shell: pwsh - branding: icon: star color: green |
