From fe359e9681d67beea84189d881efd86970ef7cb1 Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Thu, 8 May 2025 23:38:44 +0200 Subject: [PATCH] pmars: Fix FTBFS due to ncurses change WINDOW struct was turned opaque in recent versions, meaning that direct access to struct members is no longer supported. Add patch to replace direct access with calls to getter functions. --- .../0003-fix-ncurses-opaque-WINDOW.patch | 57 +++++++++++++++++++ pkgs/by-name/pm/pmars/package.nix | 3 + 2 files changed, 60 insertions(+) create mode 100644 pkgs/by-name/pm/pmars/0003-fix-ncurses-opaque-WINDOW.patch diff --git a/pkgs/by-name/pm/pmars/0003-fix-ncurses-opaque-WINDOW.patch b/pkgs/by-name/pm/pmars/0003-fix-ncurses-opaque-WINDOW.patch new file mode 100644 index 000000000000..04933f9718eb --- /dev/null +++ b/pkgs/by-name/pm/pmars/0003-fix-ncurses-opaque-WINDOW.patch @@ -0,0 +1,57 @@ +diff '--color=auto' -ruN a/src/curdisp.c b/src/curdisp.c +--- a/src/curdisp.c 2025-05-08 23:23:48.070346219 +0200 ++++ b/src/curdisp.c 2025-05-08 23:29:33.851400436 +0200 +@@ -28,12 +28,6 @@ + #include "sim.h" + #endif + +-/* For window structure in BSD 4.4/Curses 8.x library */ +-#ifdef BSD44 +-#define _curx curx +-#define _cury cury +-#endif +- + typedef struct win_st { + WINDOW *win; + int page; +@@ -428,18 +422,18 @@ + str--; + maxchar++; + leaveok(curwin, TRUE); +- if (ox = curwin->_curx) { ++ if (ox = getcurx(curwin)) { + #if 0 + #ifdef ATTRIBUTE +- mvwaddch(curwin, curwin->_cury, --ox, ' ' | attr); ++ mvwaddch(curwin, getcury(curwin), --ox, ' ' | attr); + #else +- mvwaddch(curwin, curwin->_cury, --ox, ' '); ++ mvwaddch(curwin, getcury(curwin), --ox, ' '); + #endif + #endif /* 0 */ +- mvwaddch(curwin, curwin->_cury, --ox, ' '); +- wmove(curwin, curwin->_cury, ox); ++ mvwaddch(curwin, getcury(curwin), --ox, ' '); ++ wmove(curwin, getcury(curwin), ox); + } else { +- oy = curwin->_cury - 1; ++ oy = getcury(curwin) - 1; + #if 0 + #ifdef ATTRIBUTE + mvwaddch(curwin, oy, COLS - 1, ' ' | attr); +@@ -470,12 +464,12 @@ + if (ox--) + #if 0 + #ifdef ATTRIBUTE +- mvwaddch(curwin, curwin->_cury, ox, ' ' | attr); ++ mvwaddch(curwin, getcury(curwin), ox, ' ' | attr); + #else +- mvwaddch(curwin, curwin->_cury, ox, ' '); ++ mvwaddch(curwin, getcury(curwin), ox, ' '); + #endif + #endif /* 0 */ +- mvwaddch(curwin, curwin->_cury, ox, ' '); ++ mvwaddch(curwin, getcury(curwin), ox, ' '); + else + #if 0 + #ifdef ATTRIBUTE diff --git a/pkgs/by-name/pm/pmars/package.nix b/pkgs/by-name/pm/pmars/package.nix index 69042eeb3b42..f5f52eba5fd4 100644 --- a/pkgs/by-name/pm/pmars/package.nix +++ b/pkgs/by-name/pm/pmars/package.nix @@ -35,6 +35,9 @@ stdenv.mkDerivation (finalAttrs: { # call to undeclared function 'sighandler' & undefined sighandler on Darwin ./0002-fix-sighandler.patch + + # ncurses' WINDOW struct was turned opaque for outside code, use functions for accessing values instead + ./0003-fix-ncurses-opaque-WINDOW.patch ]; postPatch = ''