Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Отправка python пакетов в ppa без «жизнь боль»

Anna | 16.06.2014 | нет комментариев

Позже поста про смотрелку сериалов пришло пожелание добавить subliminal для загрузки субтитров. Увидев его зависимости, из которых в репозитории присутствуют только два пакета, и то не подходящих версий. Я осознал, что жизнь боль и мне придётся сделать пять debian/control, сделать пять changelog’ов и сделать 20 тасков в jenkins.

Но для чего тратить на всё это целых два часа, если дозволено потратить каждого несколько дней на автоматизацию этого процесса. В итоге возникpytoppa, он:

  • формирует changelog из истории между изменениями version в setup.py;
  • механически добавляет непременные зависимости;
  • имеет примитивный конфиг в yaml.

Установка

Ubuntu

В ubuntu пакет дозволено поставить из ppa:

sudo add-apt-repository ppa:nvbn-rm/ppa
sudo apt-get update
sudo apt-get install pytoppa

Другие дистрибутивы

Необходимо вручную установить dh-make и cdbs, а позже этого поставить pytoppa через pip:

pip install pytoppa

Применение

В корне репозитория с планом необходимо сделать .pytoppa.yml, его формат:

section: сегмент  # по умолчанию python, дозволено не указывать
dependencies:
 - связанность-1
 - связанность-2
releases:
 - релиз-1
 - релиз-2

Скажем, для приложения series_list:

section: net
dependencies:
  - python-requests
  - python-beautifulsoup
  - python-requests
  - python-gevent
  - python-decorator
  - python-libtorrent
  - python-pyside
  - subliminal
releases:
  - saucy
  - precise
  - quantal
  - raring


И запустить:

pytoppa ключ-зарегистрированный-на-launchpad ppa

Скажем, я запускаю:

pytoppa 'Vladimir Iakovlev <nvbn.rm@gmail.com>' 'ppa:nvbn-rm/ppa'

Как оно работает

Немножко нетривиальным оказалось считывание параметров из setup.py. Самым простым методом оказалось заменить setuptools.setup иdistutils.core.setup на свой способ, легко сберегающий параметры.

И образование changelog, для него пришлось:

  1. получить все коммиты, в которых присутствует setup.py;
  2. для всякого из коммитов скопировать репозиторий во временную папку и переключиться на коммит. Первоначально приложение проходило только по коммитам, где менялся setup.py, но Зачастую версия импортируется из иного файла;
  3. считать версию из setup.py;
  4. взять метаморфозы из лога коммитов между различными версиями.

На остальных этапах происходит легко копирование либо запуск команд.

Ссылки

github плана;
ppa с планом.

Источник: programmingmaster.ru

Оставить комментарий
БАЗА ЗНАНИЙ
СЛУЧАЙНАЯ СТАТЬЯ
СЛУЧАЙНЫЙ БЛОГ
СЛУЧАЙНЫЙ МОД
СЛУЧАЙНЫЙ СКИН
НОВЫЕ МОДЫ
НОВЫЕ СКИНЫ
НАКОПЛЕННЫЙ ОПЫТ
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB