After much frustration, I was able to get rtorrent and libtorrent compiling and running on a gentoo prefix on OpenSolaris (latest release 6/9 I beleive). The main issues are that /bin/sh on Solaris can't be used with libtool and autoconf (fixed in the ebuild) and some patches dealing with system structs and headers. I've submitted these patches to upstream, but he hasn't been too receptive to these types of patches in the past (mostly because we have to use an extern function declaration instead of an #include due to a Solaris bug.). Reproducible: Always Steps to Reproduce: 1.emerge rtorrent 2. 3. Actual Results: Fails to compile. With patches and ebuilds, compiles fine. Expected Results: Everything should work now.
Created attachment 208777 [details] Updated ebuild
Created attachment 208779 [details] Updated ebuild
Created attachment 208781 [details, diff] libtorrent patch
Created attachment 208782 [details, diff] rtorrent patch
somehow this patching seems not enough: libtool: compile: i386-pc-solaris2.10-g++ -DHAVE_CONFIG_H -I. -I../.. -I. -I./.. -I../.. -O2 -Wall -DNDEBUG -fvisibility=hidden -I/Library/Gentoo/usr/include -I/Library/Gentoo/usr/include/sigc++-2.0 -I/Library/Gentoo/usr/lib/sigc++-2.0/include -c memory_chunk.cc -o memory_chunk.o >/dev/null 2>&1 socket_file.cc: In member function ‘bool torrent::SocketFile::reserve(uint64_t, uint64_t)’: socket_file.cc:114: error: ‘posix_fallocate’ was not declared in this scope make[3]: *** [socket_file.lo] Error 1 make[3]: *** Waiting for unfinished jobs.... there is indeed no such function on solaris 10
(In reply to comment #5) > somehow this patching seems not enough: > > libtool: compile: i386-pc-solaris2.10-g++ -DHAVE_CONFIG_H -I. -I../.. -I. > -I./.. -I../.. -O2 -Wall -DNDEBUG -fvisibility=hidden > -I/Library/Gentoo/usr/include -I/Library/Gentoo/usr/include/sigc++-2.0 > -I/Library/Gentoo/usr/lib/sigc++-2.0/include -c memory_chunk.cc -o > memory_chunk.o >/dev/null 2>&1 > socket_file.cc: In member function ‘bool > torrent::SocketFile::reserve(uint64_t, uint64_t)’: > socket_file.cc:114: error: ‘posix_fallocate’ was not declared in this scope > make[3]: *** [socket_file.lo] Error 1 > make[3]: *** Waiting for unfinished jobs.... > > there is indeed no such function on solaris 10 > This doesn't exist on x64-macos either (and x86-macos I'd imagine), so perhaps it should do something like: local myconf="" if use amd64-linux || use x86-linux ; then myconf="--with-posix-fallocate" fi econf \ $(use_enable debug) \ $(use_enable ipv6) \ --enable-aligned \ --enable-static \ --enable-shared \ --disable-dependency-tracking \ ${myconf} || die "econf failed" to only enable it on Linux?
thanks for the patches and fixes! librtorrent fixed and keyworded ~x64-solaris rtorrent fixed and keyworded ~x64-solaris If you need other keywords, please note on this bug.
~x64-macos would be nice :)
done