openSUSE:Build Service baselibs.conf

跳转到:导航搜索

快速入门

为了支持所谓的“双架构”发行版,需要创建特殊的库软件包。在 32 位环境中,需要为 64 位环境创建 32 位软件包,反之亦然。构建服务可以通过在软件包源中包含名为 baselibs.conf 的文件来自动创建此类软件包。但是,通常的做法是在有人明确请求之前(通常是因为他们尝试在没有使用 OBS 的情况下从 64 位环境在 32 位模式下构建一些软件)才不创建任何 baselibs.conf。

该文件的最基本形式是仅列出必要的软件包,每行一个。例如,libxml 的文件如下所示

libxml2
libxml2-devel

位于公共库目录中的库将自动包含。也可以包含其他文件,例如插件或更改,例如要求。

tcl 例如这样

tcl
    +/usr/lib(64)?/tcl/.*
    requires -tcl-<targettype>

软件包 名称(或子软件包名称)必须位于行首。后续行应以空格开头,并构成软件包的其他选项,例如

  • +regex: 将所有匹配正则表达式的文件添加到 XXbit 软件包中
  • requires 字符串:将其他依赖项添加到 XXbit 软件包中。要删除,依赖项以 - 开头(所有 RPM 支持的依赖项,例如 providesobsoletes 均受支持)
  • targetarch x86_64 block!: 不要为 x86_64 创建 32 位软件包
  • targettype x86 package foo: 仅创建 foo-x86(而不是 foo-32bit)(类似:targettype x86 requires foo, provides, ....)

支持的宏

  • <extension>
  • <name>
  • <version>
  • <targettype>
  • <prefix>(取决于目标,为空字符串或“/emul/ia32-linux”)

另一个例子

readline-devel
    requires -readline-<targettype>
    requires "libreadline5-<targettype> = <version>"

如果您只需要为单个架构使用 XXbit 软件包,请使用以下 numactl 中的示例

arch ppc package libnuma-devel
    requires -numactl-<targettype>
    requires "numactl1-<targettype> = <version>"

通常,bi-arch 处理的软件包会删除任何脚本(例如 preinst、postinst)和支持的 conffiles。如果需要任何这些,则必须通过适当的指令提供它们。

指令

arch

arch 指令指定如何处理这种架构类型的软件包。

arch 指令采用以下形式

 arch <arch> targets <target_arch>[:<target_type>] [<target_arch>[:<target_type>]...]

<arch> 是要构建的架构;例如 i586
<target_arch> 是要构建的软件包的架构;例如 armv5el。它还设置 <targetarch> 宏
<target_type> 设置 <targettype> 宏,通常用作为 baselibs 创建的软件包的后缀

所以

 arch i586 targets armv5el:x86lib armv7el:x86lib

意味着后续的软件包指令将被重新打包到 armv5el 使用 <targettype>=x86lib 和 armv7el 使用 <targettype>=x86lib

每个软件包声明都会多次处理,每次 <targettype> & <targetarch> 对都不同

targettype

在软件包声明中,targettype 指令允许过滤应用的操作

例如:

 bash
   targettype x86lib requires "libreadline6-x86lib"
   targettype cross_armv7 requires "libncurses5-armlib"

第一个指令为 x86lib 通道添加 requires,第二个为 cross_armv7 通道添加不同的 requires

targetarch

在软件包声明中,targetarch 指令允许以与 targettype 相同的方式过滤应用的操作

它用于指定通用的目标输出架构的软件包指令。

例如:

 bash
   targetarch armv5el requires "libncurses5-armlib"
   targetarch armv7el requires "libncurses5a-armlib"

prefix

Prefix 可用于向所有文件添加自定义前缀。通常 prefix 为空字符串。前缀为“/foo”会将文件从例如 /bin 移动到 /foo/bin。

legacyversion

extension

configdir

targetname

软件包关系

由 baselibs.conf 修改的软件包将其软件包关系修饰符重置为空;任何所需的关系必须在 baselibs.conf 文件中设置。

以下指令都遵循相同的基本模型

[<filter> <criteria>] <directive> <value>

<filter> 是 targettypetargetarch 中的一个


requires

rpm: requires
deb: Depends

prereq

rpm: prerequires
deb: Pre-Depends

provides

rpm: provides
deb: Provides

conflicts

rpm: conflicts
deb: Conflicts

recommends

rpm: reccomends
deb: Reccomends

suggests

rpm: n/a
deb: Suggests

supplements

rpm: supplements
deb: Enhances

obsoletes

rpm: Obsoletes
deb: Replaces

autoreqprov

当设置为“off”时,此指令将限制提供的和要求的依赖项仅限于 baselibs.conf 中指定的那些。请注意,对于 .deb 用户,“AutoReqProv:” 仅是 spec/rpm 指令。

脚本

由 baselibs.conf 修改的软件包会删除其 pre-/post- 脚本;任何所需的依赖项必须在 baselibs.conf 文件中设置。

以下指令都遵循相同的基本模型

[<filter> <criteria>] <directive> <value>

<filter> 是 targettypetargetarch 中的一个

多行脚本需要多个指令。

pre(in)

rpm: prein
deb: DEBIAN/preinst

post(in)

rpm: postin
deb: DEBIAN/postinst

preun

rpm: preun
deb: DEBIAN/prerm

postun

rpm: postun
deb: DEBIAN/postrm

其他

baselib

config