Loading ...
Sorry, an error occurred while loading the content.

rtorrent with magnet link & color ui support

Expand Messages
  • hugodeluna
    Hi all, I just successfully compiled rtorrent for SlugOS 5.3 beta (BE), using my Ubuntu lucid (32bits) box. For anyone interested, I documented all the
    Message 1 of 2 , Jun 3, 2012
    • 0 Attachment
      Hi all,

      I just successfully compiled rtorrent for SlugOS 5.3 beta (BE), using my Ubuntu lucid (32bits) box.

      For anyone interested, I documented all the required steps to take from scratch,


      A couple of things to mention,
      • When trying to build the cross-compiler, I ran into 2 problems that are not documented on the site (or anywhere for that matter). First, the version of fakeroot that is needed is no longer available in the debian repositories. Second, a couple of source files for the glibc headers need to be edited.
      • When trying to compile rtorrent, I ran into several problems, but the most difficult to fix was that I was able to compile it with no errors, but at run time, whenever a torrent finished downloading and started seeding, the program crashed with the following error,

      terminate called after throwing an instance of 'torrent::close_connection' what():  std::exception Aborted

      It took me while to figure all this out, but hopefully this will help someone that is on the same situation I was in.


      -Hugo de Luna
    • hugodeluna
      I don t want this to be lost if either my free web hosting or free domain go belly up. Setup the toolchain environment * Create a working directory and
      Message 2 of 2 , Jun 7, 2012
      • 0 Attachment
        I don't want this to be lost if either my free web hosting or free domain go belly up.

        Setup the toolchain environment

        • Create a working directory and download master make file 1),

        mkdir -p /mnt/jdata/builds/nslug/deb
        cd /mnt/jdata/builds/nslug/
        wget --cache=off http://www.nslu2-linux.org/Makefile

        • Install all the required libraries,

        sudo make setup-host-debian

        • Download and install GCC-3.4 (not sure of GCC-4.4 works good for this) 2),

        cd /mnt/jdata/builds/nslug/deb
        wget http://ubuntu-mtc-a.evip.aol.com/pool/universe/g/gcc-3.4/cpp-3.4_3.4.6-6ubuntu5_i386.deb
        wget http://ubuntu-mtc-a.evip.aol.com/pool/universe/g/gcc-3.4/g++-3.4_3.4.6-6ubuntu5_i386.deb
        wget http://ubuntu-mtc-a.evip.aol.com/pool/universe/g/gcc-3.4/gcc-3.4_3.4.6-6ubuntu5_i386.deb
        wget http://ubuntu-mtc-a.evip.aol.com/pool/universe/g/gcc-3.4/gcc-3.4-base_3.4.6-6ubuntu5_i386.deb
        wget http://ubuntu-mtc-a.evip.aol.com/pool/universe/g/gcc-3.4/libstdc++6-dev_3.4.6-6ubuntu5_i386.deb
        sudo dpkg -i *deb

        • Make the GCC-3.4 version the default one (in case v4.4 is already installed) 3),

        sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.4 10
        sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 20
        sudo update-alternatives --config gcc
        sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-3.4 10
        sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 20
        sudo update-alternatives --config g++

        • Download bitbake recipes & patches,

        cd /mnt/jdata/builds/nslug/
        make setup-slugos-5.3-beta
        export BASE=/mnt/jdata/builds/nslug/releases/slugos-5.3-beta
        cd $BASE

        • Create some fixes for some buggy scripts 4) 5),

        sed -i -e 's/^MACHINE[[:space:]]*=[[:space:]]*\".*\"/MACHINE = \"nslu2be\"/' conf/auto.conf
        echo "TOPDIR='`pwd`'" >conf/topdir.conf. conf/topdir.conf && test "`pwd`" = "$TOPDIR" || \
        echo "TOPDIR='`pwd`'" > conf/topdir.conf
        sed -i 's/getline/getline2/' $BASE/openembedded/packages/unifdef/files/unifdef.c

        • Edit $BASE/openembedded/packages/fakeroot/fakeroot_1.9.6.bb, search and replace SRC_URI with the following,

        SRC_URI = "http://pkgs.fedoraproject.org/repo/pkgs/fakeroot/fakeroot_1.9.6.tar.gz/9441c981bfd4e521abcd5d93385f71d8/fakeroot_${PV}.tar.gz \

        • Add below lines to $BASE/openembedded/conf/checksums.ini, the official repositories don't have v1.9.6 anymore. Note: fakeroot_1.9.6.tar.gz is used on slugos-5.3, other versions might use another version. Check the latest bb file.


        • NOTE: if a checksum error appears while downloading a package (e.g. it no longer exists in the repository), do the 2 steps above, and remove the downloaded file in $BASE/downloads.

        • Replace symlink of sh to not point to dash 6),

        sudo ln -sf /bin/bash /bin/sh

        • Create a small binary, this will force to create the toolchain using the GNU sources,

        screen -S build bash --login # toolchain build takes a while
        source setup-env
        time bitbake tar

        • It looks like the above command fails the first time, so another patch needs to be applied and then run bitbake tar again,

        sed -i 's/getline/getline2/' $BASE/slugos-nslu2be.tmp/work/armv5teb-linux-gnueabi/linux-libc-headers-2.6.23-r3/linux-2.6.23/scripts/unifdef.c

        • If everything goes well, the cross-compiler will be in $BASE/slugos-nslu2be.tmp/cross/armv5teb/bin/armeb-linux-gnueabi-gcc.
        • The patches & unpacking directories are respectively located at,


        • To clean any build 7),

        bitbake -c clean fakeroot

        1) http://www.nslu2-linux.org/wiki/Development/MasterMakefile#ubuntu10.10
        2) http://ubuntu-mtc-a.evip.aol.com/pool/universe/g/gcc-3.4/
        3) http://askubuntu.com/questions/26498/choose-gcc-and-g-version
        4) http://www.nslu2-linux.org/wiki/Optware/SlugosbeDevel
        5) http://gumstix.8.n6.nabble.com/Openembedded-on-Ubuntu-9-10-td568010.html
        6) http://www.nslu2-linux.org/wiki/Optware/AddAPackageToOptware
        7) http://www.uv-ac.de/openembedded/openembedded-3.html

        Compile rtorrent with magnet-link & color UI support

        • Add the checksums of the new versions to $BASE/openembedded/conf/checksums.ini (they can be anywhere in the file),


        • Download & edit the patches (to have magnet link & color UI support),

        cd $BASE/openembedded/packages/libtorrent/files/
        wget http://ovh.ttdpatch.net/~jdrexler/rt/old/dht-pex-static_map.diff
        wget http://ovh.ttdpatch.net/~jdrexler/rt/old/magnet-uri.diff
        wget http://ovh.ttdpatch.net/~jdrexler/rt/old/object-sstr.diff
        wget http://www.simplylinux.ch/rtorrent/dht-pex-static_map_rev1117.diff
        wget http://www.simplylinux.ch/rtorrent/canvas-color.patch
        wget http://www.simplylinux.ch/rtorrent/trackerinfo.patch
        mkdir libtorrent.tmp rtorrent.tmp
        cp dht-pex-static_map.diff dht-pex-static_map_rev1117.diff magnet-uri.diff object-sstr.diff libtorrent.tmp
        cp canvas-color.patch dht-pex-static_map.diff magnet-uri.diff trackerinfo.patch rtorrent.tmp
        cd libtorrent.tmp
        sed -i '4,15d' dht-pex-static_map.diff
        sed -i '8,235d' magnet-uri.diff
        sed -i '1999,2021d' dht-pex-static_map.diff # correct patch is on dht-pex-static_map_rev1117.diff
        ls | while read f; do mv $f libtorrent.$f; done
        mv * ..
        cd ../rtorrent.tmp
        sed -i '16,2369d' dht-pex-static_map.diff
        sed -i '236,1889d' magnet-uri.diff
        ls | while read f; do mv $f rtorrent.$f; done
        mv * ..
        cd ..
        rmdir rtorrent.tmp libtorrent.tmp
        rm canvas-color.patch dht-pex-static_map.diff dht-pex-static_map_rev1117.diff magnet-uri.diff object-sstr.diff trackerinfo.patch

        • Edit the recipes 5) 6),

        cd $BASE/openembedded/packages/libtorrent
        cp -p libtorrent_0.12.4.bb libtorrent_0.12.6.bb
        cp -p rtorrent_0.8.4.bb rtorrent_0.8.6.bb


        SRC_URI = "http://libtorrent.rakshasa.no/downloads/libtorrent-${PV}.tar.gz \
                   file://libtorrent.dht-pex-static_map.diff;patch=1 \
                   file://libtorrent.dht-pex-static_map_rev1117.diff;patch=1 \
                   file://libtorrent.magnet-uri.diff;patch=1 \

        CXXFLAGS += "-mcpu=xscale -fno-inline"


        SRC_URI = "http://libtorrent.rakshasa.no/downloads/rtorrent-$.tar.gz \
                   file://autoconf-cross-fix.patch;patch=1 \
                   file://rtorrent.dht-pex-static_map.diff;patch=1 \
                   file://rtorrent.magnet-uri.diff;patch=1 \
                   file://rtorrent.canvas-color.patch;patch=1 \

        CXXFLAGS += "-mcpu=xscale -fno-inline"

        • This is where things get weird. Before starting the compilation, to avoid errors, run the following on another terminal 7),

        cd $BASE/slugos-nslu2be.tmp/work/armv5teb-linux-gnueabi
        watch -n1 rm libtorrent-0.12.6-r*/libtorrent-0.12.6/scripts/{libtool,lt*}.m4 rtorrent-0.8.6-r*/rtorrent-0.8.6/scripts/{libtool,lt*}.m4

        • Start the compilation,

        screen -S build bash --login
        cd $BASE
        source setup-env
        time bitbake rtorrent

        • If all goes well, the ipk files will be created,

        cd $BASE/slugos-nslu2be.tmp/deploy/ipk/armv5teb
        ls rtorrent_0.8.6-r0_armv5teb.ipk libtorrent11_0.12.6-r0_armv5teb.ipk

        • Go to the SlugOS box, and install rtorrent from the package manager (this is to avoid any dependencies or version errors),

        sudo opkg install rtorrent

        • To fix errors that may have appeared about different versions, edit the status file and remove the appropiate entry 8),

        sudo vi /usr/lib/opkg/status

        Package: rtorrent
        Version: 0.8.6-r0
        Depends: ncurses (>= 5.4), libcurl4 (>= 7.19.0), libc6 (>= 2.6.1), libz1 (>= 1.2.3), libtorrent11 (>= 0.12.6), libcrypto0.9
        Status: install prefer,user not-installed
        Architecture: armv5teb

        • Copy the packages to the SlugOS box and uncompress them 9),

        ar vx rtorrent_0.8.6-r0_armv5teb.ipk
        gunzip -c data.tar.gz | tar -xf -
        rm data.tar.gz control.tar.gz debian-binary
        ar vx libtorrent11_0.12.6-r0_armv5teb.ipk
        gunzip -c data.tar.gz | tar -tf -

        • Copy 2 binaries and replace a softlink,

        sudo cp -p /usr/bin/rtorrent /usr/bin/rtorrent.0.8.4
        sudo cp -p usr/bin/rtorrent /usr/bin
        sudo cp -p usr/lib/libtorrent.so.11.0.6 /usr/lib/
        sudo ln -sf /usr/lib/libtorrent.so.11.0.6 /usr/lib/libtorrent.so.11

        1) http://www.howtoforge.com/how-to-compile-rtorrent-from-svn-in-ubuntu-9.10-karmic-koala-debian-5-lenny-with-magnet-link-support
        2) http://www.howtoforge.com/how-to-compile-rtorrent-from-svn-in-ubuntu-10.04-lucid-lynx-debian-5-lenny-with-coloured-interface
        3) http://libtorrent.rakshasa.no/downloads/
        4) http://ovh.ttdpatch.net/~jdrexler/rt/old/
        5) http://comments.gmane.org/gmane.comp.handhelds.openembedded/32366
        6) http://libtorrent.rakshasa.no/wiki/LibTorrentKnownIssues#NSLU2routersandxscalebaseddevices
        7) http://libtorrent.rakshasa.no/ticket/1852
        8) http://lists.openmoko.org/nabble.html#nabble-td4054007
        9) http://www.g-loaded.eu/2008/01/28/how-to-extract-rpm-or-deb-packages/

      Your message has been successfully submitted and would be delivered to recipients shortly.