Conflicting gcc versions?

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Conflicting gcc versions?

Marco Varlese
Hi,

I have two packages (one linked to the other) to build on different
architectures and platforms.
In order to build the code for a specific platform I need a specific version of
gcc (v.6.0) but when the build kicks off for OpenSuse 42.2 I get the following
error despite the fact that gcc6 is available on that distro.

unresolvable: conflict for provider of libgcc_s1 >= 6.1.1+r238085-1.12 needed by
gcc6 (provider libgcc_s1-gcc6 is conflicted by installed libgcc_s1)

I'd like to keep the two .spec files as aligned as possible (hence keeping the
dependency in both of them) to avoid bugs introduced in one version of the file
vs the other.

The build is successful for the Factory repos.

Is there a way to fix this problem (i.e. force OBS to use/install a specific
version of gcc) ? On an installed distro (42.2), this works fine by installing
one version of gcc rather than the other...


Thanks,
Marco
--
To unsubscribe, e-mail: [hidden email]
To contact the owner, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Conflicting gcc versions?

Adrian Schröter
On Donnerstag, 5. Januar 2017, 11:15:17 CET wrote Marco Varlese:

> Hi,
>
> I have two packages (one linked to the other) to build on different
> architectures and platforms.
> In order to build the code for a specific platform I need a specific version of
> gcc (v.6.0) but when the build kicks off for OpenSuse 42.2 I get the following
> error despite the fact that gcc6 is available on that distro.
>
> unresolvable: conflict for provider of libgcc_s1 >= 6.1.1+r238085-1.12 needed by
> gcc6 (provider libgcc_s1-gcc6 is conflicted by installed libgcc_s1)
>
> I'd like to keep the two .spec files as aligned as possible (hence keeping the
> dependency in both of them) to avoid bugs introduced in one version of the file
> vs the other.
>
> The build is successful for the Factory repos.
>
> Is there a way to fix this problem (i.e. force OBS to use/install a specific
> version of gcc) ? On an installed distro (42.2), this works fine by installing
> one version of gcc rather than the other...

Yes, but there is only a way via the prjconf:

Preinstall: !libgcc_s1
Preinstall: libgcc_s1-gcc6

IMHO we should modify our official project configuration of openSUSE to use
the newer libgcc_s1 always. We can maybe do this in :Update project at least?

Ludwig?

--

Adrian Schroeter
email: [hidden email]

SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg)
 
Maxfeldstraße 5                        
90409 Nürnberg
Germany


--
To unsubscribe, e-mail: [hidden email]
To contact the owner, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Conflicting gcc versions?

Richard Biener
On Thu, 5 Jan 2017, Adrian Schröter wrote:

> On Donnerstag, 5. Januar 2017, 11:15:17 CET wrote Marco Varlese:
> > Hi,
> >
> > I have two packages (one linked to the other) to build on different
> > architectures and platforms.
> > In order to build the code for a specific platform I need a specific version of
> > gcc (v.6.0) but when the build kicks off for OpenSuse 42.2 I get the following
> > error despite the fact that gcc6 is available on that distro.
> >
> > unresolvable: conflict for provider of libgcc_s1 >= 6.1.1+r238085-1.12 needed by
> > gcc6 (provider libgcc_s1-gcc6 is conflicted by installed libgcc_s1)
> >
> > I'd like to keep the two .spec files as aligned as possible (hence keeping the
> > dependency in both of them) to avoid bugs introduced in one version of the file
> > vs the other.
> >
> > The build is successful for the Factory repos.
> >
> > Is there a way to fix this problem (i.e. force OBS to use/install a specific
> > version of gcc) ? On an installed distro (42.2), this works fine by installing
> > one version of gcc rather than the other...
>
> Yes, but there is only a way via the prjconf:
>
> Preinstall: !libgcc_s1
> Preinstall: libgcc_s1-gcc6
>
> IMHO we should modify our official project configuration of openSUSE to use
> the newer libgcc_s1 always. We can maybe do this in :Update project at least?
Yeah, not sure why 42.2 doesn't mirror what SLE12 does here.  I think I
remember that GCC 6 was taken into 42.2 "early" (before we actually
released the Toolchain module update), so it has probably been
forgotten?

Richard.

> Ludwig?
>
>

--
Richard Biener <[hidden email]>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)
Reply | Threaded
Open this post in threaded view
|

Re: Conflicting gcc versions?

Marco Varlese
In reply to this post by Adrian Schröter
On Thu, 2017-01-05 at 11:27 +0100, Adrian Schröter wrote:

> On Donnerstag, 5. Januar 2017, 11:15:17 CET wrote Marco Varlese:
> > Hi,
> >
> > I have two packages (one linked to the other) to build on different
> > architectures and platforms.
> > In order to build the code for a specific platform I need a specific version
> > of
> > gcc (v.6.0) but when the build kicks off for OpenSuse 42.2 I get the
> > following
> > error despite the fact that gcc6 is available on that distro.
> >
> > unresolvable: conflict for provider of libgcc_s1 >= 6.1.1+r238085-1.12
> > needed by
> > gcc6 (provider libgcc_s1-gcc6 is conflicted by installed libgcc_s1)
> >
> > I'd like to keep the two .spec files as aligned as possible (hence keeping
> > the
> > dependency in both of them) to avoid bugs introduced in one version of the
> > file
> > vs the other.
> >
> > The build is successful for the Factory repos.
> >
> > Is there a way to fix this problem (i.e. force OBS to use/install a specific
> > version of gcc) ? On an installed distro (42.2), this works fine by
> > installing
> > one version of gcc rather than the other...
>
> Yes, but there is only a way via the prjconf:
>
> Preinstall: !libgcc_s1
> Preinstall: libgcc_s1-gcc6
Thanks for the hint; however, this I think is a project wide setting so all
packages under my project will be affected, even other packages which shouldn't
be. Do I get this right?
A possible solution then would be to create a project containing only the
packages which I need to and separate others...?
>
> IMHO we should modify our official project configuration of openSUSE to use
>
> the newer libgcc_s1 always. We can maybe do this in :Update project at least?
I was wondering the same; if we have gcc6 available for 42.2 why OBS is still
(by default) building with the older compiler? Couldn't we have the most recent
one (available for a given distro) being the default compiler for OBS?
>
> Ludwig?
>
--
To unsubscribe, e-mail: [hidden email]
To contact the owner, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Conflicting gcc versions?

Adrian Schröter
On Donnerstag, 5. Januar 2017, 13:22:44 CET wrote Marco Varlese:

> On Thu, 2017-01-05 at 11:27 +0100, Adrian Schröter wrote:
> > On Donnerstag, 5. Januar 2017, 11:15:17 CET wrote Marco Varlese:
> > > Hi,
> > >
> > > I have two packages (one linked to the other) to build on different
> > > architectures and platforms.
> > > In order to build the code for a specific platform I need a specific version
> > > of
> > > gcc (v.6.0) but when the build kicks off for OpenSuse 42.2 I get the
> > > following
> > > error despite the fact that gcc6 is available on that distro.
> > >
> > > unresolvable: conflict for provider of libgcc_s1 >= 6.1.1+r238085-1.12
> > > needed by
> > > gcc6 (provider libgcc_s1-gcc6 is conflicted by installed libgcc_s1)
> > >
> > > I'd like to keep the two .spec files as aligned as possible (hence keeping
> > > the
> > > dependency in both of them) to avoid bugs introduced in one version of the
> > > file
> > > vs the other.
> > >
> > > The build is successful for the Factory repos.
> > >
> > > Is there a way to fix this problem (i.e. force OBS to use/install a specific
> > > version of gcc) ? On an installed distro (42.2), this works fine by
> > > installing
> > > one version of gcc rather than the other...
> >
> > Yes, but there is only a way via the prjconf:
> >
> > Preinstall: !libgcc_s1
> > Preinstall: libgcc_s1-gcc6
> Thanks for the hint; however, this I think is a project wide setting so all
> packages under my project will be affected, even other packages which shouldn't
> be. Do I get this right?

yes, right, but the newer libgcc_s1 should be fully backward compatible. So IMHO
the risk is really low.

> A possible solution then would be to create a project containing only the
> packages which I need to and separate others...?
> >
> > IMHO we should modify our official project configuration of openSUSE to use
> >
> > the newer libgcc_s1 always. We can maybe do this in :Update project at least?
> I was wondering the same; if we have gcc6 available for 42.2 why OBS is still
> (by default) building with the older compiler?

because it is still the default compile used in SLE and therefore all sources
are only QA'd with the older one.

> Couldn't we have the most recent
> one (available for a given distro) being the default compiler for OBS?

No, but IMHO the switch to the newer libgcc_s1 should be okay.
That way a package just needs to

BuildRequires: gcc >= 6.0

or alike to switch.

> > Ludwig?
> >
>


--

Adrian Schroeter
email: [hidden email]

SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg)
 
Maxfeldstraße 5                        
90409 Nürnberg
Germany


--
To unsubscribe, e-mail: [hidden email]
To contact the owner, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Conflicting gcc versions?

Ludwig Nussel
In reply to this post by Richard Biener
Richard Biener wrote:
> [...]
> Yeah, not sure why 42.2 doesn't mirror what SLE12 does here.  I think I
> remember that GCC 6 was taken into 42.2 "early" (before we actually
> released the Toolchain module update), so it has probably been
> forgotten?

Well, those in charge of the project config were not notified of any
required changes. gcc6 came to 42.2 via automatic bot submission
from Factory in August. You approved the submission yourself. SLE
released gcc6 as maintenance update for GA in September.

AFAICS a mix of gcc 4.8, gcc 5 and gcc 6 libraries is used in SLE.
So we end up with three compilers in Ring0 now?

cu
Ludwig

--
  (o_   Ludwig Nussel
  //\
  V_/_  http://www.suse.com/
SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard,
Graham Norton, HRB 21284 (AG Nürnberg)
--
To unsubscribe, e-mail: [hidden email]
To contact the owner, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Conflicting gcc versions?

Ludwig Nussel
In reply to this post by Marco Varlese
Marco Varlese wrote:

> On Thu, 2017-01-05 at 11:27 +0100, Adrian Schröter wrote:
>> On Donnerstag, 5. Januar 2017, 11:15:17 CET wrote Marco Varlese:
>>> [...]
>>> Is there a way to fix this problem (i.e. force OBS to use/install a specific
>>> version of gcc) ? On an installed distro (42.2), this works fine by
>>> installing
>>> one version of gcc rather than the other...
>>
>> Yes, but there is only a way via the prjconf:
>>
>> Preinstall: !libgcc_s1
>> Preinstall: libgcc_s1-gcc6
> Thanks for the hint; however, this I think is a project wide setting so all
> packages under my project will be affected, even other packages which shouldn't
> be. Do I get this right?
> A possible solution then would be to create a project containing only the
> packages which I need to and separate others...?

You could make it conditional with something like %if 0%{?leap_version} == 420200

cu
Ludwig

--
  (o_   Ludwig Nussel
  //\
  V_/_  http://www.suse.com/
SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard,
Graham Norton, HRB 21284 (AG Nürnberg)
--
To unsubscribe, e-mail: [hidden email]
To contact the owner, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Conflicting gcc versions?

Richard Biener
In reply to this post by Ludwig Nussel
On Thu, 5 Jan 2017, Ludwig Nussel wrote:

> Richard Biener wrote:
> > [...]
> > Yeah, not sure why 42.2 doesn't mirror what SLE12 does here.  I think I
> > remember that GCC 6 was taken into 42.2 "early" (before we actually
> > released the Toolchain module update), so it has probably been
> > forgotten?
>
> Well, those in charge of the project config were not notified of any
> required changes. gcc6 came to 42.2 via automatic bot submission
> from Factory in August. You approved the submission yourself.

Yes, but we've had a discussion on the hallway about this and I didn't
care either way.

> SLE released gcc6 as maintenance update for GA in September.

So why was it then not "pushed"/"auto-submitted" to 42.2 from that then?
But yes, unfortunately required project config changes are not tied
to packages.

> AFAICS a mix of gcc 4.8, gcc 5 and gcc 6 libraries is used in SLE.
> So we end up with three compilers in Ring0 now?

Quite possibly yes, though only gcc48 should take part in the
"bootstrapping", gcc5 and gcc6 should just build once.

Richard.

--
Richard Biener <[hidden email]>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)
--
To unsubscribe, e-mail: [hidden email]
To contact the owner, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Conflicting gcc versions?

Ludwig Nussel
Richard Biener wrote:
> On Thu, 5 Jan 2017, Ludwig Nussel wrote:
>> Richard Biener wrote:
>>> [...]
>> SLE released gcc6 as maintenance update for GA in September.
>
> So why was it then not "pushed"/"auto-submitted" to 42.2 from that then?

The package was marked as coming from Factory plus the one that
appeared as SLE Update had a different srcmd5. So a script can't see
the relation. This needs a nudge from a human.

> But yes, unfortunately required project config changes are not tied
> to packages.
>
>> AFAICS a mix of gcc 4.8, gcc 5 and gcc 6 libraries is used in SLE.
>> So we end up with three compilers in Ring0 now?
>
> Quite possibly yes, though only gcc48 should take part in the
> "bootstrapping", gcc5 and gcc6 should just build once.

What I see in Ring0 with gcc5 doesn't confirm that :-)

cu
Ludwig

--
  (o_   Ludwig Nussel
  //\
  V_/_  http://www.suse.com/
SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard,
Graham Norton, HRB 21284 (AG Nürnberg)
--
To unsubscribe, e-mail: [hidden email]
To contact the owner, e-mail: [hidden email]