Control: reopen -1 Control: reassign -1 src:gcc-8 Hi Matthias,
you requested that I send my unfinished work and here it goes. I've seen that you have quickly applied my previous patches towards this matter and would like to thank you. The attached patch was last tested on 8-20180402-1. I performed the following test methods thus far: * native build (reduced using nolang=...) * lintian * piuparts * looking at package contents * manually installing and testing the resulting packages (thus discovering #891289) Caveats: * The patch still contains temporary Breaks/Replaces versions. You'll find them by searching for /0TODO/ in debian/control.m4. These need to be updated before uploading (as we are moving files to new packages). * You'll go through NEW of course. * I did not perform cross builds or cross compiler builds. * I did not perform non-dfsg builds. * I did not perform gcc-snapshot builds. I had to make a number of bike coloring decision during the implementation. If you want something different, I'm happy to change that and will try to update the patch in a timely manner. * "arch_gnutype_map" gets passed to control.m4 as "ARCH_GNUTYPE_MAP". * The target suffix of the new packages is passed as a substvar called "target:suffix". * The make variables for these packages are called "p_${tool}n" and "d_${tool}n". * The new targets are called "$(binary_stamp)-$(tool)-nat". I would like to thank James Clarke his advice during the planning stage and for reviewing an earlier version of this patch. I'd also be interested in learning which test build configurations are particularly relevant to you. I'v Cced d-cross@l.d.o to have more eyeballs on this difficult piece of code. Helmut
--- a/debian/control.m4 +++ b/debian/control.m4 @@ -35,6 +35,13 @@ ')) define(`TARGET_PACKAGE',`X-DH-Build-For-Type: target ') +define(`_for_each',`ifelse(`$3',`',`',`pushdef(`$1',`$3')$2`'popdef(`$1')`'$0(`$1',`$2',shift(shift(shift($@))))')') +define(`for_each_arch',`_for_each(`_arch',`dnl +pushdef(`arch_deb',`patsubst(_arch,`=.*',`')')dnl +pushdef(`arch_gnu',`patsubst(_arch,`.*=',`')')dnl +pushdef(`arch_gnusuffix',`-patsubst(arch_gnu,`_',`-')')dnl +$1`'popdef(`arch_gnusuffix')popdef(`arch_gnu')popdef(`arch_deb')',dnl +patsubst(ARCH_GNUTYPE_MAP,`\s+',`,'))') divert`'dnl dnl -------------------------------------------------------------------------- @@ -700,21 +707,22 @@ ')`'dnl x32dev ')`'dnl cdev -ifenabled(`cdev',` -Package: gcc`'PV`'TS -Architecture: any -ifdef(`TARGET',`Multi-Arch: foreign -')dnl +ifenabled(`cdev',`dnl +for_each_arch(` +Package: gcc`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign Section: devel Priority: optional -Depends: cpp`'PV`'TS (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,') +Depends: cpp`'PV`'arch_gnusuffix (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,') ifenabled(`gccxbase',` BASEDEP,') ${dep:libcc1}, - binutils`'TS (>= ${binutils:Version}), + binutils`'arch_gnusuffix (>= ${binutils:Version}), ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} Recommends: ${dep:libcdev} -Replaces: gccgo-8 (<< ${gcc:Version}), cpp`'PV`'TS (<< 7.1.1-8) -Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), +Replaces: gccgo-8 (<< ${gcc:Version}), cpp`'PV`'arch_gnusuffix (<< 7.1.1-8), gcc`'PV (<< 999:0TODO) +Breaks: cpp`'PV (<< 0TODO) +Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), gcc`'PV-locales (>= ${gcc:SoftVersion}), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), libdbgdep(gomp`'GOMP_SO-dbg,), @@ -729,15 +737,44 @@ ')`'dnl libdbgdep(mpx`'MPX_SO-dbg,), libdbgdep(quadmath`'QMATH_SO-dbg,) -Provides: c-compiler`'TS +Provides: c-compiler`'arch_gnusuffix ifdef(`TARGET',`Conflicts: gcc-multilib ')`'dnl BUILT_USING`'dnl -Description: GNU C compiler`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') +Description: GNU C compiler for the arch_gnu architecture + This is the GNU C compiler for the arch_gnu architecture, a fairly portable + optimizing compiler for C. +')`'dnl for_each_arch +ifdef(`TARGET',`',` +Package: gcc`'PV +Architecture: any +Section: devel +Priority: optional +Depends: gcc`'PV`'${target:suffix} (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,') + ifenabled(`gccxbase',` BASEDEP,') + binutils (>= ${binutils:Version}), + ${misc:Depends} +Recommends: ${dep:libcdev} +Replaces: gccgo-8 (<< ${gcc:Version}), cpp`'PV (<< 7.1.1-8) +Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), + gcc`'PV-locales (>= ${gcc:SoftVersion}), + libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), + libdbgdep(gomp`'GOMP_SO-dbg,), + libdbgdep(itm`'ITM_SO-dbg,), + libdbgdep(atomic`'ATOMIC_SO-dbg,), + libdbgdep(asan`'ASAN_SO-dbg,), + libdbgdep(lsan`'LSAN_SO-dbg,), + libdbgdep(tsan`'TSAN_SO-dbg,), + libdbgdep(ubsan`'UBSAN_SO-dbg,), +ifenabled(`libvtv',`',` + libdbgdep(vtv`'VTV_SO-dbg,), +')`'dnl + libdbgdep(mpx`'MPX_SO-dbg,), + libdbgdep(quadmath`'QMATH_SO-dbg,) +Provides: c-compiler +BUILT_USING`'dnl +Description: GNU C compiler This is the GNU C compiler, a fairly portable optimizing compiler for C. -ifdef(`TARGET', `dnl - . - This package contains C cross-compiler for TARGET architecture. ')`'dnl ifenabled(`multilib',` @@ -800,17 +837,35 @@ This is the GNU C compiler, a fairly portable optimizing compiler for C. ')`'dnl cdev -ifenabled(`cdev',` -Package: cpp`'PV`'TS -Architecture: any -ifdef(`TARGET',`Multi-Arch: foreign -')dnl +ifenabled(`cdev',`dnl +for_each_arch(` +Package: cpp`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign Section: ifdef(`TARGET',`devel',`interpreters') Priority: optional Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion}) +Replaces: gccgo-8 (<< ${gcc:Version}), cpp`'PV (<< 999:0TODO) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3), cpp`'PV (<< 0TODO) +BUILT_USING`'dnl +Description: GNU C preprocessor for arch_gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor configured for arch_gnu architecture but not + the compiler. +')`'dnl for_each_arch +ifdef(`TARGET',`',` +Package: cpp`'PV +Architecture: any +Section: interpreters +Priority: optional +Depends: BASEDEP, cpp`'PV`'${target:suffix} (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion}) Replaces: gccgo-8 (<< ${gcc:Version}) -Breaks: libmagics++-dev (<< 2.28.0-4)ifdef(`TARGET',`',`, hardening-wrapper (<< 2.8+nmu3)') +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) BUILT_USING`'dnl Description: GNU C preprocessor A macro processor that is used automatically by the GNU C compiler @@ -818,9 +873,6 @@ . This package has been separated from gcc for the benefit of those who require the preprocessor but not the compiler. -ifdef(`TARGET', `dnl - . - This package contains preprocessor configured for TARGET architecture. ')`'dnl ifdef(`TARGET', `', ` @@ -852,22 +904,33 @@ ')`'dnl cdev ifenabled(`c++',` -ifenabled(`c++dev',` -Package: g++`'PV`'TS +ifenabled(`c++dev',`dnl +for_each_arch(` +Package: g++`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends} +Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(stdc++CXX_SO`'PV-dbg,) +Breaks: g++`'PV (<< 0TODO) +Replaces: g++`'PV (<< 999:0TODO) +BUILT_USING`'dnl +Description: GNU C++ compiler for arch_gnu + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This compiler produces binaries for arch_gnu. +')`'dnl for_each_arch +ifdef(`TARGET',`',` +Package: g++`'PV Architecture: any -ifdef(`TARGET',`Multi-Arch: foreign -')dnl Section: devel Priority: optional -Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends} +Depends: BASEDEP, g++`'PV`'${target:suffix} (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${misc:Depends} Provides: c++-compiler`'TS`'ifdef(`TARGET)',`',`, c++abi2-dev') Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(stdc++CXX_SO`'PV-dbg,) -BUILT_USING`'dnl Description: GNU C++ compiler`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. -ifdef(`TARGET', `dnl - . - This package contains C++ cross-compiler for TARGET architecture. ')`'dnl ifenabled(`multilib',` --- a/debian/rules.conf +++ b/debian/rules.conf @@ -634,6 +634,7 @@ -DTARGET_TOOL_BUILD_DEP='$(TARGET_TOOL_BUILD_DEP)' \ -DPHOBOS_BUILD_DEP="$(PHOBOS_BUILD_DEP)" \ -DOFFLOAD_BUILD_DEP="$(OFFLOAD_BUILD_DEP)" \ + -DARCH_GNUTYPE_MAP="$(arch_gnutype_map)" \ -DMULTILIB_ARCHS="$(multilib_archs)" \ -DNEON_ARCHS="$(neon_archs)" \ -DTP=$(TP) \ @@ -1020,6 +1021,7 @@ echo 'dep:libcxxbiarchdbg=$(libstdc++biarchdbg)'; \ echo 'dep:libgnat=$(LIBGNAT_DEP)'; \ echo 'base:Breaks=$(BASE_BREAKS)'; \ + echo 'target:suffix=-$(subst _,-,$(TARGET_ALIAS))'; \ ) > debian/substvars.local.tmp ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs))) ( \ --- a/debian/rules.d/binary-cpp.mk +++ b/debian/rules.d/binary-cpp.mk @@ -1,5 +1,8 @@ ifneq ($(DEB_STAGE),rtlibs) - arch_binaries := $(arch_binaries) cpp + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) cpp + endif + arch_binaries := $(arch_binaries) cpp-nat ifneq ($(DEB_CROSS),yes) ifneq ($(GFDL_INVARIANT_FREE),yes) indep_binaries := $(indep_binaries) cpp-doc @@ -7,22 +10,59 @@ endif endif +dirs_cppn = \ + $(docdir) \ + $(PF)/share/man/man1 \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + dirs_cpp = \ $(docdir) \ $(PF)/share/man/man1 \ $(PF)/bin \ - $(gcc_lexec_dir) + usr/share/lintian/overrides -files_cpp = \ +files_cppn = \ $(PF)/bin/$(cmd_prefix)cpp$(pkg_ver) \ $(gcc_lexec_dir)/cc1 ifneq ($(GFDL_INVARIANT_FREE),yes) - files_cpp += \ + files_cppn += \ $(PF)/share/man/man1/$(cmd_prefix)cpp$(pkg_ver).1 endif # ---------------------------------------------------------------------- +$(binary_stamp)-cpp-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cppn) + dh_installdirs -p$(p_cppn) $(dirs_cppn) + $(dh_compat2) dh_movefiles -p$(p_cppn) $(files_cppn) + + echo '$(p_cppn) binary: hardening-no-pie' \ + > $(d_cppn)/usr/share/lintian/overrides/$(p_cppn) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_cppn) binary: binary-without-manpage' \ + >> $(d_cppn)/usr/share/lintian/overrides/$(p_cppn) +endif + + debian/dh_doclink -p$(p_cppn) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cppn) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + dwz $(d_cppn)/$(gcc_lexec_dir)/cc1 +endif + dh_strip -p$(p_cppn) \ + $(if $(unstripped_exe),-X/cc1) + dh_shlibdeps -p$(p_cppn) + + echo $(p_cppn) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + $(binary_stamp)-cpp: $(install_stamp) dh_testdir dh_testroot @@ -30,21 +70,13 @@ rm -rf $(d_cpp) dh_installdirs -p$(p_cpp) $(dirs_cpp) - $(dh_compat2) dh_movefiles -p$(p_cpp) $(files_cpp) -ifeq ($(unprefixed_names),yes) ln -sf $(cmd_prefix)cpp$(pkg_ver) \ $(d_cpp)/$(PF)/bin/cpp$(pkg_ver) - ifneq ($(GFDL_INVARIANT_FREE),yes) +ifneq ($(GFDL_INVARIANT_FREE),yes) ln -sf $(cmd_prefix)cpp$(pkg_ver).1 \ $(d_cpp)/$(PF)/share/man/man1/cpp$(pkg_ver).1 - endif -endif - - mkdir -p $(d_cpp)/usr/share/lintian/overrides - echo '$(p_cpp) binary: hardening-no-pie' \ - > $(d_cpp)/usr/share/lintian/overrides/$(p_cpp) -ifeq ($(GFDL_INVARIANT_FREE),yes) +else echo '$(p_cpp) binary: binary-without-manpage' \ >> $(d_cpp)/usr/share/lintian/overrides/$(p_cpp) endif @@ -52,13 +84,6 @@ debian/dh_doclink -p$(p_cpp) $(p_xbase) debian/dh_rmemptydirs -p$(p_cpp) -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz $(d_cpp)/$(gcc_lexec_dir)/cc1 -endif - dh_strip -p$(p_cpp) \ - $(if $(unstripped_exe),-X/cc1) - dh_shlibdeps -p$(p_cpp) - echo $(p_cpp) >> debian/arch_binaries trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- a/debian/rules.d/binary-cxx.mk +++ b/debian/rules.d/binary-cxx.mk @@ -2,21 +2,32 @@ ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) arch_binaries := $(arch_binaries) cxx-multi endif - arch_binaries := $(arch_binaries) cxx + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) cxx + endif + arch_binaries := $(arch_binaries) cxx-nat endif +dirs_cxxn = \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + dirs_cxx = \ $(docdir)/$(p_xbase)/C++ \ $(PF)/bin \ $(PF)/share/info \ $(gcc_lexec_dir) \ - $(PF)/share/man/man1 -files_cxx = \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +files_cxxn = \ $(PF)/bin/$(cmd_prefix)g++$(pkg_ver) \ $(gcc_lexec_dir)/cc1plus ifneq ($(GFDL_INVARIANT_FREE),yes) - files_cxx += \ + files_cxxn += \ $(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1 endif @@ -24,6 +35,35 @@ d_cxx_m = debian/$(p_cxx_m) # ---------------------------------------------------------------------- +$(binary_stamp)-cxx-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxxn) + dh_installdirs -p$(p_cxxn) $(dirs_cxxn) + $(dh_compat2) dh_movefiles -p$(p_cxxn) $(files_cxxn) + + echo '$(p_cxxn) binary: hardening-no-pie' \ + > $(d_cxxn)/usr/share/lintian/overrides/$(p_cxxn) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_cxxn) binary: binary-without-manpage' \ + >> $(d_cxxn)/usr/share/lintian/overrides/$(p_cxxn) +endif + + debian/dh_doclink -p$(p_cxxn) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cxxn) + + dh_shlibdeps -p$(p_cxxn) +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + dwz \ + $(d_cxxn)/$(gcc_lexec_dir)/cc1plus +endif + dh_strip -p$(p_cxxn) $(if $(unstripped_exe),-X/cc1plus) + echo $(p_cxxn) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + $(binary_stamp)-cxx: $(install_stamp) dh_testdir dh_testroot @@ -31,21 +71,13 @@ rm -rf $(d_cxx) dh_installdirs -p$(p_cxx) $(dirs_cxx) - $(dh_compat2) dh_movefiles -p$(p_cxx) $(files_cxx) -ifeq ($(unprefixed_names),yes) ln -sf $(cmd_prefix)g++$(pkg_ver) \ $(d_cxx)/$(PF)/bin/g++$(pkg_ver) - ifneq ($(GFDL_INVARIANT_FREE),yes) +ifneq ($(GFDL_INVARIANT_FREE),yes) ln -sf $(cmd_prefix)g++$(pkg_ver).1.gz \ $(d_cxx)/$(PF)/share/man/man1/g++$(pkg_ver).1.gz - endif -endif - - mkdir -p $(d_cxx)/usr/share/lintian/overrides - echo '$(p_cxx) binary: hardening-no-pie' \ - > $(d_cxx)/usr/share/lintian/overrides/$(p_cxx) -ifeq ($(GFDL_INVARIANT_FREE),yes) +else echo '$(p_cxx) binary: binary-without-manpage' \ >> $(d_cxx)/usr/share/lintian/overrides/$(p_cxx) endif @@ -56,12 +88,6 @@ $(d_cxx)/$(docdir)/$(p_xbase)/C++/changelog debian/dh_rmemptydirs -p$(p_cxx) - dh_shlibdeps -p$(p_cxx) -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ - $(d_cxx)/$(gcc_lexec_dir)/cc1plus -endif - dh_strip -p$(p_cxx) $(if $(unstripped_exe),-X/cc1plus) echo $(p_cxx) >> debian/arch_binaries trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- a/debian/rules.d/binary-gcc.mk +++ b/debian/rules.d/binary-gcc.mk @@ -6,7 +6,10 @@ arch_binaries := $(arch_binaries) gcc-plugindev endif - arch_binaries := $(arch_binaries) gcc + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) gcc + endif + arch_binaries := $(arch_binaries) gcc-nat ifneq ($(DEB_CROSS),yes) ifneq ($(GFDL_INVARIANT_FREE),yes) @@ -26,15 +29,21 @@ # not all files $(PF)/include/*.h are part of gcc, # but it becomes difficult to name all these files ... -dirs_gcc = \ - $(docdir)/$(p_xbase)/{gcc,libssp,gomp,itm,quadmath,sanitizer,mpx} \ +dirs_gccn = \ $(PF)/bin \ $(gcc_lexec_dir) \ $(gcc_lib_dir)/{include,include-fixed} \ - $(PF)/share/man/man1 $(libgcc_dir) + $(PF)/share/man/man1 $(libgcc_dir) \ + usr/share/lintian/overrides + +dirs_gcc = \ + $(docdir)/$(p_xbase)/{gcc,libssp,gomp,itm,quadmath,sanitizer,mpx} \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides # XXX: what about triarch mapping? -files_gcc = \ +files_gccn = \ $(PF)/bin/$(cmd_prefix){gcc,gcov,gcov-tool,gcov-dump}$(pkg_ver) \ $(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \ $(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \ @@ -43,15 +52,15 @@ && echo $(gcc_lib_dir)/SYSCALLS.c.X) ifeq ($(with_libcc1_plugin),yes) - files_gcc += \ + files_gccn += \ $(gcc_lib_dir)/plugin/libc[cp]1plugin.so{,.0,.0.0.0} endif -files_gcc += \ +files_gccn += \ $(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0} ifeq ($(DEB_STAGE),stage1) - files_gcc += \ + files_gccn += \ $(gcc_lib_dir)/include \ $(shell for h in \ README limits.h syslimits.h; \ @@ -62,7 +71,7 @@ endif ifneq ($(GFDL_INVARIANT_FREE),yes) - files_gcc += \ + files_gccn += \ $(PF)/share/man/man1/$(cmd_prefix){gcc,gcov}$(pkg_ver).1 \ $(PF)/share/man/man1/$(cmd_prefix)gcov-{dump,tool}$(pkg_ver).1 endif @@ -83,6 +92,59 @@ d_tst = debian/$(p_tst) # ---------------------------------------------------------------------- +$(binary_stamp)-gcc-nat: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gccn) + dh_installdirs -p$(p_gccn) $(dirs_gccn) + +ifeq ($(with_gomp),yes) + mv $(d)/$(usr_lib)/libgomp*.spec $(d_gccn)/$(gcc_lib_dir)/ +endif +ifeq ($(with_itm),yes) + mv $(d)/$(usr_lib)/libitm*.spec $(d_gccn)/$(gcc_lib_dir)/ +endif +ifeq ($(with_asan),yes) + mv $(d)/$(usr_lib)/libsanitizer*.spec $(d_gccn)/$(gcc_lib_dir)/ +endif +ifeq ($(with_mpx),yes) + mv $(d)/$(usr_lib)/libmpx.spec $(d_gccn)/$(gcc_lib_dir)/ +endif +ifeq ($(with_cc1),yes) + rm -f $(d)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so + dh_link -p$(p_gccn) \ + /$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so.$(CC1_SONAME) \ + /$(gcc_lib_dir)/libcc1.so +endif + + $(dh_compat2) dh_movefiles -p$(p_gccn) $(files_gccn) + +# dh_installdebconf + debian/dh_doclink -p$(p_gccn) $(p_xbase) + + echo '$(p_gccn) binary: hardening-no-pie' \ + > $(d_gccn)/usr/share/lintian/overrides/$(p_gccn) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gccn) binary: binary-without-manpage' \ + >> $(d_gccn)/usr/share/lintian/overrides/$(p_gccn) +endif + + debian/dh_rmemptydirs -p$(p_gccn) +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + dwz \ + $(d_gccn)/$(gcc_lexec_dir)/lto1 \ + $(d_gccn)/$(gcc_lexec_dir)/lto-wrapper \ + $(d_gccn)/$(gcc_lexec_dir)/collect2 +endif + dh_strip -p$(p_gccn) \ + $(if $(unstripped_exe),-X/lto1) + dh_shlibdeps -p$(p_gccn) + echo $(p_gccn) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + $(binary_stamp)-gcc: $(install_dependencies) dh_testdir dh_testroot @@ -102,12 +164,10 @@ $(d_gcc)/$(docdir)/$(p_xbase)/libssp/changelog endif ifeq ($(with_gomp),yes) - mv $(d)/$(usr_lib)/libgomp*.spec $(d_gcc)/$(gcc_lib_dir)/ cp -p $(srcdir)/libgomp/ChangeLog \ $(d_gcc)/$(docdir)/$(p_xbase)/gomp/changelog endif ifeq ($(with_itm),yes) - mv $(d)/$(usr_lib)/libitm*.spec $(d_gcc)/$(gcc_lib_dir)/ cp -p $(srcdir)/libitm/ChangeLog \ $(d_gcc)/$(docdir)/$(p_xbase)/itm/changelog endif @@ -116,40 +176,31 @@ $(d_gcc)/$(docdir)/$(p_xbase)/quadmath/changelog endif ifeq ($(with_asan),yes) - mv $(d)/$(usr_lib)/libsanitizer*.spec $(d_gcc)/$(gcc_lib_dir)/ cp -p $(srcdir)/libsanitizer/ChangeLog \ $(d_gcc)/$(docdir)/$(p_xbase)/sanitizer/changelog endif ifeq ($(with_mpx),yes) - mv $(d)/$(usr_lib)/libmpx.spec $(d_gcc)/$(gcc_lib_dir)/ cp -p $(srcdir)/libmpx/ChangeLog \ $(d_gcc)/$(docdir)/$(p_xbase)/mpx/changelog endif -ifeq ($(with_cc1),yes) - rm -f $(d)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so - dh_link -p$(p_gcc) \ - /$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so.$(CC1_SONAME) \ - /$(gcc_lib_dir)/libcc1.so -endif - $(dh_compat2) dh_movefiles -p$(p_gcc) $(files_gcc) - -ifeq ($(unprefixed_names),yes) for i in gcc gcov gcov-dump gcov-tool gcc-ar gcc-nm gcc-ranlib; do \ ln -sf $(cmd_prefix)$$i$(pkg_ver) \ $(d_gcc)/$(PF)/bin/$$i$(pkg_ver); \ done - ifneq ($(GFDL_INVARIANT_FREE),yes) +ifneq ($(GFDL_INVARIANT_FREE),yes) for i in gcc gcov gcov-dump gcov-tool; do \ ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \ $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ done - endif +else + echo '$(p_gcc) binary: binary-without-manpage' \ + >> $(d_gcc)/usr/share/lintian/overrides/$(p_gcc) +endif for i in gcc-ar gcc-nm gcc-ranlib; do \ ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \ $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ done -endif # dh_installdebconf debian/dh_doclink -p$(p_gcc) $(p_xbase) @@ -169,28 +220,9 @@ echo ""; \ cat $(builddir)/gcc/.bad_compare; \ ) > $(d_gcc)/$(docdir)/$(p_xbase)/BOOTSTRAP_COMPARISION_FAILURE; \ - else \ - true; \ fi - mkdir -p $(d_gcc)/usr/share/lintian/overrides - echo '$(p_gcc) binary: hardening-no-pie' \ - > $(d_gcc)/usr/share/lintian/overrides/$(p_gcc) -ifeq ($(GFDL_INVARIANT_FREE),yes) - echo '$(p_gcc) binary: binary-without-manpage' \ - >> $(d_gcc)/usr/share/lintian/overrides/$(p_gcc) -endif - debian/dh_rmemptydirs -p$(p_gcc) -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ - $(d_gcc)/$(gcc_lexec_dir)/lto1 \ - $(d_gcc)/$(gcc_lexec_dir)/lto-wrapper \ - $(d_gcc)/$(gcc_lexec_dir)/collect2 -endif - dh_strip -p$(p_gcc) \ - $(if $(unstripped_exe),-X/lto1) - dh_shlibdeps -p$(p_gcc) echo $(p_gcc) >> debian/arch_binaries trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- a/debian/rules2 +++ b/debian/rules2 @@ -1821,6 +1823,10 @@ pkg_ver := -$(BASE_VERSION) endif +p_gccn = gcc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_cppn = cpp$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_cxxn = g++$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) + # if native or rtlibs build ifeq ($(if $(filter yes,$(DEB_CROSS)),$(if $(filter rtlibs,$(DEB_STAGE)),native,cross),native),native) p_base = gcc$(pkg_ver)-base @@ -1854,9 +1860,12 @@ d_base = debian/$(p_base) d_xbase = debian/$(p_xbase) d_gcc = debian/$(p_gcc) +d_gccn = debian/$(p_gccn) d_cpp = debian/$(p_cpp) +d_cppn = debian/$(p_cppn) d_cppd = debian/$(p_cppd) d_cxx = debian/$(p_cxx) +d_cxxn = debian/$(p_cxxn) d_doc = debian/$(p_doc) d_lgcc = debian/$(p_lgcc) d_hppa64= debian/$(p_hppa64)