Transmission с возможностью последовательного скачивания

Transmission с возможностью последовательного скачивания

Postby vlad1024 » 31 Oct 2017, 03:25

Здравствуйте!

А можно ли попросить скомпилировать пропатченный модуль Transmission с опцией последовательного скачивания?

Вот отсюда: http://thomaslaroche.tumblr.com/post/93 ... sequential

Сам бы попробовал скомпилировать и собрать, вроде описание есть, но на iconbit xds1003d, я так понимаю, в прошивке компилятора нет...
может быть, как-нибудь можно поставить компилятор?

Подскажите, плз, что делать! (moServices стоят)
Iconbit 1003d-t2 (firmware v11131)
vlad1024
 
Posts: 30
Joined: 05 Mar 2014, 02:05

Re: Transmission

Postby vlad1024 » 22 Nov 2017, 04:00

Как скомпилировать Transmission с возможностью последовательного скачивания

Ну, так как никто не откликнулся, пришлось делать самому.
Вообще, я линуксе я полный ноль, поэтому убил часов 6. Но - ЗАРАБОТАЛО! Ура.
Итак, краткое содержание.

1. Начальные условия.
Девайс: iconbit xds1003d. Проц RTL1186, MIPSEL. Linux стоит BUSYBOX. Прошивка 11323 вроде.

Установлен Moservices. И установлен модуль Transmission 2.90 с помощью Moservices. Всё работает.

2. Задача
Поставить Transmission с возможностью последовательного скачивания поверх существующей трансмишн.

Готового пакета нет. Поэтому приходится компилировать и собирать полностью самому. Поехали

3. Последовательность действий

1. Заходим рутом на наш плеер.

2. Ставим optware:
Code: Select all
cd /tmp
wget http://www.moservices.org/patches/install_opt
chmod +x install_opt
./install_opt

не используем параметр MEM, тк ставим на жесткий диск.

Optware у меня поставилась на жесткий диск и создало ссылку: /opt
Появился ipkg.

3. Апдейт пакетов (чтоб ипкг скачивал актуальные)
Code: Select all
ipkg update


4. Удаляем libiconv (иначе конфликтует с
Code: Select all
ipkg remove libiconv


5. Ставим компиляторы и всякий девелоперский стафф
Code: Select all
ipkg install buildroot
ipkg install optware-devel
ipkg install make
ipkg install autoconf
ipkg install perl
ipkg install gettext
ipkg remove wget-ssl              <-конфликтует, не помню уже с чем
ipkg install wget
ipkg install openssl-dev
ipkg install libcurl-dev
ipkg install perl-libxml
ipkg install gettext

Вообще, может что-то пропустил.
Кое-что пришло переустанаваливать (тк при установке следующего пакета сносилось что-то нужное из предыдущих).

Все пакеты ipkg ставил отсюда: ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/

6. Исправляем ошибки в установленных файлах
в файле \opt\bin\automake
ЗАМЕНИТЬ '/home/slug/optware/oleg/host/staging/opt/bin/autoconf' заменить на '/opt/bin/autoconf ' (ну или куда у вас поставился autoconf - поищите сами)

7. Переключим режим PERL на безтредовый, для этого:
в файле \opt\share\automake-1.12\Automake\Config.pm
установить параметр:
$perl_threads = 0; <---- (а было 1)


8. Добавим путь в LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/opt/lib:$LD_LIBRARY_PATH


9. Ставим пакет intltool. Увы, скомпилированного его нет. Придется самим копаться и компилять:

Качаем отсюда: https://launchpadlibrarian.net/94524169 ... 0.2.tar.gz
Распаковываем исходники в /opt/tmp
А компилируем и ставим в /opt

как компилируем:
Code: Select all
cd /opt/tmp/intltool-0.50.2
./configure --prefix=/opt
make
make install



10. Скачиваем Transmission-SEQ. Я качал отсюда: http://thomaslaroche.tumblr.com/post/93 ... sequential
Я качал 2.84. В надежде, что там минимум доп. модулей и будет проще собираться. Но можно и 2.90 скачать.

Распаковываем её в /opt/tmp

11. Правим файл /opt/tmp/transmission-2.84-seq/configure.ac
Добавим строчку
Code: Select all
AC_PROG_RANLIB

перед строчкой
Code: Select all
AC_PROG_CC


12. Фух. Вроде можно конфигурировать и собирать .

Code: Select all
cd /opt/tmp/transmission-2.84-seq
./configure --host=mipsel-linux --target=mipsel-linux --without-systemd-daemon --disable-nls


Code: Select all
./autogen.sh --host=mipsel-linux --target=mipsel-linux --without-systemd-daemon --disable-nls


Долго и нудно будет генерировать .IM файлы. На WARNING'и внимания не обращайте.

и, наконец:
Code: Select all
make


ОООоооОООоочень долго.

13. В результате должны появиться файлы
Code: Select all
/opt/tmp/transmission-2.84-seq/daemon/transmission-daemon
/opt/tmp/transmission-2.84-seq/daemon/transmission-remote


14. Ставимся поверх существующей трансмишны.

а. Останавливаем существующую Transmission через панель MOSERVICES

б. ищем, куда MOSERVICES поставили трансмишн на вашем плеере. У меня сюда: /usr/local/etc/mos/trans (дальше буду использовать этот путь)

в. Перезаписываем файлы, которые там лежат нашими откомпилированными файлами (из пункта 13). Нужно перезаписать только 2 файла:
transmission-daemon и transmission-remote
(а лучше старые сохранить, на всяк случай)

г. Удаляем (а лучше переименовываем) каталог /usr/local/etc/mos/trans/web в 'web-old'

д. Копируем "наш" каталог web вместо установленного:
из /opt/tmp/transmission-2.84-seq/web копируем его в /usr/local/etc/mos/trans/web

WEB каталог нужно перезаписать, т.к. в веб=интерфейсе появляется опция "sequential download".

е. Запускаем transmission через панель Moservices.

Радуемся!

Image
Iconbit 1003d-t2 (firmware v11131)
vlad1024
 
Posts: 30
Joined: 05 Mar 2014, 02:05

Re: Transmission

Postby Pokrass » 22 Nov 2017, 15:27

Имхо, собрали бы в кучу по инструкции viewtopic.php?f=16&t=263. И для себя про запас, и делиться с народом проще, и больше людей смогут попробовать.
IconBIT HDS7L Fw: AMP_r12 GUI: VRT
iNeXT HD1 W Fw: X3D_Series_V4.0.2b160406
User avatar
Pokrass
 
Posts: 3119
Joined: 18 Mar 2012, 04:18
Location: Плюк. Планета № 215 в Тентуре галактики "Кин-дза-дза" в Спирали.

Re: Transmission

Postby vlad1024 » 22 Nov 2017, 23:53

Попробую, мож получится.

Сейчас проблема в том, что без подмонтированного /opt (где куча хлама девелоперского) мой трансмишн не запускается, видимо мои получившиеся бинарники завязана на какие-то библиотеки, которых нет в стандартной установке moservices

Подскажите плз, как распознать, что это за библиотеки и как их интегрировать в мою сборку трансмишн? Очень лень разбираться, покуда всё работает :D А в линуксе я - ноль. Хотя и чутка прокачался, пока это всё компилировал.
Iconbit 1003d-t2 (firmware v11131)
vlad1024
 
Posts: 30
Joined: 05 Mar 2014, 02:05

Transmission с возможностью последовательного скачивания

Postby Virtual » 23 Nov 2017, 18:19

Сейчас проблема в том, что без подмонтированного /opt (где куча хлама девелоперского) мой трансмишн не запускается

1. проблема в том что собирали нативно под оптварь, в "динамике" (используются динамически подгружаемые либы... а раз из оптвари, то и либы треба из /opt :( )
2. можно собрать в статик... но транс... это слишком жирно даже для сатурна (1186)
3. узнать зависимости это
Code: Select all
ldd бинарник

как то так выглядит родное из моса | +
~ # ldd /usr/local/etc/mos/trans/transmission-daemon
librt.so.0 => /lib/librt.so.0 (0x2aaed000)
libevent-2.0.so.5 => not found
libcurl.so.4 => not found
libssl.so.1.0.0 => not found
libcrypto.so.1.0.0 => not found
libz.so.1 => not found
libm.so.0 => /lib/libm.so.0 (0x2ab2e000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2ab8b000)
libpthread.so.0 => /lib/libpthread.so.0 (0x2abda000)
libc.so.0 => /lib/libc.so.0 (0x2ac2d000)
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)

те что not found как раз доступны через LD_LIBRARY_PATH=/usr/local/etc/mos/lib

утиль ldd вроде везде добавляли в прошивки с moS

обычно для плеера бинарники собираются кросс компиляцией из линуха в виртуалке иль живом компе. это и быстрее и удобней.
но при кросс компиляции тоже есть свои заморочки...
тулчейн (кросс компилятор) собранный реалтек и переработанный... заточен под семейство Red Hat (та же федора), а многим нравится Ubuntu (семейство Debian)
...
марсы: HDS7 (смотрелка AMP скин vrt уже без вариантов)
HDR12 AMP (обычно сервер с RAM 256 и возможностью подключить 2 SATA диска 2T+)
XTR PRO(AMP, HTTP(S) NFS SMB FTP сервер +trans2.84 + 2 SATA диска 2T+
сатурны: XTR Prodigy, R6S(512Mb_NAND), HD900A(_MD*) прошивка
User avatar
Virtual
 
Posts: 6347
Joined: 01 Oct 2010, 17:17
Location: UFA RU

Re: Transmission с возможностью последовательного скачивания

Postby vlad1024 » 24 Nov 2017, 01:22

Вот-вот.

Я было вначале сунулся в виртуалку Virtualbox... Поставил. Начал ставить кросс-компиляторы... Но понял, что увязну, когда зашел в опции... Там ад какой-то. А настроенный кросскомпайлер не нашел.
Поэтому решил попробовать на плеере. И довольно быстро всё получилось.

Вот такая инфа из моего transmission-daemon:
Code: Select all
/data/mos/trans # ldd transmission-daemon
        librt.so.0 => /opt/lib/librt.so.0 (0x1aabf000)
        libevent-2.0.so.5 => /opt/lib/libevent-2.0.so.5 (0x1aad0000)
        libcurl.so.4 => /opt/lib/libcurl.so.4 (0x1ab2a000)
        libssl.so.0.9.7 => /opt/lib/libssl.so.0.9.7 (0x1ab8f000)       
        libcrypto.so.0.9.7 => /opt/lib/libcrypto.so.0.9.7 (0x1abd6000)
        libdl.so.0 => /opt/lib/libdl.so.0 (0x1ad24000)
        libz.so.1 => /opt/lib/libz.so.1 (0x1ad37000)
        libm.so.0 => /opt/lib/libm.so.0 (0x1ad5e000)
        libpthread.so.0 => /opt/lib/libpthread.so.0 (0x1ad7d000)
        libc.so.0 => /opt/lib/libc.so.0 (0x1ada0000)
        libgcc_s.so.1 => /opt/lib/libgcc_s.so.1 (0x1ae55000)
        ld-uClibc.so.0 => /opt/lib/ld-uClibc.so.0 (0x1aaa8000)
r

Code: Select all
/data/mos/trans # readelf -l transmission-daemon

Elf file type is EXEC (Executable file)
Entry point 0x40bce0
There are 8 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  PHDR           0x000034 0x00400034 0x00400034 0x00100 0x00100 R E 0x4
  INTERP         0x000134 0x00400134 0x00400134 0x00018 0x00018 R   0x1
      [Requesting program interpreter: /opt/lib/ld-uClibc.so.0]
  REGINFO        0x00014c 0x0040014c 0x0040014c 0x00018 0x00018 R   0x4
  LOAD           0x000000 0x00400000 0x00400000 0x95e54 0x95e54 R E 0x10000
  LOAD           0x096000 0x004a6000 0x004a6000 0x036a0 0x045d0 RW  0x10000
  DYNAMIC        0x000164 0x00400164 0x00400164 0x00120 0x00120 RWE 0x4
  GNU_EH_FRAME   0x095e30 0x00495e30 0x00495e30 0x00024 0x00024 R   0x4
  NULL           0x000000 0x00000000 0x00000000 0x00000 0x00000     0x4

 Section to Segment mapping:
  Segment Sections...
   00
   01     .interp
   02     .reginfo
   03     .interp .reginfo .dynamic .hash .dynsym .dynstr .init .text .MIPS.stubs .fini .rodata .eh_frame_hdr
   04     .eh_frame .ctors .dtors .jcr .data.rel.ro .data .rld_map .got .sbss .bss
   05     .dynamic
   06     .eh_frame_hdr
   07


libssl и libcrypt имеют версии 0.9.7 потому что libssl-dev, которая ставится с помощью ipkg имеет версию 0.9.7.... Версия 1.0.0 не имеет какого-то ресурсного файла, который нужен для компиляции. Не помню уже какого....

Кстати, бинарник получился семиметровый, хотя тот, который ставится moSом весит 1.5 метра. Ну да неважно, главное - работает и стабильно.

PS: Очень удобно теперь фильмы смотреть. Поставил закачку, подождал минуты 2 - и вперед! Даже 16гиговый рип смотрится в реальном времени.
Прямо праздник какой-то! Ибо планировать скачивание заранее - это не про меня. Из-за чего приходилось часто качать в плохом качестве (гига 2-4), чтобы не ждать час-два перед началом просмотра. Сейчас - тока 16гиговые рипы 8-)

PSS: Хотя, конечно, последовательное скачивание - это не очень хорошо для торрент сети, особенно для новых раздач. Особенно, если работать в режиме посмотрел-стёр. Поэтому в клиентах такая опция часто отсутствует по-умолчанию.
Но я на раздаче все равно остаюсь после того как скачал. И еще сутки минимум стою, так что я вроде как нивелирую негативный эффект :roll:

PSSS: Могу свой скомпилированный каталог mos/trans выложить здесь.
Iconbit 1003d-t2 (firmware v11131)
vlad1024
 
Posts: 30
Joined: 05 Mar 2014, 02:05

Re: Transmission с возможностью последовательного скачивания

Postby Virtual » 24 Nov 2017, 05:36

PSSS: Могу свой скомпилированный каталог mos/trans выложить здесь.

не стоит... соберу ка я этот транс кросскомпилятором 8-) .
А настроенный кросскомпайлер не нашел.

а достаточно было спросить, чуть позже выложу куданить.

PS обяз нужно собирать 2.90, и обновление либ OpenSSL тоже, там очень критические правки были.
марсы: HDS7 (смотрелка AMP скин vrt уже без вариантов)
HDR12 AMP (обычно сервер с RAM 256 и возможностью подключить 2 SATA диска 2T+)
XTR PRO(AMP, HTTP(S) NFS SMB FTP сервер +trans2.84 + 2 SATA диска 2T+
сатурны: XTR Prodigy, R6S(512Mb_NAND), HD900A(_MD*) прошивка
User avatar
Virtual
 
Posts: 6347
Joined: 01 Oct 2010, 17:17
Location: UFA RU

Re: Transmission с возможностью последовательного скачивания

Postby vlad1024 » 25 Nov 2017, 04:45

Ну что-то не додумался я насчет кросскомпилятора, видимо после того, как никто не ответил на первый пост, я решил что тут всё умерлО. ;)
Уверен, действительно круто было бы иметь здесь доку по установке кросскомпилятора под виртуалку с конфигом под все эти MIPS, да с примером компиляции какого-нибудь модуля. Уверен, число вовлеченных в разработку сразу бы возросло 8-)

А правильно собранный трансмишн-сек, думаю, будет реально востребован.
Iconbit 1003d-t2 (firmware v11131)
vlad1024
 
Posts: 30
Joined: 05 Mar 2014, 02:05

Re: Transmission с возможностью последовательного скачивания

Postby Virtual » 26 Nov 2017, 19:14

1. потребуется линух линейки RedHat напр. Fedora, обяз 32бита! рекомендую федора не выше 25 включительно (сам пользую 21), на старших версиях ядро на 2 поколения старше того что в плеере и возможны проблемы. (часть тулчейна уже бинарная... ее в теории можно собрать и самому но, это тот еще танец и время)
2. оперативки от гига (не ниже 512мб, некоторые пакеты при сборке очень нехило ее жрут при оптимизации, и 512 может не хватить)

нужное и актуальное лежит тут: http://moservices.org/hui/files/toolchain/
но не спешим оное качать ставить и сразу собирать :) еще в хост систему потребуется доставить много чего из того что треба для компиляции (как минимум разного рода git gcc gcc-c++ make automake и т.д.)

ЗЫ из того что помню...
и ставил сам | +
Code: Select all
sudo yum install autoconf automake gperf bison flex texinfo libtool intltool python-devel gnutls-devel libacl-devel openldap-devel gawk ncurses-libs patch gcc gcc-c++ git subversion


PSPS но я точно чет забыл в хост систему, ибо транс проходя квест не проходит!
в autogen.sh в42ю строку добавим exit дабы под хост не собирался...
так верно:
| +
./autogen.sh
creating libtransmission/version.h
libtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
configure.ac:20: installing './compile'
configure.ac:20: installing './config.guess'
configure.ac:20: installing './config.sub'
configure.ac:19: installing './install-sh'
configure.ac:19: installing './missing'
Makefile.am: installing './INSTALL'
cli/Makefile.am: installing './depcomp'
parallel-tests: installing './test-driver'
Creating aclocal.m4 ...
Running glib-gettextize... Ignore non-fatal messages.
Copying file po/Makefile.in.in

Please add the files
codeset.m4 gettext.m4 glibc21.m4 iconv.m4 isc-posix.m4 lcmessage.m4
progtest.m4
from the /usr/share/aclocal directory to your autoconf macro directory
or directly to your aclocal.m4 file.
You will also need config.guess and config.sub, which you can get from
ftp://ftp.gnu.org/pub/gnu/config/.

Making aclocal.m4 writable ...
Running intltoolize...

а так плохо, квест не пройден:
пробовал пройти на свежеустановленой F25 | +
/autogen.sh
creating libtransmission/version.h
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
configure.ac:20: installing './compile'
configure.ac:19: installing './missing'
cli/Makefile.am: installing './depcomp'


| +
предконфигуреный транс в тестовой системе скомпилился, ну да с оговорками но все-же., так что нать найти что в хосте не хватает и будет рабочая инструкция.
марсы: HDS7 (смотрелка AMP скин vrt уже без вариантов)
HDR12 AMP (обычно сервер с RAM 256 и возможностью подключить 2 SATA диска 2T+)
XTR PRO(AMP, HTTP(S) NFS SMB FTP сервер +trans2.84 + 2 SATA диска 2T+
сатурны: XTR Prodigy, R6S(512Mb_NAND), HD900A(_MD*) прошивка
User avatar
Virtual
 
Posts: 6347
Joined: 01 Oct 2010, 17:17
Location: UFA RU

Re: Transmission с возможностью последовательного скачивания

Postby Virtual » 28 Nov 2017, 05:44

как квест с automake autigen пройдет....
начинаем конфигурить код под целевую систему:
в папке с transmission-2.90-seq
создаем папочку ну хоть 1186saturn, и в ней создаем скрипт, с содержимым ниже и запускаем...
Code: Select all
#! /bin/sh
#

CURDIR=$PWD
cd ../
ROOTDIR=$PWD
cd $CURDIR
TOOLCHAIN_DIR=/usr/local/msdk-4.3.6-mips-EL-2.6.34-0.9.30.3_hwfpu

export PKG_CONFIG_LIBDIR=$TOOLCHAIN_DIR/lib/pkgconfig
export PKG_CONFIG_SYSROOT_DIR=$TOOLCHAIN_DIR
export PATH=$TOOLCHAIN_DIR:$PATH
echo "==========================="
#/home/vadmin/RTL/GCC4.7/gcc-4.7.2_mipsel_2.6.12.6_0.9.28_my/usr/bin/pkg-config --list-all
echo "==========================="

CC=$TOOLCHAIN_DIR/bin/mipsel-linux-gcc \
LD=$TOOLCHAIN_DIR/bin/mipsel-linux-ld \
AR=$TOOLCHAIN_DIR/bin/mipsel-linux-ar \
RANLIB=/$TOOLCHAIN_DIR/bin/mipsel-linux-ranlib \
CPP="$TOOLCHAIN_DIR/bin/mipsel-linux-gcc -E" \
CXX=$TOOLCHAIN_DIR/bin/mipsel-linux-g++ \
CXXCPP="$TOOLCHAIN_DIR/bin/mipsel-linux-g++ -E" \
STRIP=$TOOLCHAIN_DIR/bin/mipsel-linux-strip \

CC=$TOOLCHAIN_DIR/bin/mipsel-linux-gcc \
LD=$TOOLCHAIN_DIR/bin/mipsel-linux-ld \
AR=$TOOLCHAIN_DIR/bin/mipsel-linux-ar \
RANLIB=/$TOOLCHAIN_DIR/bin/mipsel-linux-ranlib \
CPP="$TOOLCHAIN_DIR/bin/mipsel-linux-gcc -E" \
CXX=$TOOLCHAIN_DIR/bin/mipsel-linux-g++ \
CXXCPP="$TOOLCHAIN_DIR/bin/mipsel-linux-g++ -E" \
STRIP=$TOOLCHAIN_DIR/bin/mipsel-linux-strip \
CFLAGS=-mips32r2 \
LDFLAGS='-lssl -lcrypto -lcurl -levent' \
../configure --host=mipsel-linux \
--prefix=$CURDIR/root_bin \
--libexecdir=$TOOLCHAIN_DIR --disable-nls --enable-lightweight --disable-static --enable-shared \
with_ssl=$TOOLCHAIN_DIR

в результате в этой папке будет создан целевой код готовый для компиляции
далее
Code: Select all
make
make install
и в подпапке root_bin будет готовый транс

PS данный транс на данном тулчейне влоб не соберется, ибо IPv6 безусловно, придется просто нагло закомментить 1 строку на коей произойдет затык.
+ 2 очепятки в index.html исправить от копипаста.
марсы: HDS7 (смотрелка AMP скин vrt уже без вариантов)
HDR12 AMP (обычно сервер с RAM 256 и возможностью подключить 2 SATA диска 2T+)
XTR PRO(AMP, HTTP(S) NFS SMB FTP сервер +trans2.84 + 2 SATA диска 2T+
сатурны: XTR Prodigy, R6S(512Mb_NAND), HD900A(_MD*) прошивка
User avatar
Virtual
 
Posts: 6347
Joined: 01 Oct 2010, 17:17
Location: UFA RU


Return to Разработка

Who is online

Users browsing this forum: vvv9660 and 1 guest