Debian `control` 文件中 "python3:any (>= 3.5)" 中的 "any" 是什么意思?

What's the meaning of "any" in "python3:any (>= 3.5)" in a Debian `control` file?

mesondebian/control文件中,我看到它的Build-Depends如下(见最后一行):

Source: meson
Maintainer: Jussi Pakkanen <jpakkane@gmail.com>
Section: devel
Priority: optional
Standards-Version: 4.5.0
Homepage: https://mesonbuild.com
X-Python3-Version: >= 3.7
Rules-Requires-Root: no
Build-Depends: debhelper (>= 12),
  python3:any (>= 3.5),
  ... ...

“python3:any (>= 3.5)”中的“any”是什么意思?

我找到了 the related part of the source code here(希望我找到了正确的代码):

return if not $dep =~
       m{^\s*                           # skip leading whitespace
          ($pkgname_re)                 # package name
          (?:                           # start of optional part
            :                           # colon for architecture
            ([a-zA-Z0-9][a-zA-Z0-9-]*)  # architecture name
          )?                            # end of optional part

代码注释说“:any”部分指定了体系结构。

但是,在阅读 Debian 政策手册 v4.5.0.2 中的以下章节后

[2] 确实讨论了括号语法(例如,“hurd-dev [hurd-i386]”),它指定了应该安装包的体系结构。 我还没有找到提到这个冒号语法的文本。

所以我之前的问题可以进一步分为:

  1. “任何”部分指定的体系结构是否正确?
  2. 如果“any”指定架构,冒号语法(例如“python3:any”)和方括号语法(例如“hurd-dev [hurd-i386]”)之间有什么区别)?
  3. 如果我们已经有了括号语法,为什么还需要冒号语法?
  4. 最重要的是,有人可以指点我有关此冒号语法的相关文档吗?

首先是正确的术语,这样它们才能找到正确的文档。首先,Build-Depends等字段被称为relationship fields。在那里我可以找到

Relationships may be restricted to a certain set of architectures. This is indicated in brackets after each individual package name and the optional version specification. The brackets enclose a non-empty list of Debian architecture names in the format described in Architecture specification strings, separated by whitespace.

那么,架构规范字符串就是我们要找的。来自 this we can deduce that these are defined by dpkg-architecture. And from its manpage 架构名称

The Debian architecture string, which specifies the binary tree in the FTP archive. Examples: i386, sparc, hurd-i386.

An architecture wildcard is a special architecture string that will match any real architecture being part of it. The general form is -. Examples: linux-any, any-i386, hurd-any.

Here is additional explanation:

Specifying only any indicates that the source package isn’t dependent on any particular architecture and should compile fine on any one. The produced binary package(s) will be specific to whatever the current build architecture is.

,BTW 与 all 相反

indicates that the source package will only build architecture-independent packages