[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