在Debian/Control中定义分组的条件依赖性的任何方法



我正在debiansing python软件包,该软件包有一些奇怪的依赖性。它要么:

  • 取决于python2.7
  • 取决于python2.6python-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-minimalProvides: 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

(我承认,这也不是特别漂亮)。

最新更新