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
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
-- packaging mailing list packaging@lists.fedoraproject.org https://admin.fedoraproject.org/mailman/listinfo/packaging
On 05/18/2013 08:27 AM, Christopher Meng wrote:
Hi,
I don't know if RPM can handle the architecture-specific requires smartly.
Now I have a review request:
I'd argue against using %{_isa} in this case, posted my reasoning in the review bug.
-- rex
packaging@lists.fedoraproject.org