[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: