pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/39582: devel/ncurses breaks /usr/include/curses.h on NetBSD



>Number:         39582
>Category:       pkg
>Synopsis:       devel/ncurses breaks /usr/include/curses.h on NetBSD
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Sep 18 21:20:00 +0000 2008
>Originator:     Taylor R Campbell <campbell%mumble.net@localhost>
>Release:        NetBSD 4.0_STABLE
>Organization:
>Environment:
System: NetBSD smalltalk.localdomain 4.0_STABLE NetBSD 4.0_STABLE 
(RIAX3DOM0_GATEWAY) #1: Wed Sep 10 22:47:22 UTC 2008 
riastradh%smalltalk.localdomain@localhost:/home/riastradh/netbsd/4/obj/sys/arch/i386/compile/RIAX3DOM0_GATEWAY
 i386
Architecture: i386
Machine: i386
>Description:

        devel/ncurses installs several files in /usr/pkg/include, one
        of which is named unctrl.h.  This file itself includes
        <ncurses.h>.  /usr/include/curses.h from the NetBSD base system
        contains the line
        
                #include <unctrl.h>
        
        which, when /usr/pkg/include is in the system header path,
        causes inclusion of /usr/pkg/include/unctrl.h, rather than of
        the intended /usr/include/unctrl.h.  This transitively includes
        /usr/pkg/include/ncurses.h, which does not lead a happy
        coexistence with /usr/include/curses.h.

>How-To-Repeat:

        Install devel/ncurses.  Compile, or preprocess, the following
        trivial program with -I/usr/pkg/include:
        
                #include <curses.h>
        
                int
                main (int argc, char *argv[])
                {
                        return (0);
                }

>Fix:

        Two choices immediately spring to mind:
        
        1. Install a symbolic link /usr/pkg/include/curses.h pointing
           to ncurses.h.  (This is the reverse of what one often finds
           in Linux systems.)  This is a matter of adding an extra line
           to the `post-install' target.
        
        2. Install ncurses in a subdirectory of /usr/pkg/include, such
           as /usr/pkg/include/ncurses.  This is what devel/ncursesw
           already does.  This requires configuring ncurses differently
           and changing ncurses/buildlink3.mk to add the subdirectory
           to the system header path.
        
        There is already a hack in ncurses/buildlink3.mk to install a
        temporary symbolic link so that source files in the dependent
        packages can include <curses.h> and see ncurses.  This doesn't
        help when building software outside of pkgsrc, however.



Home | Main Index | Thread Index | Old Index