Your message dated Thu, 10 Oct 2024 10:06:12 +0000
with message-id <e1syq3g-00efoc...@fasolo.debian.org>
and subject line Bug#1082168: fixed in gcc-defaults 1.220
has caused the Debian Bug report #1082168,
regarding *-for-host: violates Multi-Arch: same
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
1082168: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1082168
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Source: gcc-defaults
Version: 1.219
Tags: patch
User: helm...@debian.org
Usertags: rebootstrap

Hi Matthias,

I am sorry for having introduced another problem into the gcc packaging.
As it turns out the *-for-host packages are not actually coinstallable
at present even though they should be. Attempting to do so results in an
unpack error. The root cause for this is the way I implemented
documentation linking where the TOOL-for-host package links to the
TOOL-GNU_TRIPLET package and that triplet is architecture-dependent of
course.

For the cpp-for-host package, there is no more fundamental package that
we could link documentation to, so I propose that it gains a real
documentation directory (thus incurring a symlink_to_dir conversion).
All other *-for-host packages transitively depend on cpp-for-host
already, so I propose making that dependency explicit and linking there.
Please find a patch implementing this conversion attached.

I tested the upgrade path and noticed that after unpacking the
documentation links are not updated reliably. This is due to a corner
case in dpkg where it looks up the actual link targets and if both the
old link and the new link refer to the same directory, it skips
replacing the symbolic link on disk. In a typical upgrade, cpp-for-host
is not the first package to be unpacked and therefore, some of the other
*-for-host packages' documentation links are not updated. (Thanks to
Guillem for pointing at
https://git.dpkg.org/cgit/dpkg/dpkg.git/tree/src/main/archives.c#n793
for understanding the cause.)

It is not clear to me whether this is worth mitigating. The old
documentation symlinks will continue to be valid as we do not loosen any
dependencies. Also dpkg --verify does not spot any issue as the dpkg
database does not record link targets. If the *-for-host packages are
upgraded another time, the links will be corrected. Since the *-for-host
packages have not been part of bookworm and I expect that two more
versions of gcc-defaults reach testing before we release trixie, this
may be a fair compromise.

The alternative likely is adding more maintainer scripts in a similar
way to dpkg-maintscript-helper for doing a symlink_to_symlink
conversion. Let me know if you prefer this route, but I note that we'd
be adding 21 maintainer scripts.

Helmut
diff --minimal -Nru gcc-defaults-1.219/debian/changelog 
gcc-defaults-1.219+nmu1/debian/changelog
--- gcc-defaults-1.219/debian/changelog 2024-07-23 11:22:47.000000000 +0200
+++ gcc-defaults-1.219+nmu1/debian/changelog    2024-09-18 14:17:40.000000000 
+0200
@@ -1,3 +1,10 @@
+gcc-defaults (1.219+nmu1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix Multi-Arch coinstallability of *-for-host packages. (Closes: #-1)
+
+ -- Helmut Grohne <hel...@subdivi.de>  Wed, 18 Sep 2024 14:17:40 +0200
+
 gcc-defaults (1.219) unstable; urgency=medium
 
   * Build gdc and gm2 packages for loong64. Closes: #1069714,
diff --minimal -Nru gcc-defaults-1.219/debian/control 
gcc-defaults-1.219+nmu1/debian/control
--- gcc-defaults-1.219/debian/control   2024-07-23 11:22:47.000000000 +0200
+++ gcc-defaults-1.219+nmu1/debian/control      2024-09-18 14:17:40.000000000 
+0200
@@ -372,7 +372,7 @@
 Architecture: any
 Multi-Arch: same
 Depends: g++${native:suffix} (= ${version:gpp}), cpp${native:suffix} (= 
${version:cpp}),
-  gcc-for-host (= ${version:gcc}), g++-${pv:gpp}-for-host ${reqv:gpp},
+  cpp-for-host (= ${version:cpp}), gcc-for-host (= ${version:gcc}), 
g++-${pv:gpp}-for-host ${reqv:gpp},
   ${misc:Depends}
 Description: GNU C++ compiler for the host architecture
  This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
@@ -425,7 +425,7 @@
 Multi-Arch: same
 Depends: cpp${native:suffix} (= ${version:cpp}),
   gcc${native:suffix} (>= ${version:cpp}), gobjc${native:suffix} (= 
${version:gobjc}),
-  gcc-for-host (= ${version:gcc}), gobjc-${pv:gobjc}-for-host ${reqv:gobjc},
+  cpp-for-host (= ${version:cpp}), gcc-for-host (= ${version:gcc}), 
gobjc-${pv:gobjc}-for-host ${reqv:gobjc},
   ${misc:Depends}
 Description: GNU Objective-C compiler for the host architecture
  This is the GNU Objective-C compiler, which compiles Objective-C on platforms
@@ -482,7 +482,7 @@
 Multi-Arch: same
 Depends: cpp${native:suffix} (= ${version:cpp}),
   gcc${native:suffix} (>= ${version:cpp}), gobjc++${native:suffix} (= 
${version:gobjcxx}),
-  gobjc-for-host (= ${version:gobjc}), g++-for-host (= ${version:gpp}),
+  cpp-for-host (= ${version:cpp}), gobjc-for-host (= ${version:gobjc}), 
g++-for-host (= ${version:gpp}),
   gobjc++-${pv:gobjcxx}-for-host ${reqv:gobjcxx}, ${misc:Depends}
 Description: GNU Objective-C++ compiler for the host architecture
  This is the GNU Objective-C++ compiler, which compiles
@@ -538,7 +538,7 @@
 Architecture: any
 Multi-Arch: same
 Depends: cpp${native:suffix} (= ${version:cpp}), gcc${native:suffix} (= 
${version:gcc}),
-  gcc-for-host (= ${version:gcc}), gfortran-${pv:gfort}-for-host ${reqv:gfort},
+  cpp-for-host (= ${version:cpp}), gcc-for-host (= ${version:gcc}), 
gfortran-${pv:gfort}-for-host ${reqv:gfort},
   gfortran${native:suffix} (= ${version:gfort}), ${misc:Depends}
 Description: GNU Fortran 95 compiler for the host architecture
  This is the GNU Fortran 95 compiler, which compiles Fortran 95 on platforms
@@ -592,7 +592,7 @@
 Architecture: any
 Multi-Arch: same
 Depends: cpp${native:suffix} (= ${version:cpp}), gcc${native:suffix} (>= 
${version:gcc}),
-  gcc-for-host (= ${version:gcc}), gccgo-${pv:ggo}-for-host ${reqv:ggo},
+  cpp-for-host (= ${version:cpp}), gcc-for-host (= ${version:gcc}), 
gccgo-${pv:ggo}-for-host ${reqv:ggo},
   gccgo${native:suffix} (= ${version:ggo}), ${misc:Depends}
 Description: Go compiler, based on the GCC backend for the host architecture
  This is the GNU Go compiler, which compiles Go on platforms supported by
@@ -644,7 +644,7 @@
 Architecture: any
 Multi-Arch: same
 Depends: gdc${native:suffix} (= ${version:gdc}), ${dep:libgphobos},
-  gcc-for-host (= ${version:gcc}), gdc-${pv:gdc}-for-host ${reqv:gdc}, 
${misc:Depends}
+  cpp-for-host (= ${version:cpp}), gcc-for-host (= ${version:gcc}), 
gdc-${pv:gdc}-for-host ${reqv:gdc}, ${misc:Depends}
 Description: D compiler (language version 2) for the host architecture
  This is a dependency package providing the default D compiler.
  Per policy, all packages that contain D sources must use this package
@@ -701,7 +701,7 @@
 Architecture: any
 Multi-Arch: same
 Depends: cpp${native:suffix} (= ${version:cpp}), gm2${native:suffix} (= 
${version:gm2}),
-  gcc-for-host (= ${version:gcc}), gm2-${pv:gm2}-for-host ${reqv:gm2}, 
${misc:Depends}
+  cpp-for-host (= ${version:cpp}), gcc-for-host (= ${version:gcc}), 
gm2-${pv:gm2}-for-host ${reqv:gm2}, ${misc:Depends}
 Description: GNU Modula-2 compiler for the host architecture, based on the GCC 
backend
  This is a dependency package providing the default GNU Modula-2 compiler.
  .
diff --minimal -Nru gcc-defaults-1.219/debian/control.native.in 
gcc-defaults-1.219+nmu1/debian/control.native.in
--- gcc-defaults-1.219/debian/control.native.in 2024-01-27 18:41:19.000000000 
+0100
+++ gcc-defaults-1.219+nmu1/debian/control.native.in    2024-09-18 
14:17:40.000000000 +0200
@@ -361,7 +361,7 @@
 Architecture: any
 Multi-Arch: same
 Depends: g++${native:suffix} (= ${version:gpp}), cpp${native:suffix} (= 
${version:cpp}),
-  gcc-for-host (= ${version:gcc}), g++-${pv:gpp}-for-host ${reqv:gpp},
+  cpp-for-host (= ${version:cpp}), gcc-for-host (= ${version:gcc}), 
g++-${pv:gpp}-for-host ${reqv:gpp},
   ${misc:Depends}
 Description: GNU C++ compiler for the host architecture
  This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
@@ -414,7 +414,7 @@
 Multi-Arch: same
 Depends: cpp${native:suffix} (= ${version:cpp}),
   gcc${native:suffix} (>= ${version:cpp}), gobjc${native:suffix} (= 
${version:gobjc}),
-  gcc-for-host (= ${version:gcc}), gobjc-${pv:gobjc}-for-host ${reqv:gobjc},
+  cpp-for-host (= ${version:cpp}), gcc-for-host (= ${version:gcc}), 
gobjc-${pv:gobjc}-for-host ${reqv:gobjc},
   ${misc:Depends}
 Description: GNU Objective-C compiler for the host architecture
  This is the GNU Objective-C compiler, which compiles Objective-C on platforms
@@ -471,7 +471,7 @@
 Multi-Arch: same
 Depends: cpp${native:suffix} (= ${version:cpp}),
   gcc${native:suffix} (>= ${version:cpp}), gobjc++${native:suffix} (= 
${version:gobjcxx}),
-  gobjc-for-host (= ${version:gobjc}), g++-for-host (= ${version:gpp}),
+  cpp-for-host (= ${version:cpp}), gobjc-for-host (= ${version:gobjc}), 
g++-for-host (= ${version:gpp}),
   gobjc++-${pv:gobjcxx}-for-host ${reqv:gobjcxx}, ${misc:Depends}
 Description: GNU Objective-C++ compiler for the host architecture
  This is the GNU Objective-C++ compiler, which compiles
@@ -528,7 +528,7 @@
 Architecture: any
 Multi-Arch: same
 Depends: cpp${native:suffix} (= ${version:cpp}), gcc${native:suffix} (= 
${version:gcc}),
-  gcc-for-host (= ${version:gcc}), gfortran-${pv:gfort}-for-host ${reqv:gfort},
+  cpp-for-host (= ${version:cpp}), gcc-for-host (= ${version:gcc}), 
gfortran-${pv:gfort}-for-host ${reqv:gfort},
   gfortran${native:suffix} (= ${version:gfort}), ${misc:Depends}
 Description: GNU Fortran 95 compiler for the host architecture
  This is the GNU Fortran 95 compiler, which compiles Fortran 95 on platforms
@@ -582,7 +582,7 @@
 Architecture: any
 Multi-Arch: same
 Depends: cpp${native:suffix} (= ${version:cpp}), gcc${native:suffix} (>= 
${version:gcc}),
-  gcc-for-host (= ${version:gcc}), gccgo-${pv:ggo}-for-host ${reqv:ggo},
+  cpp-for-host (= ${version:cpp}), gcc-for-host (= ${version:gcc}), 
gccgo-${pv:ggo}-for-host ${reqv:ggo},
   gccgo${native:suffix} (= ${version:ggo}), ${misc:Depends}
 Description: Go compiler, based on the GCC backend for the host architecture
  This is the GNU Go compiler, which compiles Go on platforms supported by
@@ -634,7 +634,7 @@
 Architecture: any
 Multi-Arch: same
 Depends: gdc${native:suffix} (= ${version:gdc}), ${dep:libgphobos},
-  gcc-for-host (= ${version:gcc}), gdc-${pv:gdc}-for-host ${reqv:gdc}, 
${misc:Depends}
+  cpp-for-host (= ${version:cpp}), gcc-for-host (= ${version:gcc}), 
gdc-${pv:gdc}-for-host ${reqv:gdc}, ${misc:Depends}
 Description: D compiler (language version 2) for the host architecture
  This is a dependency package providing the default D compiler.
  Per policy, all packages that contain D sources must use this package
@@ -691,7 +691,7 @@
 Architecture: any
 Multi-Arch: same
 Depends: cpp${native:suffix} (= ${version:cpp}), gm2${native:suffix} (= 
${version:gm2}),
-  gcc-for-host (= ${version:gcc}), gm2-${pv:gm2}-for-host ${reqv:gm2}, 
${misc:Depends}
+  cpp-for-host (= ${version:cpp}), gcc-for-host (= ${version:gcc}), 
gm2-${pv:gm2}-for-host ${reqv:gm2}, ${misc:Depends}
 Description: GNU Modula-2 compiler for the host architecture, based on the GCC 
backend
  This is a dependency package providing the default GNU Modula-2 compiler.
  .
diff --minimal -Nru gcc-defaults-1.219/debian/cpp-for-host.maintscript.in 
gcc-defaults-1.219+nmu1/debian/cpp-for-host.maintscript.in
--- gcc-defaults-1.219/debian/cpp-for-host.maintscript.in       1970-01-01 
01:00:00.000000000 +0100
+++ gcc-defaults-1.219+nmu1/debian/cpp-for-host.maintscript.in  2024-09-18 
14:17:40.000000000 +0200
@@ -0,0 +1 @@
+symlink_to_dir /usr/share/doc/cpp-for-host cpp@NATIVE_SUFFIX@ 4:14.1.0-2
diff --minimal -Nru gcc-defaults-1.219/debian/rules 
gcc-defaults-1.219+nmu1/debian/rules
--- gcc-defaults-1.219/debian/rules     2024-07-23 11:22:47.000000000 +0200
+++ gcc-defaults-1.219+nmu1/debian/rules        2024-09-18 14:17:40.000000000 
+0200
@@ -789,7 +789,7 @@
        rm -rf build
        rm -f debian/control.tmp*
        rm -f debian/substvars.*
-       rm -f debian/cpp.maintscript debian/gcc.postinst debian/g++.postinst 
debian/gdc.maintscript debian/gfortran.postinst
+       rm -f debian/cpp.maintscript debian/gcc.postinst debian/g++.postinst 
debian/gdc.maintscript debian/gfortran.postinst debian/cpp-for-host.maintscript
        dh_clean
 
 pre-install: build substvars
@@ -812,6 +812,8 @@
        dh_link -pcpp \
          /usr/bin/cpp-$(PV_CPP) /usr/bin/cpp \
          /usr/share/doc/cpp$(NATIVE_SUFFIX) /usr/share/doc/cpp
+       sed -e 's/@NATIVE_SUFFIX@/$(NATIVE_SUFFIX)/g' \
+               debian/cpp-for-host.maintscript.in > 
debian/cpp-for-host.maintscript
 
   ifeq ($(with_gfdl_docs),yes)
        for i in gfdl.7 gpl.7 fsf-funding.7; do \
@@ -964,7 +966,7 @@
 ifneq (,$(filter gdc-for-host, $(packages)))
        : # gdc-for-host
        dh_installdirs -pgdc-for-host
-       dh_link -pgdc-for-host /usr/share/doc/gdc$(NATIVE_SUFFIX) 
/usr/share/doc/gdc-for-host
+       dh_link -pgdc-for-host /usr/share/doc/cpp-for-host 
/usr/share/doc/gdc-for-host
 endif
 
 ifneq (,$(filter gm2, $(packages)))
@@ -1358,10 +1360,12 @@
        dh_testroot
 #      dh_installdebconf
        dh_installdocs -pcpp$(NATIVE_SUFFIX)
-       for p in `dh_listpackages -a $(nopkgs_native) -Ncpp$(NATIVE_SUFFIX) 
$(if $(filter yes,$(with_gfdl_docs)),-Ncpp-doc -Ngcc-doc -Ngfortran-doc 
-Ngccgo-doc) -Ngdc -Ngdc$(NATIVE_SUFFIX) -Ngdc-for-host -Nlibgphobos-dev`; do \
+       dh_installdocs -pcpp-for-host
+       for p in `dh_listpackages -a $(nopkgs_native) -Ncpp$(NATIVE_SUFFIX) 
-Ncpp-for-host $(if $(filter yes,$(with_gfdl_docs)),-Ncpp-doc -Ngcc-doc 
-Ngfortran-doc -Ngccgo-doc) -Ngdc -Ngdc$(NATIVE_SUFFIX) -Ngdc-for-host 
-Nlibgphobos-dev`; do \
          case "$$p" in \
            *$(NATIVE_SUFFIX)) t=cpp$(NATIVE_SUFFIX) ;; \
            *-gnu*|*-kfreebsd*|gcc-hppa64-linux-gnu) continue;; \
+           *-for-host) t=cpp-for-host ;; \
            *) t=cpp$(NATIVE_SUFFIX); \
          esac; \
          echo ln -sf $$t debian/$$p/usr/share/doc/$$p; \
@@ -1372,6 +1376,7 @@
 
        for p in \
          cpp$(NATIVE_SUFFIX) \
+         cpp-for-host \
          $(if $(filter $(DEB_HOST_ARCH), $(d_archs)), gdc$(NATIVE_SUFFIX)) \
          $(if $(filter $(DEB_HOST_ARCH), $(phobos_archs)), libgphobos-dev); \
        do \

--- End Message ---
--- Begin Message ---
Source: gcc-defaults
Source-Version: 1.220
Done: Matthias Klose <d...@debian.org>

We believe that the bug you reported is fixed in the latest version of
gcc-defaults, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1082...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Matthias Klose <d...@debian.org> (supplier of updated gcc-defaults package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Thu, 10 Oct 2024 09:53:47 +0200
Source: gcc-defaults
Architecture: source
Version: 1.220
Distribution: unstable
Urgency: medium
Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
Changed-By: Matthias Klose <d...@debian.org>
Closes: 1082168
Changes:
 gcc-defaults (1.220) unstable; urgency=medium
 .
   * Bump versions to 14.2.
   * Fix Multi-Arch coinstallability of *-for-host packages. (Helmut Grohne).
     Closes: #1082168.
Checksums-Sha1:
 6bdc071d91dbf58de5b449bf4b646c665d541d56 36895 gcc-defaults_1.220.dsc
 252a358d8f95653f129bdf0f16df8d607eb493bf 54044 gcc-defaults_1.220.tar.xz
 124a56090ef7af91e73fd046f0d93a5af177f8f9 5963 
gcc-defaults_1.220_source.buildinfo
Checksums-Sha256:
 abfa2d362033435385e733f97d0cace1fbc917fd4160c81cc89abac38d3cdc37 36895 
gcc-defaults_1.220.dsc
 d40fbdb57f351a58e050c3e1037201853e88e3f673242b62357dc20030ad4805 54044 
gcc-defaults_1.220.tar.xz
 e4b2b583b95b74ba71b8b2821a42d31270eced2f16da818e9d968fabd5a9c123 5963 
gcc-defaults_1.220_source.buildinfo
Files:
 dc805e6447c4351691b64c98787d8a63 36895 devel standard gcc-defaults_1.220.dsc
 94e3313ba19e2f7c093892873d1ac076 54044 devel standard gcc-defaults_1.220.tar.xz
 93001b888bbacc23161bf53dd7752288 5963 devel standard 
gcc-defaults_1.220_source.buildinfo
-----BEGIN PGP SIGNATURE-----

iQJEBAEBCgAuFiEE1WVxuIqLuvFAv2PWvX6qYHePpvUFAmcHlf4QHGRva29AZGVi
aWFuLm9yZwAKCRC9fqpgd4+m9Rh7D/4jLdR5MJskXGgnpgjMWYWWKvIGuEMaoBy/
vF05lrCJLilhA3ZxrhlMy81I1KGA0CK12vR20G7qwdir5Wh3FhTK+wHlcenLoY0a
8bhvZSKM49odnaBewoeqPhlNGveqtx2cYSgRS0J5K1kMRgGxFath6jVNo5KwGlsd
A+SSC3XZLY7St8KVTX1Z333HREfYJJdOvfNGrQ+JvLZl1D4iLLMVDjxXbTQcJul+
Gn2+0etqcZl3jJPiCSEUlQFzGfUZaDH/QF2Klo9IYOQIYGXuvYw65naOQ5QqlgSV
uuTXH9rpEWS9sT8XQz4O9mB8ASrasLBgdhsARChwb5jA0cfRurUzMaA2nTGIIXpz
TQW1Y5eDsZUP/GE9amOVjMZLpPvIdxovnJPRu8zfkLcKthbKQuvoF30n4p3KcmqT
zlg4oBrxhNdyYxxwsSoaOL9m+jbcx+5GTmcypItZ6KyarpLnOhXoQAUxJQBwhvya
aABpkrnbykmiF5UdewF1FO/uCDFvIojd2KX8iF4N4NUzKVBuoE1op9m2h6WsUyD4
t9rGSU8OXEM2EZK5+XQZJbFWCA06Rc5eNDWDT7xjRcW3gvRXaDgId3MIuVwGNr+r
O+H8P6PY0Pc33AjIVjms7QO7PFBf53qKfc6BugSVqxb5NpzIs6Kf6LBEDRoQ1Vuo
PVq2Y2SC2A==
=SxbC
-----END PGP SIGNATURE-----

Attachment: pgpgj489bEsWo.pgp
Description: PGP signature


--- End Message ---

Reply via email to