| RPM HOWTO | ||
|---|---|---|
| 上一页 | ||
以下是 “fileutils” 软件包的 spec 文件的一部分。它被设置为在 Alpha 和 Intel 上构建。
Summary: GNU File Utilities
Name: fileutils
Version: 3.16
Release: 1
Copyright: GPL
Group: Utilities/File
Source0: prep.ai.mit.edu:/pub/gnu/fileutils-3.16.tar.gz
Source1: DIR_COLORS
Patch: fileutils-3.16-mktime.patch
%description
These are the GNU file management utilities. It includes programs
to copy, move, list, etc, files.
The ls program in this package now incorporates color ls!
%prep
%setup
%ifarch alpha
%patch -p1
autoconf
%endif
%build
configure --prefix=/usr --exec-prefix=/
make CFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s
%install
rm -f /usr/info/fileutils*
make install
gzip -9nf /usr/info/fileutils*
.
.
.
|
%ifarch 宏对于所有这些都非常重要。大多数时候,您需要创建一个或两个特定于一个架构的补丁。在这种情况下,RPM 将允许您仅将该补丁应用于一个架构。
在上面的示例中,fileutils 有一个用于 64 位机器的补丁。显然,目前这应该只应用于 Alpha。因此,我们在 64 位补丁周围添加一个 %ifarch 宏,如下所示
%ifarch axp
%patch1 -p1
%endif
|
为了您可以在一个目录中维护所有平台的源 RPM,我们实现了“排除”在某些架构上构建软件包的功能。这使您仍然可以执行以下操作,例如
rpm --rebuild /usr/src/SRPMS/*.rpm
|
并构建正确的软件包。如果您尚未将应用程序移植到某个平台,您只需添加一行类似
ExcludeArch: alpha
|
到源软件包的 spec 文件的头部。然后在它构建的平台上重建软件包。然后,您将拥有一个在 Intel 上构建的源软件包,并且可以在 Alpha 上轻松跳过。