Your message dated Wed, 02 Nov 2022 08:34:49 +0000
with message-id <[email protected]>
and subject line Bug#956855: fixed in cross-toolchain-base 62
has caused the Debian Bug report #956855,
regarding consider reducing toolchain bootstrap stages
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 [email protected]
immediately.)
--
956855: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=956855
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Source: cross-toolchain-base
Version: 45
Severity: wishlist
Tags: patch moreinfo
I'm not sure anymore who told me, but glibc has a build_many_glibcs.py
script and it does the toolchain bootstrap dance with fewer stages than
Debian (i.e. cross-toolchain-base and rebootstrap) does. The current
Debian toolchain bootstrap looks like this:
* binutils
* linux-libc-dev
* gcc stage1 (bare metal)
* glibc stage1 (headers + stub libc.so)
* gcc stage2
* glibc stage2 (libc without systemtap and other optional features)
* gcc stage3 (libc-integrated cross compiler)
* gcc rtlibs (runtime libraries for the cross compiler)
The assertion is that we can skip glibc stage1 and gcc stage2 and go
directly from gcc stage1 to glibc stage2.
I've implemented this in rebootstrap and it seems to work reasonably
well for a number of architectures. I've not run it on the full test
matrix yet. Some observations on rebootstrap:
* musl-linux-any already works like this since a while.
* hurd-any formerly needed libihash-dev for libpthread, but no longer
does. This sequence also works on hurd-i386.
* I've had success with arm64, armel, armhf, m68k, mips (nobiarch),
mipsel (nobiarch) and ppc64el thus far. Notably, these all lack
multilibs and I'm still sorting out multilib issues.
* I cannot tell about kfreebsd-any, since they didn't manage to get the
relevant kernel header source package back into unstable yet.
I've implemented this for cross-toolchain-base (patch attached) and a
performed a successful testbuild. Using diffoscope to compare the
resulting packages with the ones from the archive was not a useful thing
to do as the build-ids changed.
So what do you think about going to fewer stages? I'd like to solicit
explicit feedback from the involved parties:
gcc maintainers / Matthias:
* Do you have any objections to reducing stages?
* Should we delete gcc stage2?
* Should we rename gcc stage3 to gcc stage2?
glibc maintainers / Aurelien:
* Do you have any objections to reducing stages?
* Should we delete glibc stage1?
* Should we rename glibc stage2 to glibc stage1?
* Should we maybe split stage2 into a number of profiles
pkg.glibc.noselinux, pkg.glibc.noxen, pkg.glibc.noalphaev,
pkg.glibc.noxcryptdep?
Due to these open questions, I've tagged the bug moreinfo.
Helmut
diff --minimal -Nru cross-toolchain-base-45/debian/changelog
cross-toolchain-base-45+nmu1/debian/changelog
--- cross-toolchain-base-45/debian/changelog 2020-03-22 14:02:54.000000000
+0100
+++ cross-toolchain-base-45+nmu1/debian/changelog 2020-04-15
11:35:18.000000000 +0200
@@ -1,3 +1,10 @@
+cross-toolchain-base (45+nmu1) UNRELEASED; urgency=medium
+
+ * Non-maintainer upload.
+ * Bootstrap with fewer stages. (Closes: #-1)
+
+ -- Helmut Grohne <[email protected]> Wed, 15 Apr 2020 11:35:18 +0200
+
cross-toolchain-base (45) unstable; urgency=medium
* Build using glibc 2.30-2.
diff --minimal -Nru cross-toolchain-base-45/debian/rules
cross-toolchain-base-45+nmu1/debian/rules
--- cross-toolchain-base-45/debian/rules 2020-03-22 14:02:01.000000000
+0100
+++ cross-toolchain-base-45+nmu1/debian/rules 2020-04-15 11:35:18.000000000
+0200
@@ -343,96 +344,6 @@
ln -sf ${CROSS_GNU_TYPE}-gcov-${VER_GCC_BASE} ${CROSS_GNU_TYPE}-gcov
endef
-$(stamp)build-gcc2.%: $(stamp)init-gcc $(stamp)install-glibc1.%
- @echo START $@
- cd debian/tmp.${CROSS_ARCH}/$(PF)/bin/ && \
- rm -f ${CROSS_GNU_TYPE}-gcc-${VER_GCC_BASE} ${CROSS_GNU_TYPE}-gcc && \
- rm -f ${CROSS_GNU_TYPE}-cpp-${VER_GCC_BASE} ${CROSS_GNU_TYPE}-cpp && \
- rm -f ${CROSS_GNU_TYPE}-gcov-${VER_GCC_BASE} ${CROSS_GNU_TYPE}-gcov
- cd gcc && \
- PATH=${CURDIR}/debian/tmp.${CROSS_ARCH}/$(PF)/bin:${PATH} \
- LD_LIBRARY_PATH=$(call
binutils_ldpath,$*):${CURDIR}/debian/tmp.${CROSS_ARCH}/usr/lib:${CURDIR}/debian/tmp.${CROSS_ARCH}/lib
\
- DH_VERBOSE=1 \
- WITH_SYSROOT=/ \
- WITH_BUILD_SYSROOT=${CURDIR}/debian/tmp.${CROSS_ARCH} \
- DEB_STAGE=stage2 \
- PKG_IGNORE_CURRENTLY_BUILDING=1 \
- BACKPORT=false \
- DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS) nocheck nopgo nolto nohppa64
nojit nonvptx" \
- WITHOUT_LANG="hppa64 jit nvptx" \
- $(if $(filter $(HOST_ARCH),$(CROSS_ARCH)),FORCE_CROSS_LAYOUT=yes
WITH_BOOTSTRAP=off) \
- dpkg-buildpackage -b -uc -us -d
- touch $@
-
-$(stamp)install-gcc2.%: $(stamp)build-gcc2.%
- @echo START $@
- $(call install_gcc)
- dpkg-deb -x libgcc[124]-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}
-ifneq (,$(ARM32_MULTILIBS))
- $(if $(filter $(CROSS_ARCH),armhf), \
- dpkg-deb -x libsfgcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x
libsfgcc-${VER_GCC_BASE}-dev-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),armel), \
- dpkg-deb -x libhfgcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x
libhfgcc-${VER_GCC_BASE}-dev-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH} \
- )
-endif
- $(if $(filter $(CROSS_ARCH),amd64 ppc64 s390x sparc64 x32), \
- dpkg-deb -x lib32gcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x
lib32gcc-${VER_GCC_BASE}-dev-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),i386 powerpc x32), \
- dpkg-deb -x lib64gcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x
lib64gcc-${VER_GCC_BASE}-dev-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),amd64 i386), \
- dpkg-deb -x libx32gcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x
libx32gcc-${VER_GCC_BASE}-dev-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),mips mipsel mipsr6 mipsr6el), \
- dpkg-deb -x lib64gcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x
lib64gcc-${VER_GCC_BASE}-dev-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x libn32gcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x
libn32gcc-${VER_GCC_BASE}-dev-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),mipsn32 mipsn32el mipsn32r6 mipsn32r6el), \
- dpkg-deb -x lib64gcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x
lib64gcc-${VER_GCC_BASE}-dev-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x lib32gcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x
lib32gcc-${VER_GCC_BASE}-dev-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),mips64 mips64el mips64r6 mips64r6el), \
- dpkg-deb -x lib32gcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x
lib32gcc-${VER_GCC_BASE}-dev-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x libn32gcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x
libn32gcc-${VER_GCC_BASE}-dev-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
- debian/tmp.${CROSS_ARCH} \
- )
- touch $@
-
$(stamp)build-gcc3.%: $(stamp)init-gcc $(stamp)install-glibc2.%
@echo START $@
cd debian/tmp.${CROSS_ARCH}/$(PF)/bin/ && \
@@ -468,88 +379,7 @@
# fi
touch $@
-$(stamp)build-glibc1.%: $(stamp)init-glibc $(stamp)install-linux.%
$(stamp)install-gcc1.%
- @echo START $@
-# FIXME: why debian/libgcc1-armel-cross?
- cd glibc-${VER_GLIBC} && \
- PATH=${CURDIR}/debian/tmp.${CROSS_ARCH}/$(PF)/bin/:${PATH} \
- LD_LIBRARY_PATH=$(call
binutils_ldpath,$*):${CURDIR}/gcc/debian/libgcc1-armel-cross/usr/${CROSS_GNU_TYPE}/lib/
\
- LINUX_SOURCE=${CURDIR}/debian/tmp.${CROSS_ARCH}/usr \
- PATCHED_SOURCES=yes \
- WITH_BUILD_SYSROOT=${CURDIR}/debian/tmp.${CROSS_ARCH} \
- DEB_BUILD_PROFILES=stage1 \
- PKG_IGNORE_CURRENTLY_BUILDING=1 \
- BACKPORT=false \
- DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS) nocheck" \
- CTB_LIBC_DEV_DEPENDS='$(CTB_LIBC_DEV_DEPENDS)' \
- fakeroot dpkg-buildpackage -B -uc -us -a${CROSS_ARCH} -d -Pstage1
- : # FIXME: a libc6.1-alphaev67 package is built on alpha
- $(if $(filter $(CROSS_ARCH),alpha), rm -f libc6.1-alphaev67*.deb)
- touch $@
-
-$(stamp)install-glibc1.%: $(stamp)build-glibc1.%
- @echo START $@
- $(if $(filter $(CROSS_ARCH),alpha ia64), \
- dpkg-deb -x libc6.1-dev_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH}, \
- dpkg-deb -x libc6-dev_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
-
-ifneq (,$(ARM32_MULTILIBS))
- $(if $(filter $(CROSS_ARCH),armhf), \
- dpkg-deb -x libc6-dev-armel_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),armel), \
- dpkg-deb -x libc6-dev-armhf_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
-endif
- $(if $(filter $(CROSS_ARCH),ppc64), \
- dpkg-deb -x libc6-dev-powerpc_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),s390x), \
- dpkg-deb -x libc6-dev-s390_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),sparc64), \
- dpkg-deb -x libc6-dev-sparc_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),powerpc), \
- dpkg-deb -x libc6-dev-ppc64_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),mips mipsel mipsr6 mipsr6el), \
- dpkg-deb -x libc6-dev-mips64_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x libc6-dev-mipsn32_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),mipsn32 mipsn32el mipsn32r6 mipsn32r6el), \
- dpkg-deb -x libc6-dev-mips64_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x libc6-dev-mips32_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),mips64 mips64el mips64r6 mips64r6el), \
- dpkg-deb -x libc6-dev-mips32_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x libc6-dev-mipsn32_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),amd64), \
- dpkg-deb -x libc6-dev-i386_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x libc6-dev-x32_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),i386), \
- dpkg-deb -x libc6-dev-amd64_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x libc6-dev-x32_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
- $(if $(filter $(CROSS_ARCH),x32), \
- dpkg-deb -x libc6-dev-amd64_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH}; \
- dpkg-deb -x libc6-dev-i386_${DEB_VER_GLIBC}_${CROSS_ARCH}.deb
debian/tmp.${CROSS_ARCH} \
- )
- : # FIXME: why is this needed?
- cd debian/tmp.${CROSS_ARCH}/usr/lib ;\
- for crt in ${CROSS_GNU_TYPE}/crt*; do \
- ln -sf $$crt `basename $$crt`; \
- done
- : # dpkg-shlibdeps for the stage2 gcc needs these
- for d in $$(find debian/tmp.${CROSS_ARCH}/usr/lib -name libc.so -printf
'%h\n'); do \
- ln -sf libc.so $$d/libc.so.6; \
- done
- touch $@
-
-$(stamp)build-glibc2.%: $(stamp)init-glibc $(stamp)install-gcc2.%
+$(stamp)build-glibc2.%: $(stamp)init-glibc $(stamp)install-linux.%
$(stamp)install-gcc1.%
@echo START $@
# FIXME: why debian/libgcc1-armel-cross?
cd glibc-${VER_GLIBC} && \
@@ -1343,12 +1173,8 @@
$(stamp)init-gcc \
$(stamp)build-gcc1.% \
$(stamp)install-gcc1.% \
- $(stamp)build-gcc2.% \
- $(stamp)install-gcc2.% \
$(stamp)build-gcc3.% \
$(stamp)init-glibc \
- $(stamp)build-glibc1.% \
- $(stamp)install-glibc1.% \
$(stamp)build-glibc2.% \
$(stamp)install-glibc2.% \
$(stamp)debian-files-base \
--- End Message ---
--- Begin Message ---
Source: cross-toolchain-base
Source-Version: 62
Done: Matthias Klose <[email protected]>
We believe that the bug you reported is fixed in the latest version of
cross-toolchain-base, 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 [email protected],
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Matthias Klose <[email protected]> (supplier of updated cross-toolchain-base
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 [email protected])
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Format: 1.8
Date: Tue, 01 Nov 2022 17:31:55 +0100
Source: cross-toolchain-base
Architecture: source
Version: 62
Distribution: unstable
Urgency: medium
Maintainer: Cross Toolchain Base Team
<[email protected]>
Changed-By: Matthias Klose <[email protected]>
Closes: 956855
Changes:
cross-toolchain-base (62) unstable; urgency=medium
.
* Build using glibc 2.36-3.
* Build using linux 6.0.5.
* Work around dpkg-cross misbehaving with glibc 2.35 to rewrite
.so files for non-default multilib packages. See #1018758.
* Remove glibc stage1 and gcc stage2 (Helmut Grohne). Closes: #956855.
* Remove the support to build ARM32 soft-float/hard-float multilibs.
* Update copyright years.
* Merge the support to build packages for arc-linux-gnu.
Checksums-Sha1:
4f8a9e4dc0a7770ae54f9eb9043e5a9999df4976 5693 cross-toolchain-base_62.dsc
1c2f7b171f50ea29e05fc3a5ecd262e637e1e9a8 42916 cross-toolchain-base_62.tar.xz
de6a7bf10a98fa445cb356e5d5548e37c0a32bdc 8624
cross-toolchain-base_62_source.buildinfo
Checksums-Sha256:
800052770afa3f1306607d629ec802f9a9940902c55e03300a01973f59420d0d 5693
cross-toolchain-base_62.dsc
a4a8f293ac6cca60cf92b1ce0103bf64f1f28e2a8c2c8cf3ed8088d23eeb4183 42916
cross-toolchain-base_62.tar.xz
a7f884968f79349051db6c742281ad1c99305b2cd2a8f04b4ab2a1bde05f8e1d 8624
cross-toolchain-base_62_source.buildinfo
Files:
3ff088a19cfd87af5b2da33edf0a920b 5693 devel optional
cross-toolchain-base_62.dsc
64b60d4f9f5ece566191b0abcd93b47c 42916 devel optional
cross-toolchain-base_62.tar.xz
325b128754dd912b85d1155cb58ba622 8624 devel optional
cross-toolchain-base_62_source.buildinfo
-----BEGIN PGP SIGNATURE-----
iQJEBAEBCAAuFiEE1WVxuIqLuvFAv2PWvX6qYHePpvUFAmNhTYsQHGRva29AZGVi
aWFuLm9yZwAKCRC9fqpgd4+m9dEdEADbjZPJALgPq+o5UOgUC/1OeOMNG8pD2e52
464zx+Ob4R5+7PxKv7m5hWkK7QYEQXdTsAxdwVc8op7IosfWGJ+CMTq85AFOhzYO
9Fq55BIdZNZHuBl4AkBYolN6E21LusZ9Xi8J8khRtWFH3fie2KjOzw4aolao9HDN
NdVsbkh5MDbawuy6KizSLyHmbLGEm75GV+iajg3UxxG9grpw9JiwwtwF7MPK8fjF
C5XBudqUVocUl8GIR8dZayWZJUF0bNiKyxqmRSkRSJl4QCg0IfYwxTryADlDuJue
zqMG2WRhEOV8TWm4uOg8vb30d/9crnDEQWrs5iY8/TZTvkxTOGEhlOAv6itl8wZi
ubVPNmaY1liZGG+lH6/DAlI5ktx1AxvBYCvRJerVPA/QblIGB/PEgHDUl4j74cTA
iA/BSnVc35D9ynEPwpa8mNvdQ5DqHfRAK/bE1jhbx/fPZIk4CxfOuh4keu4rH09y
qBOiE8/Drz6RIiRPDp/7Y3XsJsqRFb6wjcQtKOdGkGqDY18lRYEMdfGrTTuNRkxI
i9jaUn83/ufzKDPNKZsLEbcrCmgV2JbJTX+mnAgN/2+NnT2qDi/xe0TpyJL3sib3
8PN4foEseDSUrFw8e4ojvVxtflw+Fp8rrrEMBa7DOdzPPqSGNSzUNzEfNFAtdIt5
Jm8HV17ssA==
=6dmD
-----END PGP SIGNATURE-----
--- End Message ---