pkgsrc-Bugs archive

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

pkg/34838: news/nn does not compile (NetBSD 3.0)



>Number:         34838
>Category:       pkg
>Synopsis:       news/nn does not compile (NetBSD 3.0)
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Oct 17 09:55:00 +0000 2006
>Originator:     Robert Elz
>Release:        NetBSD 3.99.15  (pkgsrc current within last hour or two)
>Organization:
        Prince of Songkla University
>Environment:
        
        
System: NetBSD jade.coe.psu.ac.th 3.99.15 NetBSD 3.99.15 
(GENERIC-1.696-20060125) #8: Wed Jan 25 04:59:39 ICT 2006 
kre%jade.coe.psu.ac.th@localhost:/usr/obj/current/kernels/JADE_ASUS i386
Architecture: i386
Machine: i386
>Description:
        I have no idea what systems news/nn actually compiles
        successfully on (except probably irix, where it looks to
        be handled), but as it is it uses sockaddr_in and (on most(?)
        systems) doesn't include netinet/in.h

>How-To-Repeat:
        Attempt to compile news/nn on NetBSD - most likely any NetBSD
        version would do, I'm using pkg_comp with NetBSD 3.0 release
        sets installed (so a pretty pure NetBSD 3.0 environment).

        Expect to see ...

cc -Iconf -O2  -c nntp.c
nntp.c: In function `get_socket':
nntp.c:295: error: storage size of `sin' isn't known
*** Error code 1

        That's from this line of code ...

            struct sockaddr_in sin; 

        which suggests that sockaddr_in isn't defined.
        And sure, enough, around lines 60-65 of nntp.c
        there appears ...

/* This is necessary due to the definitions in m-XXX.h */
/* IRIX needs it for struct sockaddr_in */

#if !defined(NETWORK_DATABASE) || defined(NETWORK_BYTE_ORDER) || defined(__sgi)
#include <netinet/in.h>
#endif

        which doesn't manage to include netinet/in.h on NetBSD systems.

>Fix:

        Patching nntp.c to add
                || defined(__NetBSD__)
        to the #if allowed it to compile for me.

        A better fix would be to get rid of the use of sockaddr_in and
        get getaddrinfo() instead of gethostbyname(0 and getservbynam()
        (wich might possibly also be extended to allow IPv6 to work, but
        I certainly haven't tested that)

        Howwever, this (adjusting the #if) might not be the right solution.
        What systems (if any) don't require (or at least, allow) netinet/in.h
        to be included to define sockaaddr_in ?   That's where the
        struct definition has been since it was invented.  If there are
        no such systems, then simply remove the #if/#endif completely,
        and leave the #include always being included would seem like
        a better idea.




Home | Main Index | Thread Index | Old Index