[kde-solaris] Build on solaris 2.6 (was Re: Unhelpful error building dcop in kdelibs)

Michael Lambrellis michael.lambrellis at gmail.com
Mon Jan 31 07:20:03 CET 2005


I seem to have gotten past this as well.

1. In kreverseresolver.cpp, include netsupp.h.
   // Us
+  #include "netsupp.h"
   #include "kreverseresolver.h"

2. I then get errors in syssocket.h about socklen_t undefined. So,
edit syssocket.h:

   #include <sys/types.h>
   #include <sys/socket.h>
+  #include "config.h"
+  #define ksocklen_t kde_socklen_t
+  #define socklen_t kde_socklen_t

3. Try again and we get:

ksockssocketdevice.cpp: In member function `virtual
KNetwork::KSocksSocketDevice* KNetwork::KSocksSocketDevice::accept()':
ksockssocketdevice.cpp:159: error: invalid conversion from `int*' to
`ksocklen_t*'
ksockssocketdevice.cpp:159: error:   initializing argument 3 of `int
KSocks::accept(int, sockaddr*, ksocklen_t*)'
ksockssocketdevice.cpp: In function `int socks_read_common(int, char*,
Q_ULONG, KNetwork::KSocketAddress*, ssize_t&, bool)':
ksockssocketdevice.cpp:178: error: invalid conversion from `int*' to
`ksocklen_t*'
ksockssocketdevice.cpp:178: error:   initializing argument 6 of `int
KSocks::recvfrom(int, void*, long unsigned int, int, sockaddr*,
ksocklen_t*)'
ksockssocketdevice.cpp: In member function `virtual
KNetwork::KSocketAddress KNetwork::KSocksSocketDevice::localAddress()
const':
ksockssocketdevice.cpp:315: error: invalid conversion from `int*' to
`ksocklen_t*'
ksockssocketdevice.cpp:315: error:   initializing argument 3 of `int
KSocks::getsockname(int, sockaddr*, ksocklen_t*)'
ksockssocketdevice.cpp:329: error: invalid conversion from `int*' to
`ksocklen_t*'
ksockssocketdevice.cpp:329: error:   initializing argument 3 of `int
KSocks::getsockname(int, sockaddr*, ksocklen_t*)'
ksockssocketdevice.cpp: In member function `virtual
KNetwork::KSocketAddress KNetwork::KSocksSocketDevice::peerAddress()
const':
ksockssocketdevice.cpp:344: error: invalid conversion from `int*' to
`ksocklen_t*'
ksockssocketdevice.cpp:344: error:   initializing argument 3 of `int
KSocks::getpeername(int, sockaddr*, ksocklen_t*)'
ksockssocketdevice.cpp:358: error: invalid conversion from `int*' to
`ksocklen_t*'
ksockssocketdevice.cpp:358: error:   initializing argument 3 of `int
KSocks::getpeername(int, sockaddr*, ksocklen_t*)'
make: *** [ksockssocketdevice.lo] Error 1

4. Edit ksockssocketdevice.cpp and change a bunch of kde_socklen_t to
ksocklen_t. By the way, is there a certain degree of konfusion
regarding socklen_t, ksocklen_t and kde_socklen_t? ie should the
different ones all be replaced by one definition? ie are they supposed
to be synonymous?

5. Which leads to the following:

In file included from kreverseresolver.cpp:32:
./syssocket.h: In function `int <unnamed>::kde_connect(int, const
sockaddr*, int)':
./syssocket.h:71: error: invalid conversion from `const sockaddr*' to
`sockaddr*'
./syssocket.h:71: error:   initializing argument 2 of `int
connect(int, sockaddr*, int)'
make: *** [kreverseresolver.lo] Error 1

This seems to need a code change from:
  // connect
  inline int kde_connect(int fd, const struct sockaddr* sa, socklen_t len)
  {
    return ::connect(fd, sa, len);
  }

to:

  // connect
  inline int kde_connect(int fd, const struct sockaddr* sa, socklen_t len)
  {
    return ::connect(fd, const_cast<struct sockaddr*>(sa), len);
  }


OK. The compile has now gotten past kdecore/network and seems to be moving.

Something tells me I'll be back soon though.

Cheers,
Mike.

On Mon, 31 Jan 2005 15:57:09 +1100, Michael Lambrellis
<michael.lambrellis at gmail.com> wrote:
> 
> But this still leaves:
> 
> kreverseresolver.cpp: In member function `virtual bool
> <unnamed>::ReverseThread::run()':
> kreverseresolver.cpp:258: error: `::getnameinfo' has not been declared
> make: *** [kreverseresolver.lo] Error 1
> 
> Apparently, getnameinfo is not available on Solaris 2.6. I have come
> across several "getnameinfo.c" implementations on the net but am
> wondering if anyone else has successfully crossed this hurdle before I
> start experimenting with code of strange provenance.
> 
> Cheers,
> Mike.


More information about the kde-solaris mailing list