Автор Тема: Учимся собирать пакеты из исходников  (Прочитано 12217 раз)

ms1984

  • Гость
http://git.altlinux.org/gears/h/hello.git
тоже поддерживаю! но пожалуйста прошу закрепить проделанное.
Спасибо.

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Верно?
Если да прошу еще аналогичный пакет для клонирования и сборки!
Повторение мать учения в данном случае, а никак не заикания (повторение! - мать заикания... (с))

Адрес знаете, пакетов 17429 на выбор ;-)

ms1984

  • Гость
Адрес знаете, пакетов 17429 на выбор ;-)

спасибо! пробовать к концу недели! 

ms1984

  • Гость
Приветствую!

Лето это маленькая жизнь ...
 
https://github.com/slytomcat/yandex-disk-indicator - индикатор яндекс диска.

Антон реально ли его завести на моей альте? посильно для меня?
Спасибо.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Я попробую сегодня собрать.
Андрей Черепанов (cas@)

ms1984

  • Гость
Я попробую сегодня собрать.

Спасибо большое!
Если получится был бы очень признателен!
Если будет у Вас время и возможность описать алгоритм как проводили сборку (что выкачивали как собирали буду благодарен).

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Собираем пакет yandex-disk-indicator
https://github.com/slytomcat/yandex-disk-indicator

Подразумевается, что git и сборка в hasher настроены.

1. Если есть git, скачиваем исходники:
$ git clone https://github.com/slytomcat/yandex-disk-indicator
2. Заходим в каталог и определяем последний тег:
$ cd yandex-disk-indicator
$ git describe --abbrev=0 --tags
1.8.16
Показывается последний тег 1.8.16 в бранче по умолчанию (master)

3. Очищаем исходники, чтобы сделать новый бранч для спека и правил .gear:
$ git rm -rf *
$ git commit -m 'Make empty branch'

4. Ищем, не собирал ли кто RPM для этого пакета. Заходим на http://pkgs.org и ищем yandex-disk-indicator.
О! Найдено для ROSA, берём и помним, что в спеке должны поблагодарить за сборку. Нажимаем на имя пакета yandex-disk-indicator-1.8.16-1-rosa2014.1.noarch.rpm, затем на дискету в разделе «Download» и скачиваем yandex-disk-indicator-1.8.16-1.src.rpm:

$ wget http://mirror.rosalab.ru/rosa/rosa2014.1/repository/SRPMS/contrib/updates/yandex-disk-indicator-1.8.16-1.src.rpm
5. «Потрошим» src.rpm и убираем последний коммит:
$ gear-srpmimport --branch=master --no-unpack yandex-disk-indicator-1.8.16-1.src.rpm
$ git reset HEAD^
$ ls -a
.  ..  .gear  .git  yandex-disk-indicator-1.8.16-1.src.rpm  yandex-disk-indicator-1.8.16.tar  yandex-disk-indicator.spec
Очищаем исходники и src.rpm:
$ rm -rf *.src.rpm *.tar
Имеем спек и .gear/rules:
$ git status -s
?? .gear/
?? yandex-disk-indicator.spec

6. Проверяем .gear/rules. Собирать будем как взрослые, из тега, а не архива:
$ cat .gear/rules
gzip: *.tar

Плохо. Незачем дополнительно схимать исходники, ессли они и так будут сжаты в rpm.
Меняем на:
tar: @version@:.
(упаковать содержимое корневого каталога по тегу, совпадающему с версией в spec-файле)

7. Правим yandex-disk-indicator.spec:
а) проверяем номер версии. Он совпадает с последним тегом.
б) меняем Release на принятый в ALT Linux: alt1
в) проверяем Group на наличие в ALT Linux:
$ grep Communications /usr/lib/rpm/GROUPS
Communications
Есть такая группа.
г) правим Source0 на %name-%version.tar
д) проверяем зависимости и адаптируем имена для ALT Linux:
Requires: typelib(AppIndicator3)
Requires: python3-module-pyinotify
е) наводим красоту: убираем фигурные скобки { и } и %{_datadir}/applications/* меняем на %_desktopdir/*
ж) добавляем %changelog. Я это делаю в vim по \ac (должен быть установлен пакет vim-plugin-spec_alt-ftplugin):
%changelog
* Mon Jul 25 2016 Andrey Cherepanov <cas@altlinux.org> 1.8.16-alt1
- Initial build in Sisyphus (thanks ROSA for the spec)

8. Обновляем список тегов, используемых gear для сборки:
$ gear-update-tag -a
9. Коммитим всю красоту:
$ git add .(если не хочется править в vim, то можете прописать mcedit или любой другой редактор):
$ EDITOR=mcedit gear-commit(выход в mcedit по F10)

10. Собираем в hasher:
gear-hsh $TMP -v 2>&1 | tee $TMPDIR/build-$(date +%y%m%d-%H:%M).log
Журнал сборки можно посмотреть потом в $TMPDIR/build-<дата и время>.log

11. Правим баги:

11.1 Кривой путь
+ chmod 644 '/usr/src/tmp/yandex-disk-indicator-buildroot/usr/share/applications/*'
chmod: cannot access '/usr/src/tmp/yandex-disk-indicator-buildroot/usr/share/applications/*': No such file or directory
Для правильного копирования надо создать %buildroot:
перед cp -r ... добавляем
mkdir -p %buildroot
11.2 Проверяем анметы (неразрешаемые зависимости):
$ cd $TMPDIR/aptbox
$ ./apt-cache unmet
Пусто - хорошо. Сборочница сама убрала ненужное.
возвращаемся назад:
$ cd -
12. Добавляем правила gear/remotes для отслеживания новых версий:
$ git remote rename origin upstream
$ gear-remotes-save
$ git add .

13. Обновляем коммит, пушим и отправляем его на сборочницу:
$ EDITOR=mcedit gear-commit -a --amend --date="$(date -R)"
« Последнее редактирование: 28.07.2016 11:16:22 от Skull »
Андрей Черепанов (cas@)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Отправил в Sisyphus и p8.
Андрей Черепанов (cas@)

ms1984

  • Гость
Отправил в Sisyphus и p8.

Андрей - низкий поклон Вам! Спасибо.
 Правда сейчас не могу определиться за что)), с точки зрения ценности - сам плагин или же алгоритм действий проделанный над ним, который  интереснее.
Спасибо.
Полез искать его в синаптик ищу соот-но как понимаю "yandex-disk-indicator"! и попробую у себя пособирать  :-D

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
git clone git://git.altlinux.org/gears/y/yandex-disk-indicator.git :)
Андрей Черепанов (cas@)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Все пакеты ALT Linux имеют git-репозиторий: /gears или /srpms
c бранчами, соответствующими альтовым бранчам.
Андрей Черепанов (cas@)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
А в репозиториях будет завтра утром.
Андрей Черепанов (cas@)

ms1984

  • Гость
альтовым бранчам.

Если плагин у меня соберется нормально можно будет его поставить в виртуалбоксе в тестовом Альте?

склонировалось
Спойлер
[abra@comp-core-i7-4700mq-070d27 ~]$ cd gear
[abra@comp-core-i7-4700mq-070d27 gear]$ ls -a
.  ..  command_gear.txt  deadbeef  gcdemu  hasher-init.sh  hsh-buildreq.sh
[abra@comp-core-i7-4700mq-070d27 gear]$ git clone git://git.altlinux.org/gears/y/yandex-disk-indicator.gitCloning into 'yandex-disk-indicator'...
remote: Counting objects: 2142, done.
remote: Compressing objects: 100% (823/823), done.
remote: Total 2142 (delta 1204), reused 2142 (delta 1204)
Receiving objects: 100% (2142/2142), 3.27 MiB | 272.00 KiB/s, done.
Resolving deltas: 100% (1204/1204), done.
Checking connectivity... done.
[abra@comp-core-i7-4700mq-070d27 gear]$ ls -a
.  ..  command_gear.txt  deadbeef  gcdemu  hasher-init.sh  hsh-buildreq.sh  yandex-disk-indicator
[abra@comp-core-i7-4700mq-070d27 gear]$
_ пока есть время ...погнал душу в рай отводить... (с)
« Последнее редактирование: 25.07.2016 20:18:26 от ms1984 »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Можно, но зачем? Через несколько часов в официальных репозиториях будет. Впрочем, для тренировки почему нет...
Андрей Черепанов (cas@)

ms1984

  • Гость
Доброго вечера!
В целях познавания окружающего мира и повышения навыков по сборке пакетов прошу сопроводить по следующему моменту (у кого время есть подсказать/указать косяки если будут)

=задача - протестировать код github =

sudo wget -O /usr/bin/yandex-disk-indicator https://raw.githubusercontent.com/slytomcat/yandex-disk-indicator/master/yandex-disk-indicator.py
sudo chmod a+x /usr/bin/yandex-disk-indicator
yandex-disk-indicator -l10

 Делаю следующее:
1. выкачиваю с гита исходники:

[abra@comp-core-i7-4700mq-070d27 ~]$ cd gear
[abra@comp-core-i7-4700mq-070d27 gear]$ ls
command_gear.txt  deadbeef  gcdemu  hasher-init.sh  hsh-buildreq.sh  yandex-disk-indicator
[abra@comp-core-i7-4700mq-070d27 gear]$ git clone https://github.com/slytomcat/yandex-disk-indicator
fatal: destination path 'yandex-disk-indicator' already exists and is not an empty directory.
[abra@comp-core-i7-4700mq-070d27 gear]$ rm -rf yandex-disk-indicator
[abra@comp-core-i7-4700mq-070d27 gear]$ git clone https://github.com/slytomcat/yandex-disk-indicator
Cloning into 'yandex-disk-indicator'...
remote: Counting objects: 2325, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 2325 (delta 4), reused 0 (delta 0), pack-reused 2310
Receiving objects: 100% (2325/2325), 3.76 MiB | 164.00 KiB/s, done.
Resolving deltas: 100% (1297/1297), done.
Checking connectivity... done.
[abra@comp-core-i7-4700mq-070d27 gear]$
« Последнее редактирование: 04.08.2016 20:27:04 от ms1984 »