Bug#567182: gcc: Please add libgcc1-udeb for Debian Installer
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-gcc@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)
Reply to: