aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--.github/actions/check-cc-cygwin/action.yml26
-rw-r--r--.github/workflows/test.yml35
-rw-r--r--README.md8
-rw-r--r--action.yml62
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:
diff --git a/README.md b/README.md
index 035e1fd..a831265 100644
--- a/README.md
+++ b/README.md
@@ -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.
diff --git a/action.yml b/action.yml
index ab88c4c..964ef40 100644
--- a/action.yml
+++ b/action.yml
@@ -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