Index | Thread | Search

From:
Stuart Henderson <stu@spacehopper.org>
Subject:
ncurses: more pkg-config files?
To:
tech@openbsd.org
Date:
Tue, 27 Jan 2026 10:36:51 +0000

Download raw body.

Thread
For 7.7 I added a pkg-config file for curses (ncurses.pc) because some
ports were not picking it up correctly (notably Python).

I've now run into a problem where some Python functions are disabled
because it thinks we don't have ncursesw so I'd like to add at least
a pkg-config file for that.

A build of ncurses from the normal upstream distribution also gives
pkg-config files for the other libraries (form/formw, menu/menuw,
panel/panelw) as well as those for the libraries that we don't
provide - ncurses++/ncurses++w, tic, tinfo.

I'm wondering whether it would just make sense to add the .pc file
that I've identified a need for, or proactively do the others as well.
Any thoughts?

(I have a ports infrastructure diff to log pkg-config calls; I'll use
it on my next i386 bulk build to see what's actually looking for it).

If we just want the pc file for ncursesw, here's a possible diff and
test method. (The others are trivial to add too of course, the question
is identifying which ones we want).

To test in Python, remove the BROKEN marker from audio/cplay and
build/install, run it, cursor down -> crash because getwch is not
available. Apply the diff or create /usr/lib/pkgconfig/ncursesw.pc
by hand then rebuild and reinstall lang/python/3 and retry cplay,
it will start working.

$ cat << EOF | doas tee /usr/lib/pkgconfig/ncursesw.pc
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
abi_version=6
major_version=6
version=6.4.20230826

Name: ncursesw
Description: ncursesw library
Version: 6.4.20230826
Requires.private:
Libs: -lncurses
Cflags:
EOF

Index: Makefile
===================================================================
RCS file: /cvs/src/lib/libcurses/Makefile,v
diff -u -p -r1.77 Makefile
--- Makefile	21 Feb 2025 18:16:45 -0000	1.77
+++ Makefile	27 Jan 2026 10:18:43 -0000
@@ -73,7 +73,7 @@ MAN=	curs_add_wch.3 curs_add_wchstr.3 cu
 GENERATED= codes.c comp_captab.c comp_userdefs.c expanded.c fallback.c \
 	init_keytry.h keys.list lib_gen.c lib_keyname.c make_hash make_keys \
 	names.c unctrl.c
-PC_FILES= ncurses.pc
+PC_FILES= ncurses.pc ncursesw.pc

 CAPLIST	= ${.CURDIR}/Caps
 USE_BIG_STRINGS	= 1
Index: generate_pkgconfig.sh
===================================================================
RCS file: /cvs/src/lib/libcurses/generate_pkgconfig.sh,v
diff -u -p -r1.1 generate_pkgconfig.sh
--- generate_pkgconfig.sh	21 Feb 2025 18:16:45 -0000	1.1
+++ generate_pkgconfig.sh	27 Jan 2026 10:18:43 -0000
@@ -75,3 +75,21 @@ Requires.private:
 Libs: -lncurses
 Cflags:
 __EOF__
+
+pc_file="${objdir}/ncursesw.pc"
+cat > ${pc_file} << __EOF__
+prefix=/usr
+exec_prefix=\${prefix}
+libdir=\${exec_prefix}/lib
+includedir=\${prefix}/include
+abi_version=${abi_version}
+major_version=${abi_version}
+version=${lib_version}
+
+Name: ncursesw
+Description: ncursesw library
+Version: ${lib_version}
+Requires.private:
+Libs: -lncursesw
+Cflags:
+__EOF__