[newlib-cygwin/main] Cygwin: CI: Add stc regression test job

Jon Turney via Cygwin-cvs <[email protected]>
Newsgroups gmane.os.cygwin.cvs
Message-ID <[email protected]>
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=584910835dc54408e1b5a873154bd10ad5b30bf8

commit 584910835dc54408e1b5a873154bd10ad5b30bf8
Author: Jon Turney <[email protected]>
Date:   Sun May 25 17:56:51 2025 +0100

    Cygwin: CI: Add stc regression test job
    
    To get correct results, it's currently neccessary to install cygwin
    using -j1, as cygwin install rules must run after newlib install rules,
    as they overwrite things installed by them.
    
    Also make the installation with sys symlinks, as upload-artifact
    currently can't handle the default (WSL) symlinks (stat fails EACCESS).
    
    Also workaround an issue with download-artifact by removing the libg.a
    symlink before unpacking the artifact, since otherwise that also fails
    (open fails EPERM).

Diff:
---
 .github/workflows/cygwin.yml | 86 +++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 81 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml
index f45e65209..087a68a99 100644
--- a/.github/workflows/cygwin.yml
+++ b/.github/workflows/cygwin.yml
@@ -155,7 +155,8 @@ jobs:
         ../configure --prefix=/usr -v &&
         export MAKEFLAGS=-j$(nproc) &&
         make &&
-        make install tooldir=/usr gcc_tooldir=/usr DESTDIR=${DESTDIR} &&
+        export CYGWIN=winsymlinks:sys &&
+        make install -j1 tooldir=/usr gcc_tooldir=/usr DESTDIR=${DESTDIR} &&
         (cd */newlib; make info man) &&
         (cd */newlib; make install-info install-man tooldir=/usr gcc_tooldir=/usr DESTDIR=${DESTDIR})
       shell: bash --noprofile --norc -eo pipefail '{0}'
@@ -215,7 +216,7 @@ jobs:
           runarch: arm64
           runner: windows-11-arm
     runs-on: ${{ matrix.runner }}
-    name: Windows tests ${{ matrix.pkgarch }} on ${{ matrix.runarch }}
+    name: stress tests ${{ matrix.pkgarch }} on ${{ matrix.runarch }} Windows
 
     steps:
     - run: git config --global core.autocrlf input
@@ -230,8 +231,6 @@ jobs:
         packages: |
           procps-ng
           stress-ng
-          unzip
-          wget
 
     # fetch the just-built cygwin installation artifact
     - name: Unpack just-built Cygwin artifact
@@ -248,7 +247,7 @@ jobs:
     # don't exist (yet) to let us do that...
 
     # run stress-test
-    - name: Run tests
+    - name: Run stress tests
       run: |
         export PATH=/usr/bin:$(cygpath ${SYSTEMROOT})/system32
         uname -a
@@ -265,3 +264,80 @@ jobs:
         path: |
           logs
       if: ${{ !cancelled() }}
+
+  windows-stc-regression-test:
+    needs: windows-build
+
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+        - pkgarch: x86_64
+          runarch: x86_64
+          runner: windows-latest
+        - pkgarch: x86_64
+          runarch: arm64
+          runner: windows-11-arm
+    runs-on: ${{ matrix.runner }}
+    name: stc tests ${{ matrix.pkgarch }} on ${{ matrix.runarch }} Windows
+
+    steps:
+    # install cygwin
+    - name: Install Cygwin
+      id: cygwin-install
+      uses: cygwin/cygwin-install-action@master
+      with:
+        platform: ${{ matrix.pkgarch }}
+        packages: |
+          gcc-core
+          git
+          meson
+          ninja
+
+    # The download-artifact action currently seems to fail with EPERM when it
+    # tries to unpack over a symlink. Remove the only such instance.
+    - name: Workaround download-artifact issue
+      run: |
+        cd /d ${{ steps.cygwin-install.outputs.root }}\lib
+        bash -c 'rm libg.a'
+      shell: cmd
+
+    # fetch the just-built cygwin installation artifact
+    - name: Unpack just-built Cygwin artifact
+      uses: actions/download-artifact@v4
+      with:
+        name: cygwin-install-${{ matrix.pkgarch }}
+        # use the install-dir of cygwin-install-action above, so we unpack the
+        # artifact over it
+        path: ${{ steps.cygwin-install.outputs.root }}
+
+    # This isn't quite right, as it just overwrites existing files, it doesn't
+    # remove anything which is no longer provided. Ideally, we'd make a cygwin
+    # package of the just-built cygwin version and install it here, but tools
+    # don't exist (yet) to let us do that...
+
+    # fetch and build stc test
+    - name: Fetch and build stc tests
+      run: |
+        export PATH=/usr/bin:$(cygpath ${SYSTEMROOT})/system32
+        uname -a
+        git clone https://cygwin.com/git/cygwin-apps/stc.git --depth 1
+        meson setup _build stc
+        ninja -C _build
+      shell: bash --noprofile --norc -o igncr -eo pipefail '{0}'
+
+    # run stc test
+    - name: Run stc tests
+      run: |
+        export PATH=/usr/bin:$(cygpath ${SYSTEMROOT})/system32
+        meson test -C _build
+      shell: bash --noprofile --norc -o igncr -eo pipefail '{0}'
+
+    # upload logs artifact
+    - name: Capture logs artifact
+      uses: actions/upload-artifact@v4
+      with:
+        name: stc-logs-${{ matrix.pkgarch }}-on-${{ matrix.runarch }}
+        path: |
+          _build/meson-logs
+      if: ${{ !cancelled() }}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.