Bug#774719: missing Build-Depends: gcc-4.9-base

2015-01-07 Thread Wookey
+++ Helmut Grohne [2015-01-06 20:19 +0100]:
 Package: src:cross-gcc-defaults
 Version: 0.4
 User: helm...@debian.org
 Usertags: rebootstrap
 
 While gcc-4.9-base is essential in unstable and jessie, it is
 unavailable in wheezy. Therefore it would be good to mark
 cross-gcc-defaults as not being buildable there by Build-Depending on
 gcc-4.9-base.

Hmm. I'm not sure about this.

This package could be built for wheezy if you wanted to (although
it's not available there) and it's probably even useful with the
emdebian toolchains, so I don't see why we should do anything to
explicitily disable this.

But I see that the actual point here (which you didn't make clear
above) is that currently it fails if gcc-4.9-base is not installed
because it uses it to derive the current version number of gcc.

gcc-4.9-base is not actually essential, it's build-essential, which I
presume is what you meant. I'm not convinced that we should add a
build-dep on a build-essential thing, just to make sure that it will
fail marginally faster on a suite for which it is not available. The
best reason for listing such build-deps is to help bootstrapping, and
this one is MA:same, so maybe that makes sense?

Considering in a bit more detail how this should really work:

Currently cross-gcc-defaults sets package-triplet version to build
time gccbase ver and sets its Depends: package-ver-triplet (= build
time gccbase ver)

Thats only useful if a new cross-gcc-defaults is uploaded (or a binnmu
requested) everytime a new cross-gcc-ver-arch is uploaded (and
this does mean that the version number match up for users so they
don't get confused what version of the compiler is installed).

But gcc-native is not doing this:
apt-cache show g++
 4:4.9.2-1   
apt-cache show g++-4.9
 4.9.2-10

And neither are we currently. It would probably be easy to arrange to
binnmu this for every new cross-toolchain upload and make sure they
_do_ match up.

If the versioned-cross-compiler and cross-compiler package version
numbers don't match up then maybe the unversionned (gcc-triplet)
packages should just use the source version, and stop pretending to
match. If we did that then the build-dep on gcc-x.y-base would go away.

Similarly the Depends: = 'build time gcc base ver' isn't useful so
far as I can see. It should either be a fixed value that changes when
there is some actual change in the package sets provided -
e.g. front-ends added/removed, or architectures added/removed. (I
think this is what the native gcc-defaults package is doing.) But of
course that does require someone to remember to update it.

Or there shouldn't be a versionned dep at all. After all this is just
a link. Any available, installable, cross-toolchain package will
satisfy and work, so I'm not convinced that we need anything more
explicit. Can anyone come up with reasons why that won't work?

This packaging also doesn't cope with architecture version skew. The
current multiarch builds make that essentially impossible anyway so
that's fine. But if we started depending on -cross libc packages than
there could be skew that the default package should (?) take into account.

The longer-term plan is (was?) for this package to merge into the main
gcc-defaults so maybe it's not worth worrying about much.

So, for now I propose not to add the build-dep, and not to change the
version-number logic, and try the binNMU-on-upload idea. If that's not a
faff then I think it'll be nicest for users.

I will (at some point) either remove the versioned depends, or make
that version a genuine 'minimum version this works with', and only
changed when there is an actual change.

Comments welcome. 

Wookey
-- 
Principal hats:  Linaro, Debian, Wookware, ARM
http://wookware.org/


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#774719: missing Build-Depends: gcc-4.9-base

2015-01-07 Thread Helmut Grohne
clone 774719 -1
reassign -1 src:gcc-cross-support
retitle -1 dependencies on cross-gcc-defaults must be versioned
thanks

On Wed, Jan 07, 2015 at 06:30:41PM +, Wookey wrote:
 But I see that the actual point here (which you didn't make clear
 above) is that currently it fails if gcc-4.9-base is not installed
 because it uses it to derive the current version number of gcc.

I'll try to be more explicit next time. Thanks for seeking
clarification.

 gcc-4.9-base is not actually essential, it's build-essential, which I
 presume is what you meant.

gcc-4.9-base is actually pseudo-essential in sid as essential packages
(transitively) depend on it.

 I'm not convinced that we should add a
 build-dep on a build-essential thing, just to make sure that it will
 fail marginally faster on a suite for which it is not available. The
 best reason for listing such build-deps is to help bootstrapping, and
 this one is MA:same, so maybe that makes sense?

You do mean MA:foreign, no?

 Thats only useful if a new cross-gcc-defaults is uploaded (or a binnmu
 requested) everytime a new cross-gcc-ver-arch is uploaded (and
 this does mean that the version number match up for users so they
 don't get confused what version of the compiler is installed).
 
 But gcc-native is not doing this:
 apt-cache show g++
  4:4.9.2-1   
 apt-cache show g++-4.9
  4.9.2-10
 
 And neither are we currently. It would probably be easy to arrange to
 binnmu this for every new cross-toolchain upload and make sure they
 _do_ match up.

Arguably, it may be useful if these version bumps are done occasionally
and on request (i.e. if a major gcc bug is fixed). Having this bumping
semi-automatically may help or may not depending on the color of your
bike shed.

 If the versioned-cross-compiler and cross-compiler package version
 numbers don't match up then maybe the unversionned (gcc-triplet)
 packages should just use the source version, and stop pretending to
 match. If we did that then the build-dep on gcc-x.y-base would go away.

Please don't. We have quite a number of packages that currently
Build-Depends: gcc (= ...) (and surprisingly many forget the epoch
;-). Assuming that we will use the gcc-cross-support approach for
translating build-depends, this will become Build-Depends: gcc-for-host
(= ...).  Thus gcc-for-host must use the same versioning as gcc. It
can only do so if it can pass on version constraints to
cross-gcc-defaults.

Note: gcc-cross-support currently gets this wrong. It doesn't have a
versioned dep, but needs to do so. Bug added above.

 Similarly the Depends: = 'build time gcc base ver' isn't useful so
 far as I can see. It should either be a fixed value that changes when
 there is some actual change in the package sets provided -
 e.g. front-ends added/removed, or architectures added/removed. (I
 think this is what the native gcc-defaults package is doing.) But of
 course that does require someone to remember to update it.

We should certainly do something that is close to what the native
gcc-defaults does as this works in the native case. Possibly the easiest
way to do so is picking the value from gcc rather than gcc-X.Y-base.

 Or there shouldn't be a versionned dep at all. After all this is just
 a link. Any available, installable, cross-toolchain package will
 satisfy and work, so I'm not convinced that we need anything more
 explicit. Can anyone come up with reasons why that won't work?

If it isn't versioned, it'll break lots of Build-Depends (after
cross translation).

 The longer-term plan is (was?) for this package to merge into the main
 gcc-defaults so maybe it's not worth worrying about much.

Seems reasonable. Also for cross-gcc-support.

 So, for now I propose not to add the build-dep, and not to change the
 version-number logic, and try the binNMU-on-upload idea. If that's not a
 faff then I think it'll be nicest for users.

What do you think about using the version of the gcc binary package
instead? It should update less often and is good enough for the native
case.

Helmut


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#774719: missing Build-Depends: gcc-4.9-base

2015-01-06 Thread Helmut Grohne
Package: src:cross-gcc-defaults
Version: 0.4
User: helm...@debian.org
Usertags: rebootstrap

While gcc-4.9-base is essential in unstable and jessie, it is
unavailable in wheezy. Therefore it would be good to mark
cross-gcc-defaults as not being buildable there by Build-Depending on
gcc-4.9-base.

Helmut


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org