Hi Guillem and Raphaël,

thank you two for jumping into it right away.

On Wed, Jul 09, 2025 at 01:26:27PM +0200, Guillem Jover wrote:
> On Wed, 2025-07-09 at 12:39:12 +0200, Raphael Hertzog wrote:
> > On Wed, 09 Jul 2025, Helmut Grohne wrote:
> > So this part was added as part of the discussion in this bug report:
> > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=453267
> 
> Right, was about to post the same reference. :)

Thank you. Right in message #73 and later message #93 Raphaël questions 
precisely the code in question. In the later conversation, and message 
#78 in particular, we see that gcc did not override DEB_HOST_ARCH for 
dpkg-shlibdeps back then. There was a bit back and forth 
whether gcc could be updated to convey the architecture it is interested 
in more sanely, but the original approach ended up being merged.

The -$DEB_TARGET_ARCH-cross packages that were mentioned there are still being 
built (unless applying the with_deps_on_target_arch_pkgs patchset and 
then they become :$DEB_TARGET_ARCH). Either way, gcc precisely tells 
apart what packages are meant to be target ones and for each of those it 
now (but now back then) changes DEB_HOST_ARCH to target for the 
dh_shlibdeps invocation.

> …and from a quick skim over that report, I think this might have been
> needed to support old gcc versions that had not yet been fixed to
> use the expected variables (see messages #73 and forward)? (But this
> was really a quick skim, so might have read the details wrong, as the
> report is quite long.) Will try to recheck later today.

I concur. This fully matches my understanding (see above).

> > The right thing to try to validate whether we can remove the code is
> > building a cross-compiler (and not cross-building a compiler).

Running rebootstrap starts out with building a stage1 cross compiler, 
glibc stage2 and then a stage3 gcc cross compiler. Admittedly, it limits 
the amount of frontends to C, C++ and Fortran leaving out most other 
frontends. So building a full gcc-14-cross with that patch applied is 
something I likely should do still. Thankfully, we now have Debusine. :)

https://debusine.debian.net/debian/developers/work-request/119889/ is a 
dpkg workflow and a gcc one shall go later.

> Yes, I don't see rebootstrap using dpkg-buildpackage --target-arch for
> anything except GNU mig?

That is correct. The gcc source packages refuse to support 
DEB_TARGET_ARCH and you have to convey the target architecture via 
debian/target. In the end, it internally sets DEB_TARGET_* 
appropriately.

> Ideally, we'd test both a cross-compiler build (build == host != target)
> and a canadian cross-compiler build (build != host != target).

I'm not sure canadian builds are supported at all. Do note that the 
canadian build should be unaffected. If build != host, $multiarch is 
overwritten and it no longer matters whether we set it when build != 
target. I argue that the proposed change does not affect canadian 
builds.

Helmut

Reply via email to