diff options
| author | Paul Buetow <paul@buetow.org> | 2026-07-02 00:53:37 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-07-02 00:53:37 +0300 |
| commit | 5c744e37b6375f3f6842cdf3758a180a649bafea (patch) | |
| tree | eb28d27988539228727b0d47d32b2d7927bc145c /ycurses/Dockerfile | |
| parent | 58602a28d2c92b603208f3e01c14c169d28cc7b0 (diff) | |
ycurses: get it building on modern GCC, verify in Docker (task 9s0)
ycurses shares no source files with ychat/yhttpd (it's an ncurses UI
toolkit, not part of the httpd/socket engine), so none of the sock/reqp/
html/logd/tool fixes apply here - only the same class of toolchain-gate
bugs did:
- Top-level configure's g++ 3.x version gate now accepts any GNU g++
(same fix as yhttpd/configure).
- scripts/config.pl silently BEGIN-failed on modern Perl (`use
scripts::modules::file` needs "." on @INC, dropped by Perl 5.26+); the
"yes" default answer was never actually read. Fixed with `perl -I.`
(also applied to yhttpd/configure, which had the same latent bug).
- src/configure's library search paths predate 64-bit multilib distros
(no /usr/lib64), so installed libpanel/libmenu/libncurses were reported
"NOT OK" on Rocky Linux 9 (also backported to yhttpd/src/configure).
- attributes.h declared `set<int> set_attr` (std::set, via `using
namespace std`) and separately two member functions literally named
`set` - GCC 11 treats that as ill-formed ("changes meaning of 'set'"),
not just a warning. Renamed both overloads to set_attr_flag; no
external caller used the bare set(...)/set(int) names.
Verified in a Rocky Linux 9 container: builds clean, links, and runs -
initializes curses, draws the demo screen using color/attributes
(exercising the fix above), exits cleanly. Added Dockerfile (build
verification only - it's an interactive demo, not a service) and
BUILD.md documenting the fixes and one pre-existing, deliberately
unfixed bug (unset() never actually clears an attribute).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Diffstat (limited to 'ycurses/Dockerfile')
| -rw-r--r-- | ycurses/Dockerfile | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/ycurses/Dockerfile b/ycurses/Dockerfile new file mode 100644 index 0000000..c27b45c --- /dev/null +++ b/ycurses/Dockerfile @@ -0,0 +1,30 @@ +# ycurses — Docker build verification +# +# ycurses is a standalone ncurses C++ toolkit (windows/menus/attributes/ +# color), demoed by an interactive full-screen menu (src/main.cpp) - there +# is no server/service to run, so unlike ../yhttpd this image is a build +# check, not a deployable runtime. +# +# Builds entirely in a container on Rocky Linux 9, whose GCC 11 accepts the +# legacy C++ this ~2005 codebase uses once the fixes below are applied. + +FROM rockylinux:9 AS builder + +RUN dnf -y install \ + gcc-c++ \ + make \ + perl \ + which \ + ncurses-devel \ + && dnf clean all + +WORKDIR /build/ycurses +COPY . . +RUN rm -rf obj bin backuped g++.version make.version src/Makefile src/includes.add src/libs.add + +# config.pl is interactive (asks yes/no); "yes" = use default before-compile +# options. +RUN echo yes | ./configure \ + && make + +ENTRYPOINT ["/build/ycurses/bin"] |
