我正在debiansing python软件包,该软件包有一些奇怪的依赖性。它要么:
- 取决于
python2.7
- 取决于
python2.6
和python-ordereddict
(我在PYPI上使用ordereddict
的自行构建包)
例如,在我的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
使用此依赖项列表,对于python2.7
,它需要python-ordereddict
,这是不存在的。显然,我无法修补python2.7-minimal
说Provides: python-ordereddict
(就像使用python-argparse
一样)。
有关如何正确包装此类库的任何建议,请?
一个选项是让python-ordereddict
取决于python2.6
,然后让您的主软件包取决于python2.7 | python-ordereddict
。我假设使用2.7安装python-ordereddict
是没有意义的,因为该版本中有OrderedDict
。
当然,这很难看,因为它将主包装的依赖性推向了库。另一种选择是意识到依赖性必须是结合正常形式(CNF)的命题公式。通过应用命题逻辑的分布定律,您可以转换
python2.7 | (python2.6, python-ordereddict)
到等效的CNF
python2.7 | python2.6, python2.7 | python-ordereddict
(我承认,这也不是特别漂亮)。