[kde-linux] Latest ktorrent

Duncan 1i5t5.duncan at cox.net
Mon Jun 15 07:03:03 UTC 2015


jd1008 posted on Sun, 14 Jun 2015 16:36:57 -0600 as excerpted:

> OK,
> so I did find the how-to-build   simple instructions.
> I installed all the required packages and ran cmake in the build dir,
> and that worked just fine.
> 
> Ran make and it belched the following error:
> 
> 
> [  3%] Building CXX object src/CMakeFiles/ktorrent.dir/util/functions.o
> /usr/src/redhat/NON-RPM/network-apps/ktorrent/libktorrent-1.3.1/src/
util/functions.cpp:
> In function ‘QString bt::BytesToString(bt::Uint64)’:
> /usr/src/redhat/NON-RPM/network-apps/ktorrent/libktorrent-1.3.1/src/
util/functions.cpp:228:37:
> error: no matching function for call to
> ‘KLocale::formatByteSize(bt::Uint64&, int)’
> /usr/src/redhat/NON-RPM/network-apps/ktorrent/libktorrent-1.3.1/src/
util/functions.cpp:228:37:
> note: candidate is:
> In file included from
> /usr/src/redhat/NON-RPM/network-apps/ktorrent/libktorrent-1.3.1/src/
util/functions.cpp:35:0:
> /usr/include/kde4/klocale.h:479:11: note: QString
> KLocale::formatByteSize(double) const
> /usr/include/kde4/klocale.h:479:11: note:   candidate expects 1
> argument, 2 provided
> /usr/src/redhat/NON-RPM/network-apps/ktorrent/libktorrent-1.3.1/src/
util/functions.cpp:
> In function ‘QString bt::BytesPerSecToString(double)’:
> /usr/src/redhat/NON-RPM/network-apps/ktorrent/libktorrent-1.3.1/src/
util/functions.cpp:234:49:
> error: no matching function for call to
> ‘KLocale::formatByteSize(double&, int)’
> /usr/src/redhat/NON-RPM/network-apps/ktorrent/libktorrent-1.3.1/src/
util/functions.cpp:234:49:
> note: candidate is:
> In file included from
> /usr/src/redhat/NON-RPM/network-apps/ktorrent/libktorrent-1.3.1/src/
util/functions.cpp:35:0:
> /usr/include/kde4/klocale.h:479:11: note: QString
> KLocale::formatByteSize(double) const
> /usr/include/kde4/klocale.h:479:11: note:   candidate expects 1
> argument, 2 provided
> /usr/src/redhat/NON-RPM/network-apps/ktorrent/libktorrent-1.3.1/src/
util/functions.cpp:235:2:
> warning: control reaches end of non-void function [-Wreturn-type]
> /usr/src/redhat/NON-RPM/network-apps/ktorrent/libktorrent-1.3.1/src/
util/functions.cpp:
> In function ‘QString bt::BytesToString(bt::Uint64)’:
> /usr/src/redhat/NON-RPM/network-apps/ktorrent/libktorrent-1.3.1/src/
util/functions.cpp:229:2:
> warning: control reaches end of non-void function [-Wreturn-type]
> make[2]: *** [src/CMakeFiles/ktorrent.dir/util/functions.o] Error 1
> make[1]: *** [src/CMakeFiles/ktorrent.dir/all] Error 2 make: *** [all]
> Error 2

OK, I don't claim to be a dev but... I am a gentoo ~arch (aka testing/
rawhide) user, and of course on gentoo, we build from sources using 
scripts, so with over a decade on gentoo ~arch I've gotten a bit of 
practice chasing down build errors. =:^)

1) What version of gcc, or are you building with something else (what)?  
Newer versions tend to be stricter and omit warnings and errors where 
previous versions worked fine.  Those get fixed upstream over time, but...

FWIW, gcc 4.9.2, here (on gentoo/~amd64).

However, 1 argument library function vs. 2 provided by caller looks like 
something that should always be a problem, so I doubt that's it.

2) What version of whatever package owns /usr/include/kde4/klocale.h ?

3) If you know how to check (or can figure out), does that package patch 
that file in any way?

Seems there's a basic function calling incompatibility between the 
library supplying that function, and what the libktorrent sources are 
wanting.  It's very likely either a version incompatibility that there's 
a patch for, or your package provider patched it and a compatible patch 
needs applied to libktorrent.


FWIW, a quick look here says:

a) gentoo doesn't patch libktorrent (same version, 1.3.1).

b) gentoo uses the path /usr/include/klocale.h (no kde4 subdir here), and 
that file belongs to kdelibs.

c) I currently have kdelibs-4.14.9 installed.  That should be pretty new 
from upstream, as gentoo/kde is pretty much on the ball.

d) gentoo does patch kdelibs, but none of the patches include the word 
klocale.h, so that file isn't patched.

e) In my kdelibs-4.14.9 version of klocale.h, I see two definitions for 
formatByteSize.

There's the original single-argument version, and then the second, with a 
the comment including a note saying since 4.4, the function is 
"overloaded" (which I've seen used in C++ context but being more an admin 
than a dev I have only a rough idea what it actually means, I _think_ 
basically what we see here, a second definition available, with C++ able 
to choose which one based on number of parameters actually used, etc), 
with four arguments possible, but the last two appear to have default 
values and thus be optional.

So if there's a single argument given, it would choose the first 
definition.  If there's two, three or four arguments given, it would 
choose the second, filling in the last two if they aren't there.

So... I'm guessing your kdelibs (or whatever package provides that file 
there) is pre-4.4.  You'll need to upgrade it to something newer, so the 
library understands the 2-4 argument version of the call.

Of course in doing so you may find you need to update all of kde to a 
similar version, altho in theory at least, kdelibs should be backward 
compatible, but not forward compatible, thru the entire 4.x series.  So 
at least in theory, you should be able to build a kdelibs 4.14.9 and have 
it provide all the old functions necessary for older kde4 series packages 
built on top of kdelibs.

Personally, if you're on a kde4 earlier than 4.5 as it seems you are, 
while the latest 4.14.x with 4.11.x workspace, I'd *VERY* *STRONGLY* 
recommend upgrading to at *LEAST* 4.5, as from my experience, despite 
claims to the contrary 4.2 was still alpha quality (forget not working, 
many features not even implemented yet), 4.3 was rough beta quality (most 
features implemented but some still broken and most still quite rough 
edged), 4.4 was /finally/ getting to what I'd call release-candidate 
quality (everything's implemented, most features work and there's now an 
evident smoothness, but some functionality may still be buggy 
particularly in corner cases), and only with 4.5 did kde4 /finally/ reach 
what I'd call release quality.

So if you're on anything kde4 earlier than 4.5, from my perspective, 
you're still on what should have been pre-release kde4, and you really 
owe it to yourself to get on something newer, at least 4.5, which IMO 
finally reached release quality.

Meanwhile, note that 4.6 brought some big dependency changes, no more 
HAL, etc, so it's likely going to require far more upgrades if you 
upgrade beyond 4.5.  So 4.5 really does seem to be the magic version, if 
you're running a kde4 older than that and want to do the minimum 
reasonable upgrade.  Anything older than that is, IMO, substandard, and I 
simply wouldn't settle for it, switching distro if necessary to get at 
least a reasonable kde 4.5.

Of course the other alternative would be to try a (lib)ktorrent version 
older than 4.3.1, but newer than what you had before, trying for a 
version that still works with your older klocale.h.  Unfortunately, with 
ktorrent.org down, it might be difficult to find the sources...  

FWIW, it has been over a decade ago now, but before gentoo, I used to run 
the rpm-based mandrake.  I found rmpfind.net an incredibly useful 
resource for older or newer versions of various packages.  Obviously I've 
not used it for that in over a decade now, but I still use it 
occasionally for tracking down what package might provide a particular 
file I don't have installed, for instance, or more often, for cases such 
as this.

Seems rpmfind.net has srpms (Fedora Secondary Rawhide Sources) for 
libktorrent back to 1.2, but for binary rpms unless you're on some exotic 
arch, it appears you're out of luck for earlier than 1.3.1, as that's all 
they appear to have for i586/i686/x86_64.  But you could try the srpms 
for libktorrent 1.2, and the parallel srpms for ktorrent itself, and hope 
it's early enough to still make the single-argument call.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman




More information about the kde-linux mailing list