Source: gcc-4.4 Version: 1:4.4.3-1 Severity: wishlist Tags: d-i patch X-Debbugs-CC: debian-boot@lists.debian.org
Please consider the attached patch which adds a udeb for libgcc1 containing only libgcc_s.so.1. That file is needed for the (directfb based) graphical installer because of pthread_cancel(). See #373253 for background. Until now we've been copying libgcc_s.so.1 from the host system at build time, but it would be much cleaner to install it from a udeb. I've tested the patch on amd64 and it creates the udeb correctly. Please review the patch carefully as there may be aspects that I've missed in the complexity of the build system or arch-specific considerations. The file/udeb is currently only needed for amd64, i386 and powerpc, but it seems most logical to just build the udeb for all architectures. From my test build: $ debc libgcc1-udeb_4.4.3-2~fjp_amd64.udeb libgcc1-udeb_4.4.3-2~fjp_amd64.udeb ------------------------------- new debian package, version 2.0. size 43198 bytes: control archive= 330 bytes. 277 bytes, 10 lines control Package: libgcc1-udeb Source: gcc-4.4 (4.4.3-2~fjp) Version: 1:4.4.3-2~fjp Architecture: amd64 Maintainer: Debian GCC Maintainers <debian-...@lists.debian.org> Installed-Size: 104 Depends: libc6-udeb (>= 2.10) Section: debian-installer Priority: extra Description: GCC support library drwxr-xr-x root/root 0 2010-01-27 20:19 ./ drwxr-xr-x root/root 0 2010-01-27 20:19 ./lib/ -rw-r--r-- root/root 90040 2010-01-27 20:19 ./lib/libgcc_s.so.1
diff -u gcc-4.4-4.4.3/debian/control.m4 gcc-4.4-4.4.3/debian/control.m4 --- gcc-4.4-4.4.3/debian/control.m4 +++ gcc-4.4-4.4.3/debian/control.m4 @@ -188,6 +188,14 @@ environment. ')`'dnl +Package: libgcc1-udeb`'LS +XC-Package-Type: udeb +Architecture: ifdef(`TARGET',`all',`any') +Section: debian-installer +Priority: extra +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') + Package: libgcc2`'LS Architecture: ifdef(`TARGET',`all',`m68k') Section: ifdef(`TARGET',`devel',`libs') diff -u gcc-4.4-4.4.3/debian/control gcc-4.4-4.4.3/debian/control --- gcc-4.4-4.4.3/debian/control +++ gcc-4.4-4.4.3/debian/control @@ -36,6 +36,14 @@ Description: GCC support library (debug symbols) Debug symbols for the GCC support library. +Package: libgcc1-udeb +XC-Package-Type: udeb +Architecture: any +Section: debian-installer +Priority: extra +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library + Package: libgcc2 Architecture: m68k Section: libs diff -u gcc-4.4-4.4.3/debian/rules.d/binary-libgcc.mk gcc-4.4-4.4.3/debian/rules.d/binary-libgcc.mk --- gcc-4.4-4.4.3/debian/rules.d/binary-libgcc.mk +++ gcc-4.4-4.4.3/debian/rules.d/binary-libgcc.mk @@ -14,8 +14,10 @@ p_lgcc = libgcc$(GCC_SONAME) p_lgccdbg = libgcc$(GCC_SONAME)-dbg +p_lgccudeb = libgcc$(GCC_SONAME)-udeb d_lgcc = debian/$(p_lgcc) d_lgccdbg = debian/$(p_lgccdbg) +d_lgccudeb = debian/$(p_lgccudeb) p_l32gcc = lib32gcc$(GCC_SONAME) p_l32gccdbg = lib32gcc$(GCC_SONAME)-dbg @@ -42,7 +44,10 @@ dh_installdirs -p$(p_lgcc) \ $(docdir)/$(p_lgcc) \ $(libdir) - + dh_installdirs -p$(p_lgccudeb) \ + $(libdir) + + cp $(d)/$(PF)/lib/libgcc_s.so.$(GCC_SONAME) $(d_lgccudeb)/$(libdir)/. ifeq ($(with_shared_libgcc),yes) mv $(d)/$(PF)/lib/libgcc_s.so.$(GCC_SONAME) $(d_lgcc)/$(libdir)/. endif @@ -57,8 +62,9 @@ debian/dh_rmemptydirs -p$(p_lgcc) debian/dh_rmemptydirs -p$(p_lgccdbg) dh_strip -v -p$(p_lgcc) --dbg-package=$(p_lgccdbg) - dh_compress -p$(p_lgcc) -p$(p_lgccdbg) - dh_fixperms -p$(p_lgcc) -p$(p_lgccdbg) + dh_strip -v -p$(p_lgccudeb) + dh_compress -p$(p_lgcc) -p$(p_lgccdbg) -p$(p_lgccudeb) + dh_fixperms -p$(p_lgcc) -p$(p_lgccdbg) -p$(p_lgccudeb) ifeq ($(with_shared_libgcc),yes) dh_makeshlibs -p$(p_lgcc) -V '$(p_lgcc) (>= $(DEB_LIBGCC_SOVERSION))' \ -- -v$(DEB_LIBGCC_VERSION) @@ -68,17 +74,17 @@ endif cat debian/$(p_lgcc)/DEBIAN/shlibs >> debian/shlibs.local endif - dh_shlibdeps -p$(p_lgcc) - dh_gencontrol -p$(p_lgcc) -p$(p_lgccdbg) \ + dh_shlibdeps -p$(p_lgcc) -p$(p_lgccudeb) + dh_gencontrol -p$(p_lgcc) -p$(p_lgccdbg) -p$(p_lgccudeb) \ -- -v$(DEB_LIBGCC_VERSION) $(common_substvars) mkdir -p $(d_lgcc)/usr/share/lintian/overrides echo '$(p_lgcc): package-name-doesnt-match-sonames' \ > $(d_lgcc)/usr/share/lintian/overrides/$(p_lgcc) - dh_installdeb -p$(p_lgcc) -p$(p_lgccdbg) - dh_md5sums -p$(p_lgcc) -p$(p_lgccdbg) - dh_builddeb -p$(p_lgcc) -p$(p_lgccdbg) + dh_installdeb -p$(p_lgcc) -p$(p_lgccdbg) -p$(p_lgccudeb) + dh_md5sums -p$(p_lgcc) -p$(p_lgccudeb) + dh_builddeb -p$(p_lgcc) -p$(p_lgccdbg) -p$(p_lgccudeb) trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)