Hi,
On Seg, 2015-09-28 at 09:11 +0200, Jan Kratochvil wrote:
On Sat, 01 Aug 2015 21:48:24 +0200, Igor Gnatenko wrote:
> On Sat, Aug 1, 2015 at 10:25 PM, Jan Kratochvil
> <jan.kratochvil(a)redhat.com> wrote:
> > (1) How to make a dependency on librpm.so.7?
> >
> > librpm.so.7 is in rpm-libs-4.12.90-3.fc24.x86_64 which --provides:
> > librpm.so.7()(64bit)
> > librpmio.so.7()(64bit)
> > rpm-libs = 4.12.90-3.fc24
> > rpm-libs(x86-64) = 4.12.90-3.fc24
> > So there is no easy way to Requires: rpm-libs = NVRA
> > I do not see which V introduced / deprecates .so library version 7.
> >
> > So I would like to: Requires: librpm.so.7
> > But that does not work as I need there the '()(64bit)' suffix.
> >
> > %{?_isa} suffix does not work, that is '(x86-64)' and not
'()(64bit)'.
> >
> > I could %ifarch explicitly all 64-bit Fedora archs to append
'()(64bit)' for
> > them but isn't there some better way how to generate the
'()(64bit)' suffix?
> >
> > (2) The other possibility does work:
> >
> > BuildRequires: %{_libdir}/librpm.so.7
> >
> > But
> >
https://fedoraproject.org/wiki/Packaging:Guidelines#File_Dependencies
> > says
> > Whenever possible you should avoid file dependencies as they slow down
> > dependency resolution and require the package manager to download file
> > lists in addition to to regular dependency information.
>
> I'd propose to add something like:
> %if %{__isa_bits} = 64
> Requires: libFOO.so.X()(64bit)
> %else
> Requires: libFOO.so.X
> %endif
This works for Requires (or Recommends) but not for BuildRequires:
Sorry if it is off-topic ...
I got a similar question, I just tested and the following works in
copr :
%ifarch x86_64
BuildRequires: libstdc++-static(x86-32) glibc(x86-32) glibc-devel(x86-32) libgcc(x86-32)
BuildRequires: libstdc++-static(x86-64)
%else
BuildRequires: libstdc++-static
%endif
I have found now by
https://github.com/msimacek/koschei/issues/54
there exists
https://fedoraproject.org/wiki/Packaging:Guidelines#BuildRequires_and_.25...
(I find this as a workaround of broken rpm/yum(/dnf?), this is why
I was adding %{?_isa} to BuildRequires, but that is offtopic for this
mail thread.)
which talks only about forbidden %{?_isa} in BuildRequires but apparently it
IMO applies also to ()(64bit) suffixes in BuildRequires.
But using
BuildRequires: libFOO.so.X
without the ()(64bit) suffix does not work on 64-bit archs:
error: Failed build dependencies:
librpm.so.7 is needed by gdb-7.10-28.fc24.x86_64
So I can only remove such BuildRequires completely but then it may quietly
build a package (gdb) which has wrong librpm version dependency built in.
I will have to add a manual %build-time shell check instead.
Jan
--
Sérgio M. B.