[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: