[pacman-dev] Aqpm, and some help needed

Dario Freddi drf54321 at gmail.com
Wed Nov 19 18:43:01 EST 2008

Hello guys,

I'm introducing you Aqpm, a QT/C++ wrapper to libalpm. I did this since Shaman 
backend was starting to get too much bloated, and since I needed to use Alpm 
in some other apps (and in Shaman 2 too).

What's cool about it: I aim at a strong binary compatibility. This way, even 
when alpm introduces some binary-incompatible changes, modifying Aqpm 
internals will be enough to get all applications relying on Aqpm work again 
without a rebuild. This way we'll also avoid bad situation like Shaman crack 
this summer.

It also wraps around the callback system and implements an easier Queue. It 
has solid internal threading where needed, and I'm planning to make it support 
PolicyKit, so that I'll also get rid of the problem of running Shaman with 
suid and other apps using Alpm running as root (even though Policykit could be 
directly added to alpm itself, I don't know).

Enough talking, it's here: http://github.com/drf/aqpm/tree/master. If you want 
to test it, I moved Shaman to github and I have a branch there working with 
aqpm: http://github.com/drf/shaman1/tree/aqpm-work . Sure, it has some 
regressions, but really small stuff. Please note that Aqpm at the current 
status supports latest git revision of alpm, so it is not compilable with 
current stable pacman.

I am writing you also to ask you for some help. I have one problem since 
libalpm 3, namely the download progress callback streaming always 0 in the 
"total" parameter. I got almost crazy over it, and I still can't find a reason 
why it does not work. I verified that when Alpm streams the callback, the 
value is correct, though when it gets received it becomes 0.

So I kindly ask you a small review of my code, since I really don't know where 
to crash my head. It is the last missing bit to aqpm to work 100%, so I'd 
really appreciate if you could give some help. The relevant code is at:

http://github.com/drf/aqpm/tree/master/trunk/libaqpm/Backend.cpp line 797-1010 
(Transaction thread, but in that file you'll find every action aqpm does)

http://github.com/drf/aqpm/tree/master/trunk/libaqpm/callbacks.cpp Callbacks 
are here.

Also some feedbacks/suggestions would be highly appreciated

Thanks and Cheers

More information about the pacman-dev mailing list