Note that cygserver must be run using the same cygwin1.DLL as test
programs, as they communicate over a named pipe whose name contains the
'installation key' (which is a hash of the cygwin1.dll's path).

We run cygserver via 'cmd' to avoid the special code which handles a
cygwin parent process starting a cygwin child process, which assumes the
same version of cygwin in both.
---
 .github/workflows/cygwin.yml | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml
index ac167e748..10d0255ef 100644
--- a/.github/workflows/cygwin.yml
+++ b/.github/workflows/cygwin.yml
@@ -52,7 +52,8 @@ jobs:
       fail-fast: false
       matrix:
         include:
-        - pkgarch: x86_64
+        - target: x86_64-pc-cygwin
+          pkgarch: x86_64
     name: Windows native ${{ matrix.pkgarch }}
 
     steps:
@@ -105,6 +106,15 @@ jobs:
         make &&
         make install &&
         (cd */newlib; make info man) &&
-        (cd */newlib; make install-info install-man) &&
-        (cd */winsup; make check || true)
+        (cd */newlib; make install-info install-man)
+      shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}'
+
+    # test
+    - name: Test Cygwin
+      run: >-
+        export PATH=/usr/bin:$(cygpath ${SYSTEMROOT})/system32 &&
+        export MAKEFLAGS=-j$(nproc) &&
+        cd build &&
+        (export PATH=${{ matrix.target }}/winsup/testsuite/runtime:${PATH} && 
cmd /c $(cygpath -wa ${{ matrix.target }}/winsup/cygserver/cygserver) &) &&
+        (cd ${{ matrix.target }}/winsup; make check || true)
       shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}'
-- 
2.39.0

Reply via email to