Re: Do we need to add %{_isa} flag?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxxxxxxxxxx
> https://admin.fedoraproject.org/mailman/listinfo/packaging


--
packaging mailing list
packaging@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/packaging





[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite Forum]     [KDE Users]

  Powered by Linux