Hi,

Building GNU Bison on Cygwin, I see these two test failures:


FAIL: examples/java/calc/Calc
=============================

checking for diff --strip-trailing-cr...
checking for diff --strip-trailing-cr... --strip-trailing-cr
Calc: FAIL: 1 (expected status: 0, effective: 1)
Error: Could not find or load main class Calc
Calc: FAIL: 2 (expected status: 0, effective: 1)
Error: Could not find or load main class Calc
Calc: FAIL: 3 (expected status: 0, effective: 1)
Error: Could not find or load main class Calc
Calc: FAIL: 4 (expected status: 0, effective: 1)
Error: Could not find or load main class Calc
FAIL examples/java/calc/Calc.test (exit status: 1)

FAIL: examples/java/simple/Calc
===============================

checking for diff --strip-trailing-cr...
checking for diff --strip-trailing-cr... --strip-trailing-cr
Calc: FAIL: 1 (expected status: 0, effective: 1)
Error: Could not find or load main class Calc
Calc: FAIL: 2 (expected status: 0, effective: 1)
Error: Could not find or load main class Calc
Calc: FAIL: 3 (expected status: 0, effective: 1)
Error: Could not find or load main class Calc
FAIL examples/java/simple/Calc.test (exit status: 1)


The cause is that the Java implementation is a native Windows one
(since there is no Cygwin build of any Java implementation [1]),
and it does not understand file names of the form /cygwin/c/something.
These file names need to be converted to native Windows syntax right
before invoking 'java'.

The attached patch does it, and thereby fixes these two test failures:
PASS: examples/java/calc/Calc.test
PASS: examples/java/simple/Calc.test

[1] https://cygwin.com/packages/package_list.html

>From 9bcc49885db7f5bde632f69918b7e15b58ee9a1d Mon Sep 17 00:00:00 2001
From: Bruno Haible <br...@clisp.org>
Date: Mon, 14 Jul 2025 11:26:31 +0200
Subject: [PATCH] build: Avoid failure of the Java tests in Cygwin-based
 environments.

* examples/test (prog): In Cygwin-based environments, convert the class path
element to native Windows syntax.
---
 examples/test | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/examples/test b/examples/test
index 471e1bf2..f5100649 100755
--- a/examples/test
+++ b/examples/test
@@ -54,6 +54,15 @@ if test -x "$abs_medir/$me"; then
 elif test -f "$abs_medir/$me.class"; then
     prog ()
     {
+        # In Cygwin-based environments, the Java implementation still is a
+        # native Windows Java.  Therefore we need to convert the elements
+        # of the class path from Cygwin syntax to native Windows syntax.
+        # The javaexec.sh script does not do this for us.
+        case `uname -s` in
+            CYGWIN*)
+                abs_medir=`cygpath -w "$abs_medir"`
+                ;;
+        esac
         "$SHELL" "$cwd/javaexec.sh" -cp "$abs_medir" "$me" "$@"
     }
 else
-- 
2.43.0

  • fix a "make check&quo... Bug reports for Bison, the GNU parser generator

Reply via email to