Re: draft implementation for a Multi-Arch: foreign interface to gcc
Control: reassign -1 src:gcc-10
Hi Matthias,
On Sun, Sep 30, 2018 at 02:46:04PM +0200, Helmut Grohne wrote:
> > - please complete the patch to cover all frontends. while these
> > might not be necessary for your bootstrap effort, I'd like to
> > have all frontends be covered in an uniform way.
>
> I've worked on this. It now covers cpp, cxx, d, fortran, gcc, go and
> objc. Notably, it does not cover ada, brig or objc++. ada looks
> complex. brig depends on hsail-tools, which is not Multi-Arch: foreign.
> So we cannot do brig at this time. objc++ looks manageable.
I've completed objc++, which was indeed easy. The new gm2 frontend is
also missing.
I've also split up the big patch into individual patches to make them
easier to use/review/select. The updated patch stack for gcc-10 is
applied. Beware that the patch stack introduces Breaks and Replaces. The
versions in these Breaks and Replaces is always "0TODO" or "999:0TODO"
and needs to be replaced with the version used for applying.
> > - for testing:
I've performed a regular build and inspected the resulting lintian
warnings and package contents.
I've also attempted building cross compilers using the patch stack by
adding the stack to a fork of rebootstrap.
I've not attempted cross building gcc with the patch stack, because
cross builds are known broken:
* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92336
* https://gcc.gnu.org/legacy-ml/gcc-help/2015-01/msg00111.html
Both of these issues are reproducible on gcc-9 and gcc-10 in unstable.
Moving forward:
There is more urgency for this feature now, because we need to run 64bit
executables for building larger packages on 32bit architectures. There
are two routes:
* Moving this stack forward and going Multi-Arch.
* Introducing yet another pile of compiler executables for this purpose
(YunQiang Su's appraoch).
I believe that the utility for any of these -for-host variants is very
limited except for c, cxx and fortran. I recommend not applying the
other patches (d, go, objc, objcxx), but I have attached them for
reference.
How to apply the patch stack:
0001: Only makes sense if you apply one of 0002, 0003, 0004, 0005, 0006,
0007, 0009, 0010 or 0011.
0002: cpp-$v-$triplet. Requires 0001. Update Breaks+Replaces.
0003: gcc-$v-$triplet. Requires 0001 and 0002. Updates Breaks+Replaces.
0004: g++-$v-$triplet. Requires 0001, 0002, and 0003. Update
Breaks+Replaces.
0005: gfortran-$v-$triplet. Requires 0001. Update Breaks+Replaces.
0006: gdc-$v-$triplet. Requires 0001. Update Breaks+Replaces.
0007: gccgo-$v-$triplet: Requires 0001. Update Breaks+Replaces.
0008: Cleanup. Consider applying right away.
0009: Cleanup. Consider applying right away.
0010: gobjc-$v-$triplet: Requires 0001 and 0009. Update Breaks+Replaces.
0011: gobjc++-$v-$triplet. Requires 0001, 0010 and 0011. Update
Breaks+Replaces.
I hope that this allows us to move forward. I've also Cced
debian-cross@l.d.o to elicit more review and testing.
Helmut
>From 069536e9afe1082c29a3b2da9e6f6b156f44e9fc Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:32:46 +0100
Subject: [PATCH 01/11] add support code for gcc-for-host
control.m4 macro for_each_arch iterates over all known architectures and
substitutes arch_deb (the Debian architecture name), arch_gnu (the GNU
triplet) and arch_gnusuffix (a package name suffix encoding the
architecture) variables.
The substitution variable target:suffix can be used to interpolate the
current target architecture suffix for dependencies from the regular
tool packages on architecture-qualified tool packages.
---
debian/control.m4 | 7 +++++++
debian/rules.conf | 2 ++
2 files changed, 9 insertions(+)
diff --git a/debian/control.m4 b/debian/control.m4
index bbc71a2..94a9741 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -39,6 +39,13 @@ define(`BUILT_USING', ifelse(add_built_using,yes,`Built-Using: ${Built-Using}
'))
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 --------------------------------------------------------------------------
diff --git a/debian/rules.conf b/debian/rules.conf
index 441c0e8..6149073 100644
--- a/debian/rules.conf
+++ b/debian/rules.conf
@@ -686,6 +686,7 @@ ctrl_flags += \
-DPHOBOS_BUILD_DEP="$(PHOBOS_BUILD_DEP)" \
-DGM2_BUILD_DEP="$(GM2_BUILD_DEP)" \
-DOFFLOAD_BUILD_DEP="$(OFFLOAD_BUILD_DEP)" \
+ -DARCH_GNUTYPE_MAP="$(arch_gnutype_map)" \
-DMULTILIB_ARCHS="$(multilib_archs)" \
-DNEON_ARCHS="$(neon_archs)" \
-DTP=$(TP) \
@@ -1095,6 +1096,7 @@ substvars-file: control-file
echo 'dep:libgnat=$(LIBGNAT_DEP)'; \
echo 'base:Breaks=$(BASE_BREAKS)'; \
echo 'libgcc:Breaks=$(LIBGCC_BREAKS)'; \
+ echo 'target:suffix=-$(subst _,-,$(TARGET_ALIAS))'; \
) > debian/substvars.local.tmp
ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs)))
( \
--
2.25.1
>From 0b3bfbb124921a65e1c9d83639f400e8b5af8b57 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:37:47 +0100
Subject: [PATCH 02/11] introduce cpp-$v-$triplet
---
debian/control.m4 | 33 ++++++++++++-----
debian/rules.d/binary-cpp.mk | 69 ++++++++++++++++++++++++------------
debian/rules2 | 3 ++
3 files changed, 74 insertions(+), 31 deletions(-)
diff --git a/debian/control.m4 b/debian/control.m4
index 94a9741..e870706 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -1119,16 +1119,34 @@ Description: GNU C compiler (cross compiler for hppa64)
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})
-Breaks: libmagics++-dev (<< 2.28.0-4)ifdef(`TARGET',`',`, hardening-wrapper (<< 2.8+nmu3)')
+Replaces: 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})
+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
@@ -1136,9 +1154,6 @@ Description: GNU C preprocessor
.
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', `', `
diff --git a/debian/rules.d/binary-cpp.mk b/debian/rules.d/binary-cpp.mk
index cbeeb26..c65f999 100644
--- 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
+ arch_binaries := $(arch_binaries) cpp-nat
+ ifeq ($(unprefixed_names),yes)
+ arch_binaries := $(arch_binaries) cpp
+ endif
ifneq ($(DEB_CROSS),yes)
ifneq ($(GFDL_INVARIANT_FREE),yes)
indep_binaries := $(indep_binaries) cpp-doc
@@ -7,22 +10,59 @@ ifneq ($(DEB_STAGE),rtlibs)
endif
endif
-dirs_cpp = \
+dirs_cppn = \
$(docdir) \
$(PF)/share/man/man1 \
$(PF)/bin \
- $(gcc_lexec_dir)
+ $(gcc_lexec_dir) \
+ usr/share/lintian/overrides
+
+dirs_cpp = \
+ $(docdir) \
+ $(PF)/bin \
+ $(PF)/share/man/man1 \
+ 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 @@ $(binary_stamp)-cpp: $(install_stamp)
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 @@ endif
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)
diff --git a/debian/rules2 b/debian/rules2
index 98947cd..ec85477 100644
--- a/debian/rules2
+++ b/debian/rules2
@@ -1980,6 +1980,8 @@ ifeq ($(versioned_packages),yes)
pkg_ver := -$(BASE_VERSION)
endif
+p_cppn = cpp$(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
@@ -2014,6 +2016,7 @@ d_base = debian/$(p_base)
d_xbase = debian/$(p_xbase)
d_gcc = debian/$(p_gcc)
d_cpp = debian/$(p_cpp)
+d_cppn = debian/$(p_cppn)
d_cppd = debian/$(p_cppd)
d_cxx = debian/$(p_cxx)
d_doc = debian/$(p_doc)
--
2.25.1
>From a3f1ea23b2d993e43e650c50f60cffdaa652cc05 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:42:26 +0100
Subject: [PATCH 03/11] introduce gcc-$v-$triplet
---
debian/control.m4 | 57 +++++++++++++-----
debian/rules.d/binary-gcc.mk | 108 +++++++++++++++++++++++------------
debian/rules2 | 2 +
3 files changed, 115 insertions(+), 52 deletions(-)
diff --git a/debian/control.m4 b/debian/control.m4
index e870706..e16e4b8 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -1020,21 +1020,22 @@ Description: GCC support library (x32 development files)
')`'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: cpp`'PV`'TS (<< 7.1.1-8)
-Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}),
+Replaces: cpp`'PV`'arch_gnusuffix (<< 7.1.1-8), gcc`'PV (<< 999:0TODO)
+Breaks: gcc`'PV (<< 0TODO)
+Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}),
gcc`'PV-locales (>= ${gcc:SoftVersion}),
libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}),
libdbgdep(gomp`'GOMP_SO-dbg,),
@@ -1048,15 +1049,43 @@ ifenabled(`libvtv',`',`
libdbgdep(vtv`'VTV_SO-dbg,),
')`'dnl
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: 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(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',`
diff --git a/debian/rules.d/binary-gcc.mk b/debian/rules.d/binary-gcc.mk
index 11bf871..bcd5461 100644
--- a/debian/rules.d/binary-gcc.mk
+++ b/debian/rules.d/binary-gcc.mk
@@ -6,7 +6,10 @@ ifneq ($(DEB_STAGE),rtlibs)
arch_binaries := $(arch_binaries) gcc-plugindev
endif
- arch_binaries := $(arch_binaries) gcc
+ arch_binaries := $(arch_binaries) gcc-nat
+ ifeq ($(unprefixed_names),yes)
+ arch_binaries := $(arch_binaries) gcc
+ endif
ifneq ($(DEB_CROSS),yes)
ifneq ($(GFDL_INVARIANT_FREE),yes)
@@ -26,15 +29,21 @@ endif
# 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} \
+dirs_gccn = \
$(PF)/bin \
$(gcc_lexec_dir) \
$(gcc_lib_dir)/include \
- $(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} \
+ $(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,lto-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,20 +52,20 @@ files_gcc = \
&& 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
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 \
$(PF)/share/man/man1/$(cmd_prefix)lto-dump$(pkg_ver).1
@@ -78,6 +87,56 @@ p_tst = gcc$(pkg_ver)-test-results
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_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
@@ -97,12 +156,10 @@ ifeq ($(with_libssp),yes)
$(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
@@ -111,35 +168,24 @@ ifeq ($(with_qmath),yes)
$(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_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 lto-dump; 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 lto-dump; do \
ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \
$(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \
done
- endif
+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)
@@ -159,28 +205,14 @@ endif
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)
diff --git a/debian/rules2 b/debian/rules2
index ec85477..ad5fee4 100644
--- a/debian/rules2
+++ b/debian/rules2
@@ -1980,6 +1980,7 @@ ifeq ($(versioned_packages),yes)
pkg_ver := -$(BASE_VERSION)
endif
+p_gccn = gcc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
p_cppn = cpp$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
# if native or rtlibs build
@@ -2015,6 +2016,7 @@ d = debian/tmp
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)
--
2.25.1
>From db1c1e31f70f846f361158e092890fe710915159 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:43:03 +0100
Subject: [PATCH 04/11] introduce g++-$v-$triplet
---
debian/control.m4 | 37 ++++++++++++++-------
debian/rules.d/binary-cxx.mk | 63 +++++++++++++++++++++++++-----------
debian/rules2 | 2 ++
3 files changed, 72 insertions(+), 30 deletions(-)
diff --git a/debian/control.m4 b/debian/control.m4
index e16e4b8..451e50f 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -1214,23 +1214,36 @@ Description: GCC, the GNU compiler collection (native language support files)
')`'dnl cdev
ifenabled(`c++',`
-ifenabled(`c++dev',`
-Package: g++`'PV`'TS
-Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+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`'TS (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${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),
+Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends}
+Provides: c++-compiler`'arch_gnusuffix
+Suggests: 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`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `')
+Description: GNU C++ compiler for arch_gnu 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
+ This package contains C++ cross-compiler for arch_gnu architecture.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: g++`'PV
+Architecture: any
+Section: devel
+Priority: optional
+Depends: g++`'PV`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends}
+Provides: c++-compiler, c++abi2-dev
+Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion})
+BUILT_USING`'dnl
+Description: GNU C++ compiler
+ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
+')`'dnl TARGET
ifenabled(`multilib',`
Package: g++`'PV-multilib`'TS
diff --git a/debian/rules.d/binary-cxx.mk b/debian/rules.d/binary-cxx.mk
index aaa3235..18554de 100644
--- a/debian/rules.d/binary-cxx.mk
+++ b/debian/rules.d/binary-cxx.mk
@@ -2,21 +2,31 @@ ifneq ($(DEB_STAGE),rtlibs)
ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
arch_binaries := $(arch_binaries) cxx-multi
endif
- arch_binaries := $(arch_binaries) cxx
+ arch_binaries := $(arch_binaries) cxx-nat
+ ifeq ($(unprefixed_names),yes)
+ arch_binaries := $(arch_binaries) cxx
+ endif
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 +34,35 @@ p_cxx_m = g++$(pkg_ver)-multilib$(cross_bin_arch)
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,20 +70,14 @@ $(binary_stamp)-cxx: $(install_stamp)
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)
echo '$(p_cxx) binary: binary-without-manpage' \
>> $(d_cxx)/usr/share/lintian/overrides/$(p_cxx)
@@ -56,12 +89,6 @@ endif
$(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)
diff --git a/debian/rules2 b/debian/rules2
index ad5fee4..7b167de 100644
--- a/debian/rules2
+++ b/debian/rules2
@@ -1982,6 +1982,7 @@ 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)
@@ -2021,6 +2022,7 @@ 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)
--
2.25.1
>From 79c4d01941ef0c07a575ebb1f6fee4f3e889060f Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:43:37 +0100
Subject: [PATCH 05/11] introduce gfortran-$v-$triplet
---
debian/control.m4 | 29 ++++++++----
debian/rules.d/binary-fortran.mk | 79 ++++++++++++++++++++++----------
2 files changed, 76 insertions(+), 32 deletions(-)
diff --git a/debian/control.m4 b/debian/control.m4
index 451e50f..8f2c09a 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -3872,23 +3872,36 @@ Description: Runtime library for GNU Objective-C applications [NEON version]
')`'dnl objc
ifenabled(`fortran',`
-ifenabled(`fdev',`
-Package: gfortran`'PV`'TS
+ifenabled(`fdev',`dnl
+for_each_arch(`
+Package: gfortran`'PV`'arch_gnusuffix
Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+Multi-Arch: foreign
Priority: optional
-Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libidevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
-ifdef(`TARGET',`',`Provides: fortran95-compiler, ${fortran:mod-version}
-')dnl
-Suggests: ${gfortran:multilib}, gfortran`'PV-doc,
+Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Breaks: gfortran`'PV (<< 0TODO)
+Replaces: gfortran`'PV (<< 999:0TODO)
+Suggests: gfortran`'PV-doc,
libdbgdep(gfortran`'FORTRAN_SO-dbg),
libcoarrays-dev
BUILT_USING`'dnl
+Description: GNU Fortran compiler for the arch_gnu architecture
+ This is the GNU Fortran compiler for the arch_gnu architecture,
+ which compiles Fortran on platforms supported by the gcc compiler.
+ It uses the gcc backend to generate optimized code.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gfortran`'PV
+Architecture: any
+Priority: optional
+Depends: gfortran`'PV`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends}
+Provides: fortran95-compiler, ${fortran:mod-version}
+Suggests: ${gfortran:multilib}, gfortran`'PV-doc
Description: GNU Fortran compiler
This is the GNU Fortran compiler, which compiles
Fortran on platforms supported by the gcc compiler. It uses the
gcc backend to generate optimized code.
+')`'dnl TARGET
ifenabled(`multilib',`
Package: gfortran`'PV-multilib`'TS
diff --git a/debian/rules.d/binary-fortran.mk b/debian/rules.d/binary-fortran.mk
index 18c24b9..0adcbca 100644
--- a/debian/rules.d/binary-fortran.mk
+++ b/debian/rules.d/binary-fortran.mk
@@ -45,7 +45,10 @@ ifeq ($(with_fdev),yes)
ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
arch_binaries := $(arch_binaries) fdev-multi
endif
- arch_binaries := $(arch_binaries) fdev
+ arch_binaries := $(arch_binaries) fdev-nat
+ ifeq ($(unprefixed_names),yes)
+ arch_binaries := $(arch_binaries) fdev
+ endif
ifneq ($(DEB_CROSS),yes)
ifneq ($(GFDL_INVARIANT_FREE),yes)
indep_binaries := $(indep_binaries) fortran-doc
@@ -53,29 +56,37 @@ ifeq ($(with_fdev),yes)
endif
endif
-p_g95 = gfortran$(pkg_ver)$(cross_bin_arch)
+p_g95n = gfortran$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+p_g95 = gfortran$(pkg_ver)
p_g95_m = gfortran$(pkg_ver)-multilib$(cross_bin_arch)
p_g95d = gfortran$(pkg_ver)-doc
p_flib = libgfortran$(FORTRAN_SONAME)$(cross_lib_arch)
+d_g95n = debian/$(p_g95n)
d_g95 = debian/$(p_g95)
d_g95_m = debian/$(p_g95_m)
d_g95d = debian/$(p_g95d)
-dirs_g95 = \
- $(docdir)/$(p_xbase)/fortran \
+dirs_g95n = \
$(PF)/bin \
$(gcc_lexec_dir) \
$(gcc_lib_dir) \
$(PF)/include \
+ $(PF)/share/man/man1 \
+ usr/share/lintian/overrides
+
+dirs_g95 = \
+ $(docdir)/$(p_xbase)/fortran \
+ $(PF)/bin \
$(PF)/share/man/man1
-files_g95 = \
+
+files_g95n = \
$(PF)/bin/$(cmd_prefix)gfortran$(pkg_ver) \
$(gcc_lib_dir)/finclude \
$(gcc_lexec_dir)/f951
ifneq ($(GFDL_INVARIANT_FREE),yes)
- files_g95 += \
+ files_g95n += \
$(PF)/share/man/man1/$(cmd_prefix)gfortran$(pkg_ver).1
endif
@@ -168,6 +179,41 @@ $(binary_stamp)-libsffortran: $(install_stamp)
$(call do_fortran,sf)
# ----------------------------------------------------------------------
+$(binary_stamp)-fdev-nat: $(install_stamp)
+ dh_testdir
+ dh_testroot
+ mv $(install_stamp) $(install_stamp)-tmp
+
+ rm -rf $(d_g95n)
+ dh_installdirs -p$(p_g95n) $(dirs_g95n)
+
+ $(dh_compat2) dh_movefiles -p$(p_g95n) $(files_g95n)
+
+ mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95n)/$(gcc_lib_dir)/
+
+ echo '$(p_g95n) binary: hardening-no-pie' \
+ > $(d_g95n)/usr/share/lintian/overrides/$(p_g95n)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+ echo '$(p_g95n) binary: binary-without-manpage' \
+ >> $(d_g95n)/usr/share/lintian/overrides/$(p_g95n)
+endif
+
+ debian/dh_doclink -p$(p_g95n) $(p_xbase)
+
+ debian/dh_rmemptydirs -p$(p_g95n)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+ $(DWZ) \
+ $(d_g95n)/$(gcc_lexec_dir)/f951
+endif
+ dh_strip -p$(p_g95n) \
+ $(if $(unstripped_exe),-X/f951)
+ dh_shlibdeps -p$(p_g95n)
+
+ echo $(p_g95n) >> debian/arch_binaries
+
+ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
$(binary_stamp)-fdev: $(install_stamp)
dh_testdir
dh_testroot
@@ -176,25 +222,17 @@ $(binary_stamp)-fdev: $(install_stamp)
rm -rf $(d_g95)
dh_installdirs -p$(p_g95) $(dirs_g95)
- $(dh_compat2) dh_movefiles -p$(p_g95) $(files_g95)
-
- mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95)/$(gcc_lib_dir)/
-
-ifeq ($(unprefixed_names),yes)
ln -sf $(cmd_prefix)gfortran$(pkg_ver) \
$(d_g95)/$(PF)/bin/gfortran$(pkg_ver)
- ifneq ($(GFDL_INVARIANT_FREE),yes)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
ln -sf $(cmd_prefix)gfortran$(pkg_ver).1 \
$(d_g95)/$(PF)/share/man/man1/gfortran$(pkg_ver).1
- endif
endif
- mkdir -p $(d_g95)/usr/share/lintian/overrides
- echo '$(p_g95) binary: hardening-no-pie' \
- > $(d_g95)/usr/share/lintian/overrides/$(p_g95)
ifeq ($(GFDL_INVARIANT_FREE),yes)
+ mkdir -p $(d_g95)/usr/share/lintian/overrides
echo '$(p_g95) binary: binary-without-manpage' \
- >> $(d_g95)/usr/share/lintian/overrides/$(p_g95)
+ > $(d_g95)/usr/share/lintian/overrides/$(p_g95)
endif
debian/dh_doclink -p$(p_g95) $(p_xbase)
@@ -203,13 +241,6 @@ endif
$(d_g95)/$(docdir)/$(p_xbase)/fortran/changelog
debian/dh_rmemptydirs -p$(p_g95)
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
- $(DWZ) \
- $(d_g95)/$(gcc_lexec_dir)/f951
-endif
- dh_strip -p$(p_g95) \
- $(if $(unstripped_exe),-X/f951)
- dh_shlibdeps -p$(p_g95)
echo $(p_g95) >> debian/arch_binaries
trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--
2.25.1
>From fbaddaff32c659c17a8fab6c2ef164b09adf8f52 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:44:13 +0100
Subject: [PATCH 06/11] introduce gdc-$v-$triplet
---
debian/control.m4 | 32 +++++++++----
debian/rules.d/binary-d.mk | 96 ++++++++++++++++++++++++--------------
2 files changed, 83 insertions(+), 45 deletions(-)
diff --git a/debian/control.m4 b/debian/control.m4
index 8f2c09a..4ecd84d 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -5324,22 +5324,36 @@ Description: GNU Ada compiler (documentation)
')`'dnl gfdldoc
')`'dnl ada
-ifenabled(`d ',`
-Package: gdc`'PV`'TS
+ifenabled(`d ',`dnl
+for_each_arch(`
+Package: gdc`'PV`'arch_gnusuffix
Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+Multi-Arch: foreign
Priority: optional
-Depends: SOFTBASEDEP, g++`'PV`'TS (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends}
-ifdef(`TARGET',`',`Provides: gdc, d-compiler, d-v2-compiler
-')dnl
-Replaces: gdc (<< 4.4.6-5)
+Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends}
+Breaks: gdc`'PV (<< 0TODO)
+Replaces: gdc (<< 4.4.6-5), gdc`'PV (<< 999:0TODO)
BUILT_USING`'dnl
-Description: GNU D compiler (version 2)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `')
+Description: GNU D compiler (version 2) for the arch_gnu architecture
+ This is the GNU D compiler for the arch_gnu architecture,
+ which compiles D on platforms supported by gcc.
+ It uses the gcc backend to generate optimised code.
+ .
+ This compiler supports D language version 2.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gdc`'PV
+Architecture: any
+Priority: optional
+Depends: gdc`'PV`'${target:suffix} (= ${gcc:SoftVersion}), SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${misc:Depends}
+Provides: gdc, d-compiler, d-v2-compiler
+Replaces: gdc (<< 4.4.6-5)
+Description: GNU D compiler (version 2)
This is the GNU D compiler, which compiles D on platforms supported by gcc.
It uses the gcc backend to generate optimised code.
.
This compiler supports D language version 2.
+')`'dnl TARGET
ifenabled(`multilib',`
Package: gdc`'PV-multilib`'TS
diff --git a/debian/rules.d/binary-d.mk b/debian/rules.d/binary-d.mk
index 7a4ba4c..3d08dc5 100644
--- a/debian/rules.d/binary-d.mk
+++ b/debian/rules.d/binary-d.mk
@@ -2,7 +2,10 @@ ifneq ($(DEB_STAGE),rtlibs)
ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchsf)))
arch_binaries := $(arch_binaries) gdc-multi
endif
- arch_binaries := $(arch_binaries) gdc
+ arch_binaries := $(arch_binaries) gdc-nat
+ ifeq ($(unprefixed_names),yes)
+ arch_binaries := $(arch_binaries) gdc
+ endif
ifeq ($(with_libphobosdev),yes)
$(lib_binaries) += libphobos-dev
@@ -50,11 +53,13 @@ ifneq ($(DEB_STAGE),rtlibs)
endif
endif
-p_gdc = gdc$(pkg_ver)$(cross_bin_arch)
+p_gdc_n = gdc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+p_gdc = gdc$(pkg_ver)
p_gdc_m = gdc$(pkg_ver)-multilib$(cross_bin_arch)
p_libphobos = libgphobos$(GPHOBOS_SONAME)
p_libphobosdev = libgphobos$(pkg_ver)-dev
+d_gdc_n = debian/$(p_gdc_n)
d_gdc = debian/$(p_gdc)
d_gdc_m = debian/$(p_gdc_m)
d_libphobos = debian/$(p_libphobos)
@@ -68,20 +73,26 @@ endif
# FIXME: always here?
gdc_include_dir := $(gcc_lib_dir)/include/d
-dirs_gdc = \
+dirs_gdc_n = \
$(PF)/bin \
$(PF)/share/man/man1 \
- $(gcc_lexec_dir)
+ $(gcc_lexec_dir) \
+ usr/share/lintian/overrides
+
+dirs_gdc = \
+ $(PF)/bin \
+ $(PF)/share/man/man1
+
ifneq ($(DEB_CROSS),yes)
- dirs_gdc += \
+ dirs_gdc_n += \
$(gdc_include_dir)
endif
-files_gdc = \
+files_gdc_n = \
$(PF)/bin/$(cmd_prefix)gdc$(pkg_ver) \
$(gcc_lexec_dir)/d21
ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl)
- files_gdc += \
+ files_gdc_n += \
$(PF)/share/man/man1/$(cmd_prefix)gdc$(pkg_ver).1
endif
@@ -90,58 +101,71 @@ dirs_libphobos = \
$(gdc_include_dir) \
$(gcc_lib_dir)
-$(binary_stamp)-gdc: $(install_stamp)
+$(binary_stamp)-gdc-nat: $(install_stamp)
dh_testdir
dh_testroot
mv $(install_stamp) $(install_stamp)-tmp
- rm -rf $(d_gdc)
- dh_installdirs -p$(p_gdc) $(dirs_gdc)
+ rm -rf $(d_gdc_n)
+ dh_installdirs -p$(p_gdc_n) $(dirs_gdc_n)
- dh_installdocs -p$(p_gdc)
- dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog
+ debian/dh_doclink -p$(p_gdc_n) $(p_xbase)
- $(dh_compat2) dh_movefiles -p$(p_gdc) -X/zlib/ $(files_gdc)
+ $(dh_compat2) dh_movefiles -p$(p_gdc_n) -X/zlib/ $(files_gdc_n)
ifeq ($(with_phobos),yes)
- mv $(d)/$(usr_lib)/libgphobos.spec $(d_gdc)/$(gcc_lib_dir)/
-endif
-
-ifeq ($(unprefixed_names),yes)
- ln -sf $(cmd_prefix)gdc$(pkg_ver) \
- $(d_gdc)/$(PF)/bin/gdc$(pkg_ver)
- ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl)
- ln -sf $(cmd_prefix)gdc$(pkg_ver).1 \
- $(d_gdc)/$(PF)/share/man/man1/gdc$(pkg_ver).1
- endif
+ mv $(d)/$(usr_lib)/libgphobos.spec $(d_gdc_n)/$(gcc_lib_dir)/
endif
# FIXME: __entrypoint.di needs to go into a libgdc-dev Multi-Arch: same package
# Always needed by gdc.
- mkdir -p $(d_gdc)/$(gdc_include_dir)
+ mkdir -p $(d_gdc_n)/$(gdc_include_dir)
cp $(srcdir)/libphobos/libdruntime/__entrypoint.di \
- $(d_gdc)/$(gdc_include_dir)/.
+ $(d_gdc_n)/$(gdc_include_dir)/.
#ifneq ($(DEB_CROSS),yes)
-# dh_link -p$(p_gdc) \
+# dh_link -p$(p_gdc_n) \
# /$(gdc_include_dir) \
# /$(dir $(gdc_include_dir))/$(GCC_VERSION)
#endif
- dh_link -p$(p_gdc) \
- /$(docdir)/$(p_gcc)/README.Bugs \
- /$(docdir)/$(p_gdc)/README.Bugs
-
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
$(DWZ) \
- $(d_gdc)/$(gcc_lexec_dir)/d21
+ $(d_gdc_n)/$(gcc_lexec_dir)/d21
endif
- dh_strip -p$(p_gdc) \
+ dh_strip -p$(p_gdc_n) \
$(if $(unstripped_exe),-X/d21)
- dh_shlibdeps -p$(p_gdc)
+ dh_shlibdeps -p$(p_gdc_n)
+
+ echo '$(p_gdc_n) binary: hardening-no-pie' \
+ > $(d_gdc_n)/usr/share/lintian/overrides/$(p_gdc_n)
+
+ echo $(p_gdc_n) >> debian/arch_binaries
- mkdir -p $(d_gdc)/usr/share/lintian/overrides
- echo '$(p_gdc) binary: hardening-no-pie' \
- > $(d_gdc)/usr/share/lintian/overrides/$(p_gdc)
+ find $(d_gdc_n) -type d -empty -delete
+
+ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-gdc: $(install_stamp)
+ dh_testdir
+ dh_testroot
+ mv $(install_stamp) $(install_stamp)-tmp
+
+ rm -rf $(d_gdc)
+ dh_installdirs -p$(p_gdc) $(dirs_gdc)
+
+ dh_installdocs -p$(p_gdc)
+ dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog
+
+ ln -sf $(cmd_prefix)gdc$(pkg_ver) \
+ $(d_gdc)/$(PF)/bin/gdc$(pkg_ver)
+ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl)
+ ln -sf $(cmd_prefix)gdc$(pkg_ver).1.gz \
+ $(d_gdc)/$(PF)/share/man/man1/gdc$(pkg_ver).1.gz
+endif
+
+ dh_link -p$(p_gdc) \
+ /$(docdir)/$(p_gcc)/README.Bugs \
+ /$(docdir)/$(p_gdc)/README.Bugs
echo $(p_gdc) >> debian/arch_binaries
--
2.25.1
>From 16ed5831dec90a1f9d88e9840f96fa65aae8ac99 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:44:46 +0100
Subject: [PATCH 07/11] introduce gccgo-$v-$triplet
---
debian/control.m4 | 28 +++++--
debian/rules.d/binary-go.mk | 145 ++++++++++++++++++++++--------------
2 files changed, 110 insertions(+), 63 deletions(-)
diff --git a/debian/control.m4 b/debian/control.m4
index 4ecd84d..74d505f 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -4236,20 +4236,34 @@ Description: Runtime library for GNU Fortran applications [NEON version]
ifenabled(`ggo',`
ifenabled(`godev',`
-Package: gccgo`'PV`'TS
+for_each_arch(`
+Package: gccgo`'PV`'arch_gnusuffix
+Architecture: ifdef(`TARGET',`any',arch_deb)
+Multi-Arch: foreign
+Priority: optional
+Depends: BASEDEP, ifdef(`STANDALONEGO',`${dep:libcc1}, ',`gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), ')libidevdep(go`'PV-dev,,>=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg),
+Conflicts: ${golang:Conflicts}
+Breaks: libgo12`'LS (<< 8-20171209-2), gccgo`'PV (<< 0TODO)
+Replaces: libgo12`'LS (<< 8-20171209-2), gccgo`'PV (<< 999:0TODO)
+BUILT_USING`'dnl
+Description: GNU Go compiler for the arch_gnu architecture
+ This is the GNU Go compiler for the arch_gnu architecture, which
+ compiles Go on platforms supported by the gcc compiler. It uses the gcc
+ backend to generate optimized code.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gccgo`'PV
Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
Priority: optional
-Depends: BASEDEP, ifdef(`STANDALONEGO',`${dep:libcc1}, ',`gcc`'PV`'TS (= ${gcc:Version}), ')libidevdep(go`'PV-dev,,>=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
-ifdef(`TARGET',`',`Provides: go-compiler
-')dnl
+Depends: BASEDEP, gccgo`'PV`'${target:suffix} (= ${gcc:Version}), ifdef(`STANDALONEGO',`',`gcc`'PV (= ${gcc:Version}), ')${misc:Depends}
+Provides: go-compiler
Suggests: ${go:multilib}, gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg),
Conflicts: ${golang:Conflicts}
-BUILT_USING`'dnl
Description: GNU Go compiler
This is the GNU Go compiler, which compiles Go on platforms supported
by the gcc compiler. It uses the gcc backend to generate optimized code.
+')`'dnl no-TARGET
ifenabled(`multilib',`
Package: gccgo`'PV-multilib`'TS
diff --git a/debian/rules.d/binary-go.mk b/debian/rules.d/binary-go.mk
index 29e0ea6..4cb7e84 100644
--- a/debian/rules.d/binary-go.mk
+++ b/debian/rules.d/binary-go.mk
@@ -30,7 +30,10 @@ ifeq ($(with_libx32godev),yes)
endif
ifneq ($(DEB_STAGE),rtlibs)
- arch_binaries := $(arch_binaries) gccgo
+ arch_binaries := $(arch_binaries) gccgo-nat
+ ifeq ($(unprefixed_names),yes)
+ arch_binaries := $(arch_binaries) gccgo
+ endif
ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32)))
arch_binaries := $(arch_binaries) gccgo-multi
endif
@@ -41,29 +44,37 @@ ifneq ($(DEB_STAGE),rtlibs)
endif
endif
-p_go = gccgo$(pkg_ver)$(cross_bin_arch)
+p_go_n = gccgo$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+p_go = gccgo$(pkg_ver)
p_go_m = gccgo$(pkg_ver)-multilib$(cross_bin_arch)
p_god = gccgo$(pkg_ver)-doc
p_golib = libgo$(GO_SONAME)$(cross_lib_arch)
+d_go_n = debian/$(p_go_n)
d_go = debian/$(p_go)
d_go_m = debian/$(p_go_m)
d_god = debian/$(p_god)
d_golib = debian/$(p_golib)
-dirs_go = \
- $(docdir)/$(p_xbase)/go \
+dirs_go_n = \
$(PF)/bin \
$(gcc_lexec_dir) \
$(gcc_lib_dir) \
$(PF)/include \
- $(PF)/share/man/man1
-files_go = \
+ $(PF)/share/man/man1 \
+ usr/share/lintian/overrides
+
+dirs_go = \
+ $(docdir)/$(p_xbase)/go \
+ $(PF)/bin \
+ $(PF)/share/man/man1 \
+
+files_go_n = \
$(PF)/bin/$(cmd_prefix)gccgo$(pkg_ver) \
$(gcc_lexec_dir)/go1
ifneq (,$(filter $(build_type), build-native cross-build-native))
- files_go += \
+ files_go_n += \
$(PF)/bin/$(cmd_prefix){go,gofmt}$(pkg_ver) \
$(gcc_lexec_dir)/cgo \
$(gcc_lexec_dir)/{buildid,test2json,vet} \
@@ -71,18 +82,20 @@ ifneq (,$(filter $(build_type), build-native cross-build-native))
endif
ifneq ($(GFDL_INVARIANT_FREE),yes)
- files_go += \
+ files_go_n += \
$(PF)/share/man/man1/$(cmd_prefix)gccgo$(pkg_ver).1
endif
ifeq ($(with_standalone_go),yes)
- dirs_go += \
+ dirs_go_n += \
$(gcc_lib_dir)/include \
$(PF)/share/man/man1
+ dirs_go += \
+ $(PF)/share/man/man1
# XXX: what about triarch mapping?
- files_go += \
+ files_go_n += \
$(PF)/bin/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(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 \
@@ -94,26 +107,26 @@ ifeq ($(with_standalone_go),yes)
&& echo $(gcc_lib_dir)/SYSCALLS.c.X)
ifeq ($(with_cc1),yes)
- files_go += \
+ files_go_n += \
$(gcc_lib_dir)/plugin/libcc1plugin.so{,.0,.0.0.0}
endif
ifneq ($(GFDL_INVARIANT_FREE),yes)
- files_go += \
+ files_go_n += \
$(PF)/share/man/man1/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver).1
endif
ifeq ($(biarch64),yes)
- files_go += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o}
+ files_go_n += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o}
endif
ifeq ($(biarch32),yes)
- files_go += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o}
+ files_go_n += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o}
endif
ifeq ($(biarchn32),yes)
- files_go += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o}
+ files_go_n += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o}
endif
ifeq ($(biarchx32),yes)
- files_go += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o}
+ files_go_n += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o}
endif
endif
@@ -242,22 +255,64 @@ $(binary_stamp)-libn32go-dev: $(install_stamp)
$(call do_libgo_dev,n32)
# ----------------------------------------------------------------------
-$(binary_stamp)-gccgo: $(install_stamp)
+$(binary_stamp)-gccgo-nat: $(install_stamp)
dh_testdir
dh_testroot
mv $(install_stamp) $(install_stamp)-tmp
- rm -rf $(d_go)
- dh_installdirs -p$(p_go) $(dirs_go)
+ rm -rf $(d_go_n)
+ dh_installdirs -p$(p_go_n) $(dirs_go_n)
- $(dh_compat2) dh_movefiles -p$(p_go) $(files_go)
+ $(dh_compat2) dh_movefiles -p$(p_go_n) $(files_go_n)
ifneq (,$(findstring gccgo,$(PKGSOURCE)))
- rm -rf $(d_go)/$(gcc_lib_dir)/include/cilk
- rm -rf $(d_go)/$(gcc_lib_dir)/include/openacc.h
+ rm -rf $(d_go_n)/$(gcc_lib_dir)/include/cilk
+ rm -rf $(d_go_n)/$(gcc_lib_dir)/include/openacc.h
+endif
+
+ifeq ($(with_standalone_go),yes)
+ ifeq ($(with_gomp),yes)
+ mv $(d)/$(usr_lib)/libgomp*.spec $(d_go_n)/$(gcc_lib_dir)/
+ endif
+ ifeq ($(with_cc1),yes)
+ rm -f $(d)/$(usr_lib)/libcc1.so
+ dh_link -p$(p_go_n) \
+ /$(usr_lib)/libcc1.so.$(CC1_SONAME) /$(gcc_lib_dir)/libcc1.so
+ endif
+endif
+
+ echo '$(p_go_n) binary: unstripped-binary-or-object' \
+ > $(d_go_n)/usr/share/lintian/overrides/$(p_go_n)
+ echo '$(p_go_n) binary: hardening-no-pie' \
+ >> $(d_go_n)/usr/share/lintian/overrides/$(p_go_n)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+ echo '$(p_go_n) binary: binary-without-manpage' \
+ >> $(d_go_n)/usr/share/lintian/overrides/$(p_go_n)
+endif
+
+ debian/dh_doclink -p$(p_go_n) $(p_xbase)
+
+ debian/dh_rmemptydirs -p$(p_go_n)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+ $(DWZ) \
+ $(d_go_n)/$(gcc_lexec_dir)/go1
endif
+ dh_strip -v -p$(p_go_n) -X/cgo -X/go$(pkg_ver) -X/gofmt$(pkg_ver) \
+ -X/buildid -X/test2json -X/vet $(if $(unstripped_exe),-X/go1)
+ dh_shlibdeps -p$(p_go_n)
+ echo $(p_go_n) >> debian/arch_binaries
+
+ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-gccgo: $(install_stamp)
+ dh_testdir
+ dh_testroot
+ mv $(install_stamp) $(install_stamp)-tmp
+
+ rm -rf $(d_go)
+ dh_installdirs -p$(p_go) $(dirs_go)
-ifeq ($(unprefixed_names),yes)
ln -sf $(cmd_prefix)gccgo$(pkg_ver) \
$(d_go)/$(PF)/bin/gccgo$(pkg_ver)
ln -sf $(cmd_prefix)go$(pkg_ver) \
@@ -265,46 +320,31 @@ ifeq ($(unprefixed_names),yes)
ln -sf $(cmd_prefix)gofmt$(pkg_ver) \
$(d_go)/$(PF)/bin/gofmt$(pkg_ver)
ifneq ($(GFDL_INVARIANT_FREE),yes)
- ln -sf $(cmd_prefix)gccgo$(pkg_ver).1 \
- $(d_go)/$(PF)/share/man/man1/gccgo$(pkg_ver).1
+ ln -sf $(cmd_prefix)gccgo$(pkg_ver).1.gz \
+ $(d_go)/$(PF)/share/man/man1/gccgo$(pkg_ver).1.gz
endif
- ln -sf $(cmd_prefix)go$(pkg_ver).1 \
- $(d_go)/$(PF)/share/man/man1/go$(pkg_ver).1
- ln -sf $(cmd_prefix)gofmt$(pkg_ver).1 \
- $(d_go)/$(PF)/share/man/man1/gofmt$(pkg_ver).1
-endif
+ ln -sf $(cmd_prefix)go$(pkg_ver).1.gz \
+ $(d_go)/$(PF)/share/man/man1/go$(pkg_ver).1.gz
+ ln -sf $(cmd_prefix)gofmt$(pkg_ver).1.gz \
+ $(d_go)/$(PF)/share/man/man1/gofmt$(pkg_ver).1.gz
ifeq ($(with_standalone_go),yes)
- ifeq ($(unprefixed_names),yes)
for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \
ln -sf $(cmd_prefix)$$i$(pkg_ver) \
$(d_go)/$(PF)/bin/$$i$(pkg_ver); \
done
- ifneq ($(GFDL_INVARIANT_FREE),yes)
+ ifneq ($(GFDL_INVARIANT_FREE),yes)
for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \
- ln -sf $(cmd_prefix)gcc$(pkg_ver).1 \
- $(d_go)/$(PF)/share/man/man1/$$i$(pkg_ver).1; \
+ ln -sf $(cmd_prefix)gcc$(pkg_ver).1.gz \
+ $(d_go)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \
done
- endif
- endif
- ifeq ($(with_gomp),yes)
- mv $(d)/$(usr_lib)/libgomp*.spec $(d_go)/$(gcc_lib_dir)/
- endif
- ifeq ($(with_cc1),yes)
- rm -f $(d)/$(usr_lib)/libcc1.so
- dh_link -p$(p_go) \
- /$(usr_lib)/libcc1.so.$(CC1_SONAME) /$(gcc_lib_dir)/libcc1.so
endif
endif
- mkdir -p $(d_go)/usr/share/lintian/overrides
- echo '$(p_go) binary: unstripped-binary-or-object' \
- > $(d_go)/usr/share/lintian/overrides/$(p_go)
- echo '$(p_go) binary: hardening-no-pie' \
- >> $(d_go)/usr/share/lintian/overrides/$(p_go)
ifeq ($(GFDL_INVARIANT_FREE),yes)
+ mkdir -p $(d_go)/usr/share/lintian/overrides
echo '$(p_go) binary: binary-without-manpage' \
- >> $(d_go)/usr/share/lintian/overrides/$(p_go)
+ > $(d_go)/usr/share/lintian/overrides/$(p_go)
endif
debian/dh_doclink -p$(p_go) $(p_xbase)
@@ -313,13 +353,6 @@ endif
# $(d_go)/$(docdir)/$(p_base)/go/changelog
debian/dh_rmemptydirs -p$(p_go)
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
- $(DWZ) \
- $(d_go)/$(gcc_lexec_dir)/go1
-endif
- dh_strip -v -p$(p_go) -X/cgo -X/go$(pkg_ver) -X/gofmt$(pkg_ver) \
- -X/buildid -X/test2json -X/vet $(if $(unstripped_exe),-X/go1)
- dh_shlibdeps -p$(p_go)
echo $(p_go) >> debian/arch_binaries
trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--
2.25.1
>From c23a7ae8f7d72296e81607daaf811020d38349ce Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 15:31:00 +0100
Subject: [PATCH 08/11] drop obsolete sparc-only conflict
---
debian/control.m4 | 1 -
1 file changed, 1 deletion(-)
diff --git a/debian/control.m4 b/debian/control.m4
index 74d505f..aa4374d 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -3562,7 +3562,6 @@ Priority: optional
Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg),
Provides: objc-compiler`'TS
-ifdef(`__sparc__',`Conflicts: gcc`'PV-sparc64', `dnl')
BUILT_USING`'dnl
Description: GNU Objective-C compiler
This is the GNU Objective-C compiler, which compiles
--
2.25.1
>From f83c872dd7eb83fed9c28e077539360dd8103c0a Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 15:50:21 +0100
Subject: [PATCH 09/11] remove unused binary-without-manpage overrides
gobjc-N and gobjc++-N don't contain any binaries on $PATH that would
warrant a manual page.
---
debian/rules.d/binary-objc.mk | 4 ----
debian/rules.d/binary-objcxx.mk | 4 ----
2 files changed, 8 deletions(-)
diff --git a/debian/rules.d/binary-objc.mk b/debian/rules.d/binary-objc.mk
index b5cd216..743bf52 100644
--- a/debian/rules.d/binary-objc.mk
+++ b/debian/rules.d/binary-objc.mk
@@ -36,10 +36,6 @@ $(binary_stamp)-objc: $(install_stamp)
mkdir -p $(d_objc)/usr/share/lintian/overrides
echo '$(p_objc) binary: hardening-no-pie' \
> $(d_objc)/usr/share/lintian/overrides/$(p_objc)
-ifeq ($(GFDL_INVARIANT_FREE),yes)
- echo '$(p_objc) binary: binary-without-manpage' \
- >> $(d_objc)/usr/share/lintian/overrides/$(p_objc)
-endif
debian/dh_doclink -p$(p_objc) $(p_xbase)
diff --git a/debian/rules.d/binary-objcxx.mk b/debian/rules.d/binary-objcxx.mk
index 4f6d8e1..e750cae 100644
--- a/debian/rules.d/binary-objcxx.mk
+++ b/debian/rules.d/binary-objcxx.mk
@@ -34,10 +34,6 @@ $(binary_stamp)-objcxx: $(install_stamp)
mkdir -p $(d_objcx)/usr/share/lintian/overrides
echo '$(p_objcx) binary: hardening-no-pie' \
> $(d_objcx)/usr/share/lintian/overrides/$(p_objcx)
-ifeq ($(GFDL_INVARIANT_FREE),yes)
- echo '$(p_objcx) binary: binary-without-manpage' \
- >> $(d_objcx)/usr/share/lintian/overrides/$(p_objcx)
-endif
debian/dh_rmemptydirs -p$(p_objcx)
--
2.25.1
>From b8f8ed1b63c6ebfb720c0cb3c1a3d998828d72e2 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:45:05 +0100
Subject: [PATCH 10/11] introduce gobjc-$v-$triplet
---
debian/control.m4 | 28 ++++++++++++-----
debian/rules.d/binary-objc.mk | 58 +++++++++++++++++++++++++----------
2 files changed, 62 insertions(+), 24 deletions(-)
diff --git a/debian/control.m4 b/debian/control.m4
index aa4374d..1402abe 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -3554,20 +3554,34 @@ Description: GNU Objective-C++ compiler (multilib support)
ifenabled(`objc',`
ifenabled(`objcdev',`
-Package: gobjc`'PV`'TS
+for_each_arch(`
+Package: gobjc`'PV`'arch_gnusuffix
Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+Multi-Arch: foreign
Priority: optional
-Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
-Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg),
-Provides: objc-compiler`'TS
+Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
+Breaks: gobjc`'PV (<< 0TODO)
+Replaces: gobjc`'PV (<< 999:0TODO)
+Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg,)
+Provides: objc-compiler`'arch_gnusuffix
BUILT_USING`'dnl
+Description: GNU Objective-C compiler for the arch_gnu architecture
+ This is the GNU Objective-C compiler for the arch_gnu architecture,
+ which compiles Objective-C on platforms supported by the gcc compiler.
+ It uses the gcc backend to generate optimized code.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gobjc`'PV
+Architecture: any
+Priority: optional
+Depends: BASEDEP, gobjc`'PV`'${target:suffix} (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${misc:Depends}
+Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion})
+Provides: objc-compiler
Description: GNU Objective-C compiler
This is the GNU Objective-C compiler, which compiles
Objective-C on platforms supported by the gcc compiler. It uses the
gcc backend to generate optimized code.
-
+')`'dnl ifndef TARGET
ifenabled(`multilib',`
Package: gobjc`'PV-multilib`'TS
Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
diff --git a/debian/rules.d/binary-objc.mk b/debian/rules.d/binary-objc.mk
index 743bf52..eeaec33 100644
--- a/debian/rules.d/binary-objc.mk
+++ b/debian/rules.d/binary-objc.mk
@@ -2,22 +2,58 @@ ifneq ($(DEB_STAGE),rtlibs)
ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
arch_binaries := $(arch_binaries) objc-multi
endif
- arch_binaries := $(arch_binaries) objc
+ arch_binaries := $(arch_binaries) objc-nat
+ ifeq ($(unprefixed_names),yes)
+ arch_binaries := $(arch_binaries) objc
+ endif
endif
-p_objc = gobjc$(pkg_ver)$(cross_bin_arch)
+p_objc_n = gobjc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+d_objc_n = debian/$(p_objc_n)
+
+p_objc = gobjc$(pkg_ver)
d_objc = debian/$(p_objc)
p_objc_m= gobjc$(pkg_ver)-multilib$(cross_bin_arch)
d_objc_m= debian/$(p_objc_m)
+dirs_objc_n = \
+ $(gcc_lexec_dir) \
+ usr/share/lintian/overrides
+
dirs_objc = \
- $(docdir)/$(p_xbase)/ObjC \
- $(gcc_lexec_dir)
+ $(docdir)/$(p_xbase)/ObjC
-files_objc = \
+files_objc_n = \
$(gcc_lexec_dir)/cc1obj
+$(binary_stamp)-objc-nat: $(install_stamp)
+ dh_testdir
+ dh_testroot
+ mv $(install_stamp) $(install_stamp)-tmp
+
+ rm -rf $(d_objc_n)
+ dh_installdirs -p$(p_objc_n) $(dirs_objc_n)
+ $(dh_compat2) dh_movefiles -p$(p_objc_n) $(files_objc_n)
+
+ echo '$(p_objc_n) binary: hardening-no-pie' \
+ > $(d_objc_n)/usr/share/lintian/overrides/$(p_objc_n)
+
+ debian/dh_doclink -p$(p_objc_n) $(p_xbase)
+
+ debian/dh_rmemptydirs -p$(p_objc_n)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+ $(DWZ) \
+ $(d_objc_n)/$(gcc_lexec_dir)/cc1obj
+endif
+ dh_strip -p$(p_objc_n) \
+ $(if $(unstripped_exe),-X/cc1obj)
+ dh_shlibdeps -p$(p_objc_n)
+ echo $(p_objc_n) >> debian/arch_binaries
+
+ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
$(binary_stamp)-objc: $(install_stamp)
dh_testdir
dh_testroot
@@ -25,7 +61,6 @@ $(binary_stamp)-objc: $(install_stamp)
rm -rf $(d_objc)
dh_installdirs -p$(p_objc) $(dirs_objc)
- $(dh_compat2) dh_movefiles -p$(p_objc) $(files_objc)
cp -p $(srcdir)/libobjc/{README*,THREADS*} \
$(d_objc)/$(docdir)/$(p_xbase)/ObjC/.
@@ -33,21 +68,10 @@ $(binary_stamp)-objc: $(install_stamp)
cp -p $(srcdir)/libobjc/ChangeLog \
$(d_objc)/$(docdir)/$(p_xbase)/ObjC/changelog.libobjc
- mkdir -p $(d_objc)/usr/share/lintian/overrides
- echo '$(p_objc) binary: hardening-no-pie' \
- > $(d_objc)/usr/share/lintian/overrides/$(p_objc)
-
debian/dh_doclink -p$(p_objc) $(p_xbase)
debian/dh_rmemptydirs -p$(p_objc)
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
- $(DWZ) \
- $(d_objc)/$(gcc_lexec_dir)/cc1obj
-endif
- dh_strip -p$(p_objc) \
- $(if $(unstripped_exe),-X/cc1obj)
- dh_shlibdeps -p$(p_objc)
echo $(p_objc) >> debian/arch_binaries
trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--
2.25.1
>From 717dbd8777a62e17c768ac2914027819dde081f1 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Mon, 30 Mar 2020 11:52:40 +0200
Subject: [PATCH 11/11] introduce gobjc++-$v-$triplet
---
debian/control.m4 | 25 ++++++++++++---
debian/rules.d/binary-objcxx.mk | 56 +++++++++++++++++++++++----------
2 files changed, 60 insertions(+), 21 deletions(-)
diff --git a/debian/control.m4 b/debian/control.m4
index 1402abe..586da84 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -3519,19 +3519,34 @@ Description: GCC just-in-time compilation (development files)
ifenabled(`objpp',`
ifenabled(`objppdev',`
-Package: gobjc++`'PV`'TS
+for_each_arch(`
+Package: gobjc++`'PV`'arch_gnusuffix
Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+Multi-Arch: foreign
Priority: optional
-Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), g++`'PV`'TS (= ${gcc:Version}), ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
+Depends: BASEDEP, gobjc`'PV`'arch_gnusuffix (= ${gcc:Version}), g++`'PV`'arch_gnusuffix (= ${gcc:Version}), ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
+Breaks: gobjc++`'PV (<< 0TODO)
+Replaces: gobjc++`'PV (<< 999:0TODO)
Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion})
-Provides: objc++-compiler`'TS
+Provides: objc++-compiler`'arch_gnusuffix
BUILT_USING`'dnl
+Description: GNU Objective-C++ compiler for the arch_gnu architecture
+ This is the GNU Objective-C++ compiler for the arch_gnu architecture,
+ which compiles Objective-C++ on platforms supported by the gcc compiler.
+ It uses the gcc backend to generate optimized code.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gobjc++`'PV
+Architecture: any
+Priority: optional
+Depends: BASEDEP, gobjc++`'PV`'${target:suffix} (= ${gcc:Version}), gobjc`'PV (= ${gcc:Version}), g++`'PV (= ${gcc:Version}), ${misc:Depends}
+Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion})
+Provides: objc++-compiler
Description: GNU Objective-C++ compiler
This is the GNU Objective-C++ compiler, which compiles
Objective-C++ on platforms supported by the gcc compiler. It uses the
gcc backend to generate optimized code.
+')`'dnl TARGET
')`'dnl obcppdev
ifenabled(`multilib',`
diff --git a/debian/rules.d/binary-objcxx.mk b/debian/rules.d/binary-objcxx.mk
index e750cae..984483d 100644
--- a/debian/rules.d/binary-objcxx.mk
+++ b/debian/rules.d/binary-objcxx.mk
@@ -2,22 +2,58 @@ ifneq ($(DEB_STAGE),rtlibs)
ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
arch_binaries := $(arch_binaries) objcxx-multi
endif
- arch_binaries := $(arch_binaries) objcxx
+ arch_binaries := $(arch_binaries) objcxx-nat
+ ifeq ($(unprefixed_names),yes)
+ arch_binaries := $(arch_binaries) objcxx
+ endif
endif
-p_objcx = gobjc++$(pkg_ver)$(cross_bin_arch)
+p_objcx_n = gobjc++$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+d_objcx_n = debian/$(p_objcx_n)
+
+p_objcx = gobjc++$(pkg_ver)
d_objcx = debian/$(p_objcx)
p_objcx_m = gobjc++$(pkg_ver)-multilib$(cross_bin_arch)
d_objcx_m = debian/$(p_objcx_m)
+dirs_objcx_n = \
+ $(gcc_lexec_dir) \
+ usr/share/lintian/overrides
+
dirs_objcx = \
$(docdir)/$(p_xbase)/Obj-C++ \
- $(gcc_lexec_dir)
-files_objcx = \
+files_objcx_n = \
$(gcc_lexec_dir)/cc1objplus
+$(binary_stamp)-objcxx-nat: $(install_stamp)
+ dh_testdir
+ dh_testroot
+ mv $(install_stamp) $(install_stamp)-tmp
+
+ rm -rf $(d_objcx_n)
+ dh_installdirs -p$(p_objcx_n) $(dirs_objcx_n)
+ $(dh_compat2) dh_movefiles -p$(p_objcx_n) $(files_objcx_n)
+
+ debian/dh_doclink -p$(p_objcx_n) $(p_xbase)
+
+ echo '$(p_objcx_n) binary: hardening-no-pie' \
+ > $(d_objcx_n)/usr/share/lintian/overrides/$(p_objcx_n)
+
+ debian/dh_rmemptydirs -p$(p_objcx_n)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+ $(DWZ) \
+ $(d_objcx_n)/$(gcc_lexec_dir)/cc1objplus
+endif
+ dh_strip -p$(p_objcx_n) \
+ $(if $(unstripped_exe),-X/cc1objplus)
+ dh_shlibdeps -p$(p_objcx_n)
+ echo $(p_objcx_n) >> debian/arch_binaries
+
+ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
$(binary_stamp)-objcxx: $(install_stamp)
dh_testdir
dh_testroot
@@ -25,25 +61,13 @@ $(binary_stamp)-objcxx: $(install_stamp)
rm -rf $(d_objcx)
dh_installdirs -p$(p_objcx) $(dirs_objcx)
- $(dh_compat2) dh_movefiles -p$(p_objcx) $(files_objcx)
debian/dh_doclink -p$(p_objcx) $(p_xbase)
cp -p $(srcdir)/gcc/objcp/ChangeLog \
$(d_objcx)/$(docdir)/$(p_xbase)/Obj-C++/changelog
- mkdir -p $(d_objcx)/usr/share/lintian/overrides
- echo '$(p_objcx) binary: hardening-no-pie' \
- > $(d_objcx)/usr/share/lintian/overrides/$(p_objcx)
-
debian/dh_rmemptydirs -p$(p_objcx)
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
- $(DWZ) \
- $(d_objcx)/$(gcc_lexec_dir)/cc1objplus
-endif
- dh_strip -p$(p_objcx) \
- $(if $(unstripped_exe),-X/cc1objplus)
- dh_shlibdeps -p$(p_objcx)
echo $(p_objcx) >> debian/arch_binaries
trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--
2.25.1
Reply to: