Index | Thread | Search

From:
Nick Owens <mischief@offblast.org>
Subject:
Re: ncurses: more pkg-config files?
To:
tech@openbsd.org
Date:
Wed, 28 Jan 2026 08:32:34 -0800

Download raw body.

Thread
On Tue, Jan 27, 2026 at 2:37 AM Stuart Henderson <stu@spacehopper.org> wrote:
>
> 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).

thank you, this should fix `pkg_search_module(... ncursesw)` in CMake.
i ran into this trying to build notcurses on OpenBSD.

unfortunately the other CMake method still seems broken:
https://gitlab.kitware.com/cmake/cmake/-/issues/22218

>
> 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__
>