[personal profile] ichthuss

Поки японці зайняті розущільненнями реакторів, а лівійці — розущільненням Каддафі, продовжимо наші гентушні дослідження.

Ми закінчили на тому, що зібрали потріні пакети вручну. Тепер робимо діффи з усіма нашими змінами, внесеними до пакетів, окремо на кожний пакет. Розпаковуємо пакети знову, щоб мати непропатчений варіант:

# $EBLT clean
# $EBLT unpack
# $EBRT clean
# $EBRT unpack

Переіменовуємо симлінки:

# mv libtorrent libtorrent-0.12.6
# mv rtorrent rtorrent-0.8.6

Розпаковуємо бекап:

# tar xvjf rtorr.tar.bz2

Будуємо та пакуємо діффи:

# diff -Naur libtorrent/ libtorrent-0.12.6/ > libtorrent-0.12.6-magnet.patch
# bzip2 libtorrent-0.12.6-magnet.patch
# diff -Naur rtorrent/ rtorrent-0.8.6/ > rtorrent-0.8.6-magnet.patch
# bzip2 rtorrent-0.8.6-magnet.patch

Складаємо їх до /usr/portage/distfiles.

Тепер робимо копії .ebuild-файлів /usr/portage/net-libs/libtorrent/libtorrent-0.12.6.ebuild та /usr/portage/net-p2p/rtorrent/rtorrent-0.8.6.ebuild до відповідних каталогів /usr/local/portage/net-*/*/, підвищуючи при цьому номер r (цей номер позначає різні правила збирання однієї версію ПЗ):

# mkdir -p /usr/local/portage/net-libs/libtorrent
# cp /usr/portage/net-libs/libtorrent/libtorrent-0.12.6.ebuild /usr/local/portage/net-libs/libtorrent/libtorrent-0.12.6-r1.ebuild
# mkdir -p /usr/local/portage/net-p2p/rtorrent
# cp /usr/portage/net-p2p/rtorrent/rtorrent-0.8.6.ebuild /usr/local/portage/net-p2p/rtorrent/rtorrent-0.8.6-r1.ebuild

...і вносимо необхідні виправлення: в файлі libtorrent-0.12.6.ebuild до строки

SRC_URI="http://libtorrent.rakshasa.no/downloads/${P}.tar.gz"

додаємо наш патч-файл:

SRC_URI="http://libtorrent.rakshasa.no/downloads/${P}.tar.gz http://localhost/portage/${P}-magnet.patch.bz2"

URI тут насправді неважливий, portage спочатку шукає файл в distfiles, а лише потім намагається завантажити,тому суттєвим є лише ім’я файла, оскільки він у нас вже лежить в distfiles.

Робимо, щоб наші зміни використовувалися лише при заданні USE-flag з назвою "magnet". Для цього спочатку оголосимо його:

IUSE="debug ipv6 ssl magnet"

(жирним — доданий текст). Далі нам потрібно накладати патч лише у випадку, коли він використовується. В функції src_prepare() дописуємо:

        if use "magnet"; then
                epatch "${DISTDIR}"/${P}-magnet.patch.bz2
        fi

Рівно те саме робимо з файлом rtorrent-0.8.6-r1.ebuild, але додатково вказуємо на нову залежність: для збирання rtorrent’а з флагом magnet libtorrent також має бути зібрана з ним. Тому в змінну COMMON_DEPEND дописуємо ще одну строку:

magnet? ( net-libs/libtorrent[magnet] )

Нарешті, щоб portage признавала наші новостворені файли за свої, потрібно створити маніфест з контрольними сумами всіх файлів, що беруть участь в процесі. Це робиться командою ebuild digest:

# $EBLT digest
# $EBRT digest

Все, можемо збирати наші торенти звичною командою

# USE=magnet emerge rtorrent

Ну, або прописати опцію в /etc/portage/package.use, на свій смак.

Все. Буде настрій, допишу третю частину.

ЗІ. Сподіваюсь, ніхто всерйоз не сприйняв перше речення. Звісно, я не маю наувазі, що те, що відбувається в Японії і Лівії — дрібниці і жарти. Просто маю дурну звичку жартувати з проблем, в першу чергу своїх, в другу — з чужих.

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

ichthuss

June 2023

S M T W T F S
    123
45678 910
11121314151617
18192021222324
252627282930 

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 28th, 2025 10:03 pm
Powered by Dreamwidth Studios