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

Bug#701941: libstdc++6: Debug symbols should be in libstc++6-dbg



Okay, here's a patch against 4.8.1-4 that seems to work to split out the
debug symbols.  I'm not sure why you want this, though: it doesn't seem
terribly important to be able to install a debug version of libstdc++
that from a different gcc-X.Y, and it makes the packaging just that much
messier ...

Unfortunately, it doesn't allow installing libstdc++6-dbg and
libstdc++6-4.8-dbg at the same time, since I don't know what version to
add to the relevant Conflicts.  (It might also need some replaces?)

I really recommend taking the other approach instead.

diff -u gcc-4.8-4.8.1/debian/control.m4 gcc-4.8-4.8.1/debian/control.m4
--- gcc-4.8-4.8.1/debian/control.m4
+++ gcc-4.8-4.8.1/debian/control.m4
@@ -3348,6 +3348,21 @@
  This package contains files for TARGET architecture, for use in cross-compile
  environment.
 ')`'dnl
+
+Package: libstdc++CXX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libdep(stdc++CXX_SO,), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+ifdef(`MULTIARCH', `Multi-Arch: same
+')BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains debug symbols for the libstdc++ shared library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
 ')`'dnl libcxx
 
 ifenabled(`lib32cxx',`
@@ -3368,6 +3383,20 @@
  This package contains files for TARGET architecture, for use in cross-compile
  environment.
 ')`'dnl
+
+Package: lib32stdc++CXX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libdep(stdc++CXX_SO,32), libdbgdep(gcc`'GCC_SO-dbg,32,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (32-bit debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains debug symbols for the libstdc++ shared library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
 ')`'dnl lib32cxx
 
 ifenabled(`lib64cxx',`
@@ -3391,6 +3420,20 @@
  This package contains files for TARGET architecture, for use in cross-compile
  environment.
 ')`'dnl
+
+Package: lib64stdc++CXX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libdep(stdc++CXX_SO,64), libdbgdep(gcc`'GCC_SO-dbg,64,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (64-bit debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains debug symbols for the libstdc++ shared library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
 ')`'dnl lib64cxx
 
 ifenabled(`libn32cxx',`
@@ -3414,6 +3457,20 @@
  This package contains files for TARGET architecture, for use in cross-compile
  environment.
 ')`'dnl
+
+Package: libn32stdc++CXX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libdep(stdc++CXX_SO,n32), libdbgdep(gcc`'GCC_SO-dbg,n32,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (n32 debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains debug symbols for the libstdc++ shared library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
 ')`'dnl libn32cxx
 
 ifenabled(`libx32cxx',`
@@ -3437,6 +3494,20 @@
  This package contains files for TARGET architecture, for use in cross-compile
  environment.
 ')`'dnl
+
+Package: libx32stdc++CXX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libdep(stdc++CXX_SO,x32), libdbgdep(gcc`'GCC_SO-dbg,x32,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (x32 debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains debug symbols for the libstdc++ shared library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
 ')`'dnl libx32cxx
 
 ifenabled(`libhfcxx',`
@@ -3461,6 +3532,20 @@
  This package contains files for TARGET architecture, for use in cross-compile
  environment.
 ')`'dnl
+
+Package: libhfstdc++CXX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libdep(stdc++CXX_SO,hf), libdbgdep(gcc`'GCC_SO-dbg,hf,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (hard float debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains debug symbols for the libstdc++ shared library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
 ')`'dnl libhfcxx
 
 ifenabled(`libsfcxx',`
@@ -3483,6 +3568,20 @@
 ifdef(`TARGET', `dnl
  .
  This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libsfstdc++CXX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libdep(stdc++CXX_SO,sf), libdbgdep(gcc`'GCC_SO-dbg,sf,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (soft float debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains debug symbols for the libstdc++ shared library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
  environment.
 ')`'dnl
 ')`'dnl libsfcxx
diff -u gcc-4.8-4.8.1/debian/rules.d/binary-libstdcxx.mk gcc-4.8-4.8.1/debian/rules.d/binary-libstdcxx.mk
--- gcc-4.8-4.8.1/debian/rules.d/binary-libstdcxx.mk
+++ gcc-4.8-4.8.1/debian/rules.d/binary-libstdcxx.mk
@@ -75,6 +75,7 @@
 p_libsf	= libsfstdc++$(CXX_SONAME)$(cross_lib_arch)
 p_dev	= libstdc++$(libstdc_ext)-dev$(cross_lib_arch)
 p_pic	= libstdc++$(libstdc_ext)-pic$(cross_lib_arch)
+p_dbgsym= libstdc++$(CXX_SONAME)-dbg$(cross_lib_arch)
 p_dbg	= libstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
 p_dbg64	= lib64stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
 p_dbg32	= lib32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
@@ -93,6 +94,7 @@
 d_libsf	= debian/$(p_libsf)
 d_dev	= debian/$(p_dev)
 d_pic	= debian/$(p_pic)
+d_dbgsym= debian/$(p_dbgsym)
 d_dbg	= debian/$(p_dbg)
 d_dbg64	= debian/$(p_dbg64)
 d_dbg32	= debian/$(p_dbg32)
@@ -126,9 +128,11 @@
 files_dbg = \
 	$(usr_lib)/debug/libstdc++.{a,so*}
 
+dirs_dbgsym = $(usr_lib)
+files_dbgsym =
 ifneq ($(DEB_CROSS),yes)
-  dirs_dbg  += $(PF)/share/gcc-$(BASE_VERSION)/python
-  files_dbg += $(PF)/share/gcc-$(BASE_VERSION)/python/libstdcxx
+  dirs_dbgsym  += $(PF)/share/gcc-$(BASE_VERSION)/python
+  files_dbgsym += $(PF)/share/gcc-$(BASE_VERSION)/python/libstdcxx
 endif
 
 dirs_pic = \
@@ -192,7 +196,7 @@
 	debian/dh_doclink -p$(p_l) $(p_base)
 	debian/dh_rmemptydirs -p$(p_l)
 
-	dh_strip -p$(p_l) --dbg-package=$(1)-$(BASE_VERSION)-dbg$(cross_lib_arch)
+	dh_strip -p$(p_l) --dbg-package=$(1)-dbg$(cross_lib_arch)
 	dh_compress -p$(p_l)
 	dh_fixperms -p$(p_l)
 
@@ -211,7 +215,7 @@
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
 endef
 
-define __do_libstdcxx_dbg
+define __do_libstdcxx_dbgsym
 	dh_testdir
 	dh_testroot
 	mv $(install_stamp) $(install_stamp)-tmp
@@ -235,6 +239,34 @@
 		rm -f $(d_d)/$(usr_lib$(2))/libstdc++.so.*[0-9]
 	)
 
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_d) \
+		$(call shlibdirs_to_search,$(subst $(pkg_ver),,$(subst stdc++$(CXX_SONAME),gcc$(GCC_SONAME),$(p_l))),$(2))
+	$(call cross_mangle_substvars,$(p_d))
+
+	debian/dh_doclink -p$(p_d) $(p_base)
+	debian/dh_rmemptydirs -p$(p_d)
+
+	dh_compress -p$(p_d)
+	dh_fixperms -p$(p_d)
+	$(cross_gencontrol) dh_gencontrol -p$(p_d) -- -v$(DEB_VERSION) $(common_substvars)
+	$(call cross_mangle_control,$(p_d))
+
+	dh_installdeb -p$(p_d)
+	dh_md5sums -p$(p_d)
+	dh_builddeb -p$(p_d)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+define __do_libstdcxx_dbg
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_d)
+	dh_installdirs -p$(p_d) \
+		$(usr_lib$(2))
+
 	$(if $(filter yes,$(with_debug)),
 		mv $(d)/$(usr_lib$(2))/debug $(d_d)/$(usr_lib$(2))/.;
 		rm -f $(d_d)/$(usr_lib$(2))/debug/libstdc++_pic.a
@@ -292,7 +324,10 @@
 endef
 
 do_libstdcxx = $(call __do_libstdcxx,lib$(1)stdc++$(CXX_SONAME),$(1))
-do_libstdcxx_dbg = $(call __do_libstdcxx_dbg,lib$(1)stdc++$(CXX_SONAME)$(libstdc_ext),$(1))
+define do_libstdcxx_dbg
+	$(call __do_libstdcxx_dbgsym,lib$(1)stdc++$(CXX_SONAME),$(1))
+	$(call __do_libstdcxx_dbg,lib$(1)stdc++$(CXX_SONAME)$(libstdc_ext),$(1))
+endef
 do_libstdcxx_dev = $(call __do_libstdcxx_dev,lib$(1)stdc++-$(BASE_VERSION)-dev,$(1))
 
 # ----------------------------------------------------------------------
@@ -369,6 +404,7 @@
 	rm -rf $(d_dev) $(d_pic)
 	dh_installdirs -p$(p_dev) $(dirs_dev)
 	dh_installdirs -p$(p_pic) $(dirs_pic)
+	dh_installdirs -p$(p_dbgsym) $(dirs_dbgsym)
 	dh_installdirs -p$(p_dbg) $(dirs_dbg)
 
 	: # - correct libstdc++-v3 file locations
@@ -390,6 +426,7 @@
 
 	DH_COMPAT=2 dh_movefiles -p$(p_dev) $(files_dev)
 	DH_COMPAT=2 dh_movefiles -p$(p_pic) $(files_pic)
+	DH_COMPAT=2 dh_movefiles -p$(p_dbgsym) $(files_dbgsym)
 ifeq ($(with_debug),yes)
 	DH_COMPAT=2 dh_movefiles -p$(p_dbg) $(files_dbg)
 endif
@@ -402,6 +439,7 @@
 	debian/dh_doclink -p$(p_dev) $(p_base)
 	debian/dh_doclink -p$(p_pic) $(p_base)
 	debian/dh_doclink -p$(p_dbg) $(p_base)
+	debian/dh_doclink -p$(p_dbgsym) $(p_base)
 	cp -p $(srcdir)/libstdc++-v3/ChangeLog \
 		$(d_dev)/$(docdir)/$(p_base)/C++/changelog.libstdc++
 ifeq ($(with_check),yes)
@@ -417,43 +455,44 @@
 		$(d_pic)/$(gcc_lib_dir)/libstdc++_pic.map
 
 	cp -p $(d)/$(usr_lib)/libstdc++.so.*.py \
-		$(d_dbg)/$(PF)/lib/debug/$(usr_lib)/
+		$(d_dbgsym)/$(PF)/lib/debug/$(usr_lib)/
 ifeq ($(with_libcxx),yes)
 	cp -a $(d)/$(usr_lib)/libstdc++.so.*[0-9] \
-		$(d_dbg)/$(usr_lib)/
-	dh_strip -p$(p_dbg) --keep-debug
-	rm -f $(d_dbg)/$(usr_lib)/libstdc++.so.*[0-9]
+		$(d_dbgsym)/$(usr_lib)/
+	dh_strip -p$(p_dbgsym) --keep-debug
+	rm -f $(d_dbgsym)/$(usr_lib)/libstdc++.so.*[0-9]
 endif
 
-	dh_strip -p$(p_dev) --dbg-package=$(p_dbg)
+	dh_strip -p$(p_dev) --dbg-package=$(p_dbgsym)
 ifneq ($(with_common_libs),yes)
 	: # remove the debug symbols for libstdc++ built by a newer version of GCC
-	rm -rf $(d_dbg)/usr/lib/debug/$(PF)
+	rm -rf $(d_dbgsym)/usr/lib/debug/$(PF)
 endif
 	dh_strip -p$(p_pic)
 
 ifeq ($(with_cxxdev),yes)
 	debian/dh_rmemptydirs -p$(p_dev)
 	debian/dh_rmemptydirs -p$(p_pic)
+	debian/dh_rmemptydirs -p$(p_dbgsym)
 	debian/dh_rmemptydirs -p$(p_dbg)
 endif
 
-	dh_compress -p$(p_dev) -p$(p_pic) -p$(p_dbg) -X.txt
-	dh_fixperms -p$(p_dev) -p$(p_pic) -p$(p_dbg)
+	dh_compress -p$(p_dev) -p$(p_pic) -p$(p_dbgsym) -p$(p_dbg) -X.txt
+	dh_fixperms -p$(p_dev) -p$(p_pic) -p$(p_dbgsym) -p$(p_dbg)
 # XXX: what about biarchn32?
 #ifeq ($(biarch64),yes)
 #	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) -Xlib64
 #else
 #	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) -Xlib32/debug
 #endif
-	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg)
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbgsym) $(p_dbg)
 	$(call cross_mangle_substvars,$(p_dbg))
-	$(cross_gencontrol) dh_gencontrol -p$(p_dev) -p$(p_pic) -p$(p_dbg) \
+	$(cross_gencontrol) dh_gencontrol -p$(p_dev) -p$(p_pic) -p$(p_dbgsym) -p$(p_dbg) \
 		-- -v$(DEB_VERSION) $(common_substvars)
 
-	dh_installdeb -p$(p_dev) -p$(p_pic) -p$(p_dbg)
-	dh_md5sums -p$(p_dev) -p$(p_pic) -p$(p_dbg)
-	dh_builddeb -p$(p_dev) -p$(p_pic) -p$(p_dbg)
+	dh_installdeb -p$(p_dev) -p$(p_pic) -p$(p_dbgsym) -p$(p_dbg)
+	dh_md5sums -p$(p_dev) -p$(p_pic) -p$(p_dbgsym) -p$(p_dbg)
+	dh_builddeb -p$(p_dev) -p$(p_pic) -p$(p_dbgsym) -p$(p_dbg)
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
 
-- 
Hi! I'm a .signature virus! Copy me into your ~/.signature to help me spread!

Reply to: