This patch is possible solution for the build problems with input from
/dev/null.

The patch changes the source from gnuchess by adding a global flag,
which can disable the whole input routine by replacing it with some
sleeps.

Tested on amd64 by building with make < /dev/null and with dpb 
games/gnuchess. (And playing a game with the new package)

Index: Makefile
===================================================================
RCS file: /cvs/ports/games/gnuchess/Makefile,v
diff -u -p -r1.56 Makefile
--- Makefile    8 Sep 2025 10:35:20 -0000       1.56
+++ Makefile    12 Sep 2025 11:32:46 -0000
@@ -1,9 +1,7 @@
-BROKEN=                post-build fails in dpb (or if stdin is redirected from 
/dev/null)
-
 COMMENT=       chess program
 
 DISTNAME=      gnuchess-6.3.0
-REVISION=      0
+REVISION=      1
 DISTFILES=     ${DISTNAME}.tar.gz book_1.02.pgn.gz
 
 CATEGORIES=    games
Index: patches/patch-src_components_cc
===================================================================
RCS file: patches/patch-src_components_cc
diff -N patches/patch-src_components_cc
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_components_cc     12 Sep 2025 11:32:46 -0000
@@ -0,0 +1,11 @@
+Index: src/components.cc
+--- src/components.cc.orig
++++ src/components.cc
+@@ -32,6 +32,7 @@
+ #include "frontend/common.h"
+ #include "components.h"
+ 
++extern unsigned int noinput;
+ extern unsigned int flags;
+ 
+ /* Main loop of adapter */
Index: patches/patch-src_frontend_common_h
===================================================================
RCS file: patches/patch-src_frontend_common_h
diff -N patches/patch-src_frontend_common_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_frontend_common_h 12 Sep 2025 11:32:46 -0000
@@ -0,0 +1,11 @@
+Index: src/frontend/common.h
+--- src/frontend/common.h.orig
++++ src/frontend/common.h
+@@ -311,6 +311,7 @@ extern int RealGameCnt;
+ extern short RealSide;
+ extern int GameCnt;
+ extern int computer;
++extern unsigned int noinput;
+ extern unsigned int flags;
+ extern unsigned int preanalyze_flags;
+ extern Board board;
Index: patches/patch-src_frontend_input_cc
===================================================================
RCS file: patches/patch-src_frontend_input_cc
diff -N patches/patch-src_frontend_input_cc
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_frontend_input_cc 12 Sep 2025 11:32:46 -0000
@@ -0,0 +1,14 @@
+Index: src/frontend/input.cc
+--- src/frontend/input.cc.orig
++++ src/frontend/input.cc
+@@ -140,6 +140,10 @@ void *input_func(void *arg __attribute__((unused)) )
+   char prompt[MAXSTR] = "";
+ 
+   while (!(flags & QUIT)) {
++    if(noinput) {
++      usleep(100);
++      continue;
++    }
+     if (!(flags & XBOARD)) {
+ 
+       pthread_mutex_lock( &input_mutex );
Index: patches/patch-src_main_cc
===================================================================
RCS file: patches/patch-src_main_cc
diff -N patches/patch-src_main_cc
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_main_cc   12 Sep 2025 11:32:46 -0000
@@ -0,0 +1,19 @@
+Index: src/main.cc
+--- src/main.cc.orig
++++ src/main.cc
+@@ -64,6 +64,7 @@ int GameCnt;
+ int RealGameCnt;
+ short RealSide;
+ int computer;
++unsigned int noinput = 0;
+ unsigned int flags;
+ unsigned int preanalyze_flags;
+ int cboard[64];
+@@ -345,6 +346,7 @@ int main (int argc, char *argv[])
+          return(1);
+        }
+        strcpy( opt_addbook, optarg );
++       noinput = 1;
+        break;
+      default:
+        puts (_("Option processing failed.\n"));

Reply via email to