Любые способы определить сгруппированные условные зависимости в debian/control?

Я дебианизирую пакет Python, который имеет немного странные зависимости. Это либо:

  • Зависит от python2.7
  • Зависит от python2.6 и python-ordereddict (мой самодельный пакет для ordereddict на PyPI)

Например, в моем setup.py у меня есть:

deps = ["Flask >=0.8"]
if not hasattr(collections, "OrderedDict"): # Python 2.6
    deps.append("ordereddict")

setup(
    …
    install_requires=deps,
    …
)

Я не нашел ничего в документации по упаковке Debian по этому вопросу. Просто неожиданно я попытался написать

Depends: ..., python2.7 | (python2.6, python-ordereddict)

Но неудивительно, что это неправильный синтаксис, который не работает:

dpkg-gencontrol: warning: can't parse dependency (python2.6

Я использую dh_python2, а ${python:Depends} предоставляет совершенно необоснованный список, например

Depends: python2.7 | python2.6, python (>= 2.7.1-0ubuntu2),
    python (<< 2.8), python-flask, python-ordereddict

С таким списком зависимостей потребуется python-ordereddict для python2.7, которого не существует. И, очевидно, я не могу исправить python2.7-minimal, чтобы сказать Provides: python-ordereddict (как это делается с python-argparse).

Любые предложения о том, как правильно упаковать такую ​​библиотеку, пожалуйста?


person drdaeman    schedule 19.12.2012    source источник


Ответы (1)


Одним из вариантов было бы позволить python-ordereddict зависеть от python2.6, а затем позволить вашему основному пакету зависеть от python2.7 | python-ordereddict. Я предполагаю, что нет смысла устанавливать python-ordereddict с 2.7, так как OrderedDict доступен в этом выпуске.

Конечно, это некрасиво, потому что в библиотеку добавляется зависимость от основного пакета. Альтернативой является понимание того, что зависимости должны быть пропозициональными формулами в конъюнктивной нормальной форме (CNF). Применяя закон распределения логики высказываний, вы можете преобразовать

python2.7 | (python2.6, python-ordereddict)

к эквивалентной КНФ

python2.7 | python2.6, python2.7 | python-ordereddict

(что, признаю, тоже не особенно красиво).

person Fred Foo    schedule 19.12.2012