0

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”是什么意思?

我在这里找到了源代码的相关部分(希望我找到了正确的代码):

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 Policy Manual v4.5.0.2中的以下章节后:

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

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

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

1 回答 1

1

首先是正确的术语,因此它们会导致正确的文档。首先,像Build-Depends这样的字段称为关系字段。在那里我可以找到

关系可能被限制在一组特定的架构中。这在每个单独的包名称和可选版本规范之后的括号中表示。方括号包含一个非空的Debian 架构名称列表,其格式在 架构规范字符串中描述,由空格分隔。

因此,架构规范字符串就是我们要寻找的。由此我们可以推断出这些是由dpkg-architecture定义的。从它的手册页来看,架构名称

Debian 体系结构字符串,它指定 FTP 存档中的二叉树。示例:i386、sparc、hurd-i386。

或者

架构通配符是一个特殊的架构字符串,它将匹配作为其中一部分的任何真实架构。一般形式是-。示例:linux-any、any-i386、hurd-any。

这是附加说明

仅指定any表示源包不依赖于任何特定架构,并且应该可以在任何架构上正常编译。生成的二进制包将特定于当前的构建架构。

,顺便说一句,与所有这些相反

表示源包将只构建与体系结构无关的包

于 2020-07-16T07:25:22.520 回答