Bug#871630: gcc-defaults should ensure equal versions in both directions
On Mon, Aug 21, 2017 at 04:02:03PM +0200, Matthias Klose wrote:
> On 10.08.2017 08:15, Adrian Bunk wrote:
> > Source: gcc-defaults
> > Severity: important
> > Tags: patch
> >
> > https://buildd.debian.org/status/fetch.php?pkg=lorene&arch=ppc64el&ver=0.0.0~cvs20161116%2Bdfsg-1%2Bb1&stamp=1502276276&raw=0
> > https://buildd.debian.org/status/fetch.php?pkg=dynare&arch=ppc64el&ver=4.5.1-1%2Bb1&stamp=1502287921&raw=0
> > https://buildd.debian.org/status/fetch.php?pkg=gyoto&arch=ppc64el&ver=1.2.0-2%2Bb2&stamp=1502307571&raw=0
> >
> > The root cause of these build failures is:
> > - buildd chroot contained the old (gcc 6) packages of cpp, gcc and g++
> > - installing the build dependency gfortran upgraded cpp and gcc but not g++,
> > resulting in errors due to:
> > - cpp (7) not finding cc1plus, and
> > - g++ (6) as linker not finding -lfortran - and if gfortran-6 would
> > have been installed, it would have linked with the wrong library
> >
> > In this case regenerating chroots was not working once resulting in
> > old chroots still being used, but that's a general problem for new
> > major releases of gcc since the buildd chroots are only regenerated
> > twice a week and not dist-upgraded prior to a build.
> >
> > The attached patch addresses this problem by changing the dependencies
> > between the packages from >= to =
>
> I don't like that patch too much. We now have gij/gcj building from gcc-6, and
> we may have gccgo or gdc building from gcc-8, mismatching the defaults. So
> probably it's ok to tighten the dependencies for packages up to g++, maybe
> gfortran, but not more. I think that would address most use cases.
The problems during the gcc 6 -> 7 change were due to gnat and gfortran.
gnat doesn't seem to be easily fixable right now
(and wasn't fixed in my earlier patch).
The attached updated patch does the change up to g++ and gfortran,
which should fix the problems for gfortran.
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
--- debian/control.native.in.old 2017-08-09 21:50:57.000000000 +0000
+++ debian/control.native.in 2017-08-09 22:22:09.000000000 +0000
@@ -19,7 +19,7 @@
Package: gcc
Priority: optional
Architecture: any
-Depends: cpp (>= ${version:cpp}), gcc-${pv:gcc} ${reqv:gcc}, ${misc:Depends}
+Depends: cpp (= ${version:cpp}), gcc-${pv:gcc} ${reqv:gcc}, ${misc:Depends}
Recommends: libc6-dev | libc-dev
Suggests: gcc-multilib, make, manpages-dev, autoconf, automake, libtool, flex, bison, gdb, gcc-doc
Provides: c-compiler
@@ -32,7 +32,7 @@
Package: gcc-multilib
Priority: optional
Architecture: @multilib_archs@
-Depends: cpp (>= ${version:cpp}), gcc (>= ${version:gcc}), gcc-${pv:gcc}-multilib ${reqv:gcc}, ${misc:Depends}, linux-libc-dev (>= 3.0.0-2) [linux-any]
+Depends: cpp (= ${version:cpp}), gcc (= ${version:gcc}), gcc-${pv:gcc}-multilib ${reqv:gcc}, ${misc:Depends}, linux-libc-dev (>= 3.0.0-2) [linux-any]
Conflicts: gcc-4.9-alpha-linux-gnu,
gcc-4.9-aarch64-linux-gnu,
gcc-4.9-arm-linux-gnueabi,
@@ -132,7 +132,7 @@
Package: g++
Priority: optional
Architecture: any
-Depends: cpp (>= ${version:cpp}), gcc (>= ${version:cpp}), g++-${pv:gpp} ${reqv:gpp}, gcc-${pv:gpp} ${reqv:gpp}, ${misc:Depends}
+Depends: cpp (= ${version:cpp}), gcc (= ${version:cpp}), g++-${pv:gpp} ${reqv:gpp}, gcc-${pv:gpp} ${reqv:gpp}, ${misc:Depends}
Suggests: ${pkgmulti:gpp}
Provides: c++-compiler
Description: GNU C++ compiler
@@ -143,7 +143,7 @@
Package: g++-multilib
Priority: optional
Architecture: @multilib_archs@
-Depends: cpp (>= ${version:cpp}), gcc-multilib (>= ${version:cpp}), g++ (>= ${version:cpp}), g++-${pv:gpp}-multilib ${reqv:gpp}, ${misc:Depends}
+Depends: cpp (= ${version:cpp}), gcc-multilib (= ${version:cpp}), g++ (= ${version:cpp}), g++-${pv:gpp}-multilib ${reqv:gpp}, ${misc:Depends}
Description: GNU C++ compiler (multilib files)
This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
.
@@ -202,7 +202,7 @@
Package: gfortran
Priority: optional
Architecture: any
-Depends: cpp (>= ${version:cpp}), gcc (>= ${version:gcc}), gfortran-${pv:gfort} ${reqv:gfort}, ${misc:Depends}
+Depends: cpp (= ${version:cpp}), gcc (= ${version:gcc}), gfortran-${pv:gfort} ${reqv:gfort}, ${misc:Depends}
Suggests: ${pkgmulti:gfort}, gfortran-doc
Provides: fortran-compiler, ${fortran:mod-version}
Description: GNU Fortran 95 compiler
@@ -215,7 +215,7 @@
Package: gfortran-multilib
Priority: optional
Architecture: @multilib_archs@
-Depends: cpp (>= ${version:cpp}), gcc-multilib (>= ${version:cpp}), gfortran (>= ${version:gcc}), gfortran-${pv:gfort}-multilib ${reqv:gfort}, ${misc:Depends}
+Depends: cpp (= ${version:cpp}), gcc-multilib (= ${version:cpp}), gfortran (= ${version:gcc}), gfortran-${pv:gfort}-multilib ${reqv:gfort}, ${misc:Depends}
Description: GNU Fortran 95 compiler (multilib files)
This is the GNU Fortran compiler, which compiles Fortran 95 on platforms
supported by the gcc compiler.
--- debian/control.cross.in.old 2017-08-09 22:23:33.000000000 +0000
+++ debian/control.cross.in 2017-08-09 22:23:41.000000000 +0000
@@ -20,7 +20,7 @@
Priority: optional
Architecture: @host_archs@
Multi-Arch: foreign
-Depends: cpp-CROSS_GNU_TYPE (>= ${version:cpp}),
+Depends: cpp-CROSS_GNU_TYPE (= ${version:cpp}),
gcc-${pv:gcc}-CROSS_GNU_TYPE ${reqv:gcc},
${misc:Depends}
Recommends: libc6-dev-CROSS_ARCH-cross | libc-dev-CROSS_ARCH-cross
@@ -35,8 +35,8 @@
Priority: optional
Architecture: @host_archs@
Multi-Arch: foreign
-Depends: cpp-CROSS_GNU_TYPE (>= ${version:cpp}),
- gcc-CROSS_GNU_TYPE (>= ${version:cpp}),
+Depends: cpp-CROSS_GNU_TYPE (= ${version:cpp}),
+ gcc-CROSS_GNU_TYPE (= ${version:cpp}),
g++-${pv:gpp}-CROSS_GNU_TYPE ${reqv:gpp},
${misc:Depends}
Description: GNU C++ compiler for the CROSS_ARCH architecture
@@ -82,8 +82,8 @@
Priority: optional
Architecture: @host_archs@
Multi-Arch: foreign
-Depends: cpp-CROSS_GNU_TYPE (>= ${version:cpp}),
- gcc-CROSS_GNU_TYPE (>= ${version:gcc}),
+Depends: cpp-CROSS_GNU_TYPE (= ${version:cpp}),
+ gcc-CROSS_GNU_TYPE (= ${version:gcc}),
gfortran-${pv:gfort}-CROSS_GNU_TYPE ${reqv:gfort},
${misc:Depends}
Suggests: gfortran-doc
--- debian/control.cross-ml.in.old 2017-08-09 22:47:27.000000000 +0000
+++ debian/control.cross-ml.in 2017-08-09 22:47:33.000000000 +0000
@@ -2,8 +2,8 @@
Package: gcc-multilib-CROSS_GNU_TYPE
Priority: optional
Architecture: @host_archs@
-Depends: cpp-CROSS_GNU_TYPE (>= ${version:cpp}),
- gcc-CROSS_GNU_TYPE (>= ${version:gcc}),
+Depends: cpp-CROSS_GNU_TYPE (= ${version:cpp}),
+ gcc-CROSS_GNU_TYPE (= ${version:gcc}),
gcc-${pv:gcc}-multilib-CROSS_GNU_TYPE ${reqv:gcc},
${misc:Depends}
Recommends: libc6-dev-CROSS_ARCH-cross | libc-dev-CROSS_ARCH-cross
@@ -17,9 +17,9 @@
Package: g++-multilib-CROSS_GNU_TYPE
Priority: optional
Architecture: @host_archs@
-Depends: cpp-CROSS_GNU_TYPE (>= ${version:cpp}),
- g++-CROSS_GNU_TYPE (>= ${version:gpp}),
- gcc-multilib-CROSS_GNU_TYPE (>= ${version:gcc}),
+Depends: cpp-CROSS_GNU_TYPE (= ${version:cpp}),
+ g++-CROSS_GNU_TYPE (= ${version:gpp}),
+ gcc-multilib-CROSS_GNU_TYPE (= ${version:gcc}),
g++-${pv:gpp}-multilib-CROSS_GNU_TYPE ${reqv:gpp},
${misc:Depends}
Description: GNU C++ compiler for the CROSS_ARCH architecture
@@ -65,9 +65,9 @@
Package: gfortran-multilib-CROSS_GNU_TYPE
Priority: optional
Architecture: @host_archs@
-Depends: cpp-CROSS_GNU_TYPE (>= ${version:cpp}),
- gcc-multilib-CROSS_GNU_TYPE (>= ${version:gcc}),
- gfortran-CROSS_GNU_TYPE (>= ${version:gfort}),
+Depends: cpp-CROSS_GNU_TYPE (= ${version:cpp}),
+ gcc-multilib-CROSS_GNU_TYPE (= ${version:gcc}),
+ gfortran-CROSS_GNU_TYPE (= ${version:gfort}),
gfortran-${pv:gfort}-multilib-CROSS_GNU_TYPE ${reqv:gfort},
${misc:Depends}
Suggests: gfortran-doc
--- debian/control.hppa64.in.old 2017-08-09 22:49:57.000000000 +0000
+++ debian/control.hppa64.in 2017-08-09 22:50:05.000000000 +0000
@@ -2,7 +2,7 @@
Package: gcc-hppa64-linux-gnu
Priority: optional
Architecture: @hppa64_archs@
-Depends: gcc (>= ${version:gcc}), gcc-${pv:gcc}-hppa64-linux-gnu ${reqv:gcc},
+Depends: gcc (= ${version:gcc}), gcc-${pv:gcc}-hppa64-linux-gnu ${reqv:gcc},
${misc:Depends}
Conflicts: gcc-5-hppa64-linux-gnu (<< 5.2.1-26),
gcc-5-hppa64 (<< 5.2.1-26),
Reply to: