On 08/06/16 08:38 +0000, Petr Pisar wrote:
On 2016-06-08, Jonathan Wakely <jwakely(a)fedoraproject.org>
wrote:
> On 08/06/16 07:37 +0000, Petr Pisar wrote:
>>Guidelines require devel packages to be architecture specific (no
>>BuildArch: noarch). Guidelines require having dependencies between
>>architecture specific packages restricted to the architecture
>>(Requires: foo-devel%{?_isa}). C guildelines require depending on "gcc"
>>for standard C library header files.
>>
>>Files in devel packages usually include standard C library header
>>files, thus one needs to "Require: gcc%{?_isa}" from the devel
packages.
>
> Why?
>
Because "#include <stdlib.h>" fails without stdlib.h on the system,
you need to depend on something that provides the stdlib.h. And
guidelines says the provider is "gcc".
So you should require gcc, not gcc%{?_isa}
>>But it's not possible to install gcc.x86_64 and gcc.i686
at the same
>>time (they conflicts on /usr/libexec/getconf/default).
>>
>>So the final question: When gcc package will be multilib-safe? Without
>>multlib-safe gcc package, all the aim in all the other packages is
>>useless because all the dependencies lead to gcc.
>
> Which dependencies?
>
"Requires: gcc%{?_isa}" in *-devel packages.
Don't do that then.
> The 'gcc' package doesn't install any multilib
headers, so why do you
> need gcc%{?_isa} ?
>
<
https://fedoraproject.org/wiki/Packaging:C_and_C%2B%2B#BuildRequires_and_...;.
That doesn't answer my question :-)
That page doesn't say to require gcc.%{_isa}.
> I can see how you might need libstdc++-devel%{?_isa} or other
> components of GCC, but those *are* multilibbed, so you can have both
> libstdc++-devel.i686 and libstdc++-devel.x86_64 installed at the same
> time.
>
Last I was those are implementation details and I should depend on GCC
instead. You should know because you were involved in the discussion
that leads to the C packaging guidelines.
The guidelines say:
"You need not include a BuildRequires or Requires on glibc-headers, or
any other core C or C++ implementation package unless you have a
specific and special need"
A 64-bit package which requires 32-bit compilation seems like a fairly
specific need, so it seems reasonable to require glibc-headers.i686
directly in that case (or more accurately, glibc-headers%{arch32}
where that macro is set appropriately).
What other problems are you trying to solve?
In any case, the solution is not to make gcc multilib-installable (as
has been explained repeatedly, that isn't useful, the 'gcc' binaries
installed by gcc.x86_64 already support 32-bit compilation perfectly
well).