As I stated in the review already:
Quote from:
http://www.rpm.org/wiki/PackagerDocs/ArchDependencies
Architecture-specific Dependencies
On multiarch systems such as x86_64 it would be often desireable to
express that a package of compatible architecture is needed to satisfy a
dependency. In most of the cases this is already handled by the
automatically extracted soname dependencies, but this is not always the
case: sometimes it's necessary to disable the automatic dependency
generation, and then there are cases where the information cannot be
automatically generated, such as -devel package dependencies on other
-devel packages and build dependencies. Consider the following:
Name: foo
...
BuildRequires: libbar-devel >= 2.2
%package devel
Requires: libbar-devel >= 2.2
...
This works fine on single-arch systems such as i386, but it's not
sufficient on multiarch systems: when building a 32bit package on a
64bit system, a 32bit version of the libbar-devel would be needed, but
the above lets libbar-devel.x86_64 satisfy the build dependency too,
leading to obscure build failure. Similarly a 32bit libbar-devel would
incorrectly satisfy the dependency for a 64bit package.
ISA Dependencies
In rpm 4.6.0, the concept of ISA (Instruction Set Architecture) was
introduced to permit differentiating between 32- and 64-bit versions
without resorting to file dependencies on obscure and/or library-version
dependent paths. To declare a dependency on a package name architecture
specific, append %{?_isa} to the dependency name, eg
Requires: libbar-devel%{?_isa} >= 2.2
This will expand to libbar-devel(archfamily-bitness) depending on the
build target architecture, for example a native build on x86_64 would
give
Requires: libbar-devel(x86-64) >= 2.2
but with --target i386 (or i586, i686 etc) it would become
Requires: libbar-devel(x86-32) >= 2.2
*** endquote ***
Why so many requires some pacakges without this flag?
They were probably created in times of rpm <= 4.6.0 and maintainer
didn't fix/update, yet.
Can you tell me a reason why should I add this for this package?
The reason for adding the isa-macro (figlet%{?_isa} in this case) is:
it's a new package, rpm is >= 4.6.0 and it will prevent trouble for
users installing it on multi-arch when having figlet != %{_isa} already
installed.
-->figlet is an arch-depending-pkg `yum list figlet*` and an explicit
Requires for the reviewed package.
So therefor it should be `Requires: figlet{?_isa}` afaik.
Am Samstag, den 18.05.2013, 21:27 +0800 schrieb Christopher Meng:
Hi,
I don't know if RPM can handle the architecture-specific requires
smartly.
Now I have a review request:
https://bugzilla.redhat.com/show_bug.cgi?id=959029
In fact I've seen many packages without this flag and I don't know if
I still need to add it now.
Thanks.
Yours sincerely,
Christopher Meng
Always playing in Fedora Project
http://cicku.me
--
packaging mailing list
packaging(a)lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/packaging