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

Bug#347484: gcc-4.0: Give option not to depend on system -base package for cross compiler



Package: gcc-4.0
Version: 4.0.2-6
Severity: wishlist
Tags: patch

Hi,

Thanks for making it quite easy to build a cross compiler on Debian.

The only problem I have had is that the packages by default depend on
the -base package used by the system gcc.

This means whenever I upgrade my system gcc I need to rebuild my cross
compiler to have the right dependencies.  I think this breaks the way
many people use cross compilers -- they want fairly static versions to
build specific things.  I'm happy to run with the latest and greatest
on my system, but I'd prefer if the cross compiler stayed how it was
until I explicitly touched it.

The following patch implements an option DEB_CROSS_INDEPENDENT which,
if set, builds against a cross compiler specific -base package.  If
not set, the old semantics remain.

The patch looks big because it changes the dependency field of all the
packages in control.m4, but otherwise I think it is quite straight
forward.  I included some documentation in README.cross.  I have
tested this building with and without and it behaves as I expect.

Thanks for considering it,

-i

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.15
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8)

Versions of packages gcc-4.0 depends on:
ii  binutils             2.16.1cvs20051214-1 The GNU assembler, linker and bina
ii  cpp-4.0              4.0.2-6             The GNU C preprocessor
ii  gcc-4.0-base         4.0.2-6             The GNU Compiler Collection (base 
ii  libc6                2.3.5-11            GNU C Library: Shared libraries an
ii  libgcc1              1:4.0.2-6           GCC support library

Versions of packages gcc-4.0 recommends:
ii  libc6-dev                     2.3.5-11   GNU C Library: Development Librari
pn  libmudflap0-dev               <none>     (no description available)

-- no debconf information
 README.cross |   13 +++++--
 control.m4   |  107 ++++++++++++++++++++++++++++++++++++-----------------------
 rules.conf   |    3 +
 rules.defs   |    6 +++
 rules2       |    7 +++
 5 files changed, 91 insertions(+), 45 deletions(-)
Index: debian/rules2
===================================================================
--- debian/rules2	(revision 963)
+++ debian/rules2	(working copy)
@@ -973,7 +973,8 @@
   p_cxx  = g++$(pkg_ver)
   p_doc  = gcc$(pkg_ver)-doc
 else
-  p_base = gcc$(pkg_ver)-base
+  # only triggered if DEB_CROSS_INDEPENDENT set
+  p_base = gcc$(pkg_ver)$(cross_bin_arch)-base
   p_cpp  = cpp$(pkg_ver)$(cross_bin_arch)
   p_gcc  = gcc$(pkg_ver)$(cross_bin_arch)
   p_cxx  = g++$(pkg_ver)$(cross_bin_arch)
@@ -1088,6 +1089,10 @@
 # ----------------------------------------
 # cross target
 
+ifeq ($(with_gccxbase),yes)
+  include debian/rules.d/binary-base.mk
+endif
+
 ifeq ($(with_libgcc),yes)
   include debian/rules.d/binary-libgcc-cross.mk
 endif
Index: debian/control.m4
===================================================================
--- debian/control.m4	(revision 963)
+++ debian/control.m4	(working copy)
@@ -53,8 +53,14 @@
  versions of gcc.
 ',`dnl gcc-X.Y
 
+dnl default base package dependencies
+define(`BASETARGET', `')
+define(`BASEDEP', `gcc`'PV-base (= ${gcc:Version})')
+define(`SOFTBASEDEP', `gcc`'PV-base (>= $gcc:SoftVersion})')
+
 ifdef(`TARGET', `', `
 ifenabled(`gccbase',`
+
 Package: gcc`'PV-base
 Architecture: any
 Section: devel
@@ -72,12 +78,31 @@
 ')`'dnl
 ')`'dnl native
 
+ifenabled(`gccxbase',`
+dnl override default base package dependencies to cross version
+dnl This creates a toolchain that doesnt depend on the system -base packages
+dnl set via DEB_CROSS_INDEPENDENT=yes
+define(`BASETARGET', `PV`'TS')
+define(`BASEDEP', `gcc`'BASETARGET-base (= ${gcc:Version})')
+define(`SOFTBASEDEP', `gcc`'BASETARGET-base (>= $gcc:SoftVersion})')
+
+Package: gcc`'BASETARGET-base
+Architecture: any
+Section: devel
+Priority: PRI(required)
+Conflicts: gcc-3.5-base
+Replaces: gcc-3.5-base
+Description: The GNU Compiler Collection (base package)
+ This package contains files common to all languages and libraries
+ contained in the GNU Compiler Collection (GCC).
+')`'dnl
+
 ifenabled(`libgcc',`
 Package: libgcc1`'LS
 Architecture: ifdef(`TARGET',`all',`any')
 Section: ifdef(`TARGET',`devel',`libs')
 Priority: ifdef(`TARGET',`extra',required)
-Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, ${shlibs:Depends}
 Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `')
  Shared version of the support library, a library of internal subroutines
  that GCC uses to overcome shortcomings of particular machines, or
@@ -92,7 +117,7 @@
 Architecture: ifdef(`TARGET',`all',`hppa m68k')
 Section: ifdef(`TARGET',`devel',`libs')
 Priority: ifdef(`TARGET',`extra',required)
-Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, ${shlibs:Depends}
 Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `')
  Shared version of the support library, a library of internal subroutines
  that GCC uses to overcome shortcomings of particular machines, or
@@ -109,7 +134,7 @@
 Architecture: ifdef(`TARGET',`all',`biarch64_archs')
 Section: ifdef(`TARGET',`devel',`libs')
 Priority: ifdef(`TARGET',`extra',PRI(optional))
-Depends: gcc`'PV-base (= ${gcc:Version}), ${dep:libcbiarch}
+Depends: BASEDEP, ${dep:libcbiarch}
 Conflicts: libgcc`'GCC_SO`'LS (<= 1:3.3-0pre9)
 Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (64bit)
  Shared version of the support library, a library of internal subroutines
@@ -128,7 +153,7 @@
 Architecture: biarch32_archs
 Section: libs
 Priority: optional
-Depends: gcc`'PV-base (= ${gcc:Version}), ${dep:libcbiarch}
+Depends: BASEDEP, ${dep:libcbiarch}
 ifelse(DIST,`Ubuntu', `Replaces: ia32-libs-openoffice.org (<< 1ubuntu3)', `dnl')
 Description: GCC support library (32 bit Version)
  Shared version of the support library, a library of internal subroutines
@@ -142,7 +167,7 @@
 Architecture: any
 Section: devel
 Priority: ifdef(`TARGET',`extra',`PRI(standard)')
-Depends: gcc`'PV-base (= ${gcc:Version}), cpp`'PV`'TS (= ${gcc:Version}), binutils`'TS (>= ${binutils:Version}), ${dep:libgcc}, ${dep:libunwinddev}, ${shlibs:Depends}
+Depends: BASEDEP, cpp`'PV`'TS (= ${gcc:Version}), binutils`'TS (>= ${binutils:Version}), ${dep:libgcc}, ${dep:libunwinddev}, ${shlibs:Depends}
 Recommends: ${dep:libcdev}, libmudflap`'MF_SO-dev`'LS (>= ${gcc:Version})
 Conflicts: gcc-3.2`'TS (<= 1:3.2.3-0pre8), gcc-3.5`'ifelse(DIST,`Ubuntu', `, amd64-libs-dev (<= 1.1ubuntu1)')
 Replaces: gcc-3.5
@@ -162,7 +187,7 @@
 Architecture: hppa
 Section: devel
 Priority: PRI(standard)
-Depends: gcc`'PV-base (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}
+Depends: BASEDEP, ${dep:libcdev}, ${shlibs:Depends}
 Conflicts: gcc-3.3-hppa64 (<= 1:3.3.4-5), gcc-3.4-hppa64 (<= 3.4.1-3), gcc-3.5-hppa64
 Replaces: gcc-3.5-hppa64
 Description: The GNU C compiler (cross compiler for hppa64)
@@ -175,7 +200,7 @@
 Architecture: any
 Section: ifdef(`TARGET',`devel',`interpreters')
 Priority: ifdef(`TARGET',`extra',`PRI(standard)')
-Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, ${shlibs:Depends}
 Replaces: cpp-3.5
 Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion})
 Description: The GNU C preprocessor
@@ -194,7 +219,7 @@
 Architecture: all
 Section: doc
 Priority: PRI(optional)
-Depends: gcc`'PV-base (>= ${gcc:SoftVersion})
+Depends: SOFTBASEDEP
 Conflicts: cpp-3.5-doc
 Replaces: cpp (<= 1:2.93.12), cpp-3.5-doc
 Description: Documentation for the GNU C preprocessor (cpp)
@@ -206,7 +231,7 @@
 Architecture: all
 Section: devel
 Priority: PRI(optional)
-Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), cpp`'PV (>= ${gcc:SoftVersion})
+Depends: SOFTBASEDEP, cpp`'PV (>= ${gcc:SoftVersion})
 Recommends: gcc`'PV (>= ${gcc:SoftVersion})
 Replaces: cpp-4.0 (<< 4.0-0pre8), gcc-4.0 (<< 4.0-0pre8)
 Description: The GNU C compiler (native language support files)
@@ -220,7 +245,7 @@
 Architecture: any
 Section: devel
 Priority: ifdef(`TARGET',`extra',`PRI(standard)')
-Depends: gcc`'PV-base (= ${gcc:Version}), gcc`'PV`'TS (= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), ${shlibs:Depends}
 Conflicts: g++-3.5
 Replaces: gcc`'TS (<= 2.7.2.3-3), g++-3.5
 Provides: c++-compiler`'TS, c++abi2-dev
@@ -240,7 +265,7 @@
 Architecture: any
 Section: libs
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, ${shlibs:Depends}
 Description: GCC mudflap shared support libraries
  The libmudflap libraries are used by GCC for instrumenting pointer and array
  dereferencing operations.
@@ -249,7 +274,7 @@
 Architecture: any
 Section: libdevel
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), ${dep:libcdev}, libmudflap`'MF_SO (>= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, ${dep:libcdev}, libmudflap`'MF_SO (>= ${gcc:Version}), ${shlibs:Depends}
 Description: GCC mudflap support libraries (development files)
  The libmudflap libraries are used by GCC for instrumenting pointer and array
  dereferencing operations.
@@ -262,7 +287,7 @@
 Package: protoize
 Architecture: any
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), gcc`'PV (>= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, gcc`'PV (>= ${gcc:Version}), ${shlibs:Depends}
 Description: Create/remove ANSI prototypes from C code
  "protoize" can be used to add prototypes to a program, thus converting
  the program to ANSI C in one respect.  The companion program "unprotoize"
@@ -275,7 +300,7 @@
 Package: gobjc`'PV
 Architecture: any
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc`'OBJC_SO (>= ${gcc:EpochVersion})
+Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc`'OBJC_SO (>= ${gcc:EpochVersion})
 Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion})
 Conflicts: gobjc-3.5
 Replaces: gobjc-3.5
@@ -293,7 +318,7 @@
 Section: libs
 Architecture: any
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, ${shlibs:Depends}
 Description: Runtime library for GNU Objective-C applications
  Library needed for GNU ObjC applications linked against the shared library.
 ')`'dnl libobjc
@@ -303,7 +328,7 @@
 Section: libs
 Architecture: biarch64_archs
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}
 Description: Runtime library for GNU Objective-C applications (64bit)
  Library needed for GNU ObjC applications linked against the shared library.
 ')`'dnl lib64objc
@@ -324,7 +349,7 @@
 Package: gfortran`'PV
 Architecture: any
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), libgfortran`'FORTRAN_SO-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}
+Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), libgfortran`'FORTRAN_SO-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}
 Provides: fortran95-compiler
 Suggests: gfortran`'PV-doc
 Conflicts: gfortran-3.5
@@ -338,7 +363,7 @@
 Architecture: all
 Section: doc
 Priority: PRI(optional)
-Depends: gcc`'PV-base (>= ${gcc:SoftVersion})
+Depends: SOFTBASEDEP
 Conflicts: gfortran-3.5-doc
 Replaces: gfortran-3.5-doc
 Description: Documentation for the GNU Fortran compiler (gfortran)
@@ -350,7 +375,7 @@
 Section: libs
 Architecture: any
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, ${shlibs:Depends}
 Description: Runtime library for GNU Fortran applications
  Library needed for GNU Fortran applications linked against the
  shared library.
@@ -359,7 +384,7 @@
 Section: libdevel
 Architecture: any
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), libgfortran`'FORTRAN_SO (>= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, libgfortran`'FORTRAN_SO (>= ${gcc:Version}), ${shlibs:Depends}
 Replaces: gfortran-4.0 (<< 4.0.1-3)
 Description: GNU Fortran library development
  Headers and static libraries for gfortran.
@@ -370,7 +395,7 @@
 Section: libs
 Architecture: biarch64_archs
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}
 Description: Runtime library for GNU Fortran applications (64bit)
  Library needed for GNU Fortran applications linked against the
  shared library.
@@ -381,7 +406,7 @@
 Section: libs
 Architecture: biarch32_archs
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}
 Description: Runtime library for GNU Fortran applications (32bit)
  Library needed for GNU Fortran applications linked against the
  shared library.
@@ -611,7 +636,7 @@
 Architecture: ifdef(`TARGET',`all',`any')
 Section: ifdef(`TARGET',`devel',`libs')
 Priority: ifdef(`TARGET',`extra',PRI(required))
-Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, ${shlibs:Depends}
 Description: The GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `')
  This package contains an additional runtime library for C++ programs
  built with the GNU compiler.
@@ -630,7 +655,7 @@
 Architecture: ifdef(`TARGET',`all',`biarch32_archs')
 Section: ifdef(`TARGET',`devel',`libs')
 Priority: ifdef(`TARGET',`extra',PRI(optional))
-Depends: gcc`'PV-base (= ${gcc:Version}), lib32gcc1`'LS
+Depends: BASEDEP, lib32gcc1`'LS
 Description: The GNU Standard C++ Library v3 (32 bit Version)
  This package contains an additional runtime library for C++ programs
  built with the GNU compiler.
@@ -645,7 +670,7 @@
 Architecture: ifdef(`TARGET',`all',`biarch64_archs')
 Section: ifdef(`TARGET',`devel',`libs')
 Priority: ifdef(`TARGET',`extra',PRI(optional))
-Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends}, lib64gcc1`'LS
+Depends: BASEDEP, ${shlibs:Depends}, lib64gcc1`'LS
 Description: The GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (64bit)
  This package contains an additional runtime library for C++ programs
  built with the GNU compiler.
@@ -665,7 +690,7 @@
 Architecture: ifdef(`TARGET',`all',`any')
 Section: ifdef(`TARGET',`devel',`libdevel')
 Priority: ifdef(`TARGET',`extra',PRI(standard))
-Depends: gcc`'PV-base (= ${gcc:Version}), g++`'PV`'TS (= ${gcc:Version}), libstdc++CXX_SO`'LS (>= ${gcc:Version}), ${dep:libcdev}
+Depends: BASEDEP, g++`'PV`'TS (= ${gcc:Version}), libstdc++CXX_SO`'LS (>= ${gcc:Version}), ${dep:libcdev}
 ifdef(`TARGET',`',`dnl native
 Conflicts: libg++27-dev, libg++272-dev (<< 2.7.2.8-1), libstdc++2.8-dev, libg++2.8-dev, libstdc++2.9-dev, libstdc++2.9-glibc2.1-dev, libstdc++2.10-dev (<< 1:2.95.3-2), libstdc++3.0-dev, libstdc++6-0-dev
 Replaces: libstdc++6-0-dev
@@ -689,7 +714,7 @@
 Architecture: ifdef(`TARGET',`all',`any')
 Section: ifdef(`TARGET',`devel',`libdevel')
 Priority: extra
-Depends: gcc`'PV-base (= ${gcc:Version}), libstdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version})
+Depends: BASEDEP, libstdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version})
 Description: The GNU Standard C++ Library v3 (shared library subset kit)`'ifdef(`TARGET)',` (TARGET)', `')
  This is used to develop subsets of the libstdc++ shared libraries for
  use on custom installation floppies and in embedded systems.
@@ -705,7 +730,7 @@
 Architecture: ifdef(`TARGET',`all',`any')
 Section: ifdef(`TARGET',`devel',`libdevel')
 Priority: extra
-Depends: gcc`'PV-base (= ${gcc:Version}), libstdc++CXX_SO`'LS (>= ${gcc:Version})
+Depends: BASEDEP, libstdc++CXX_SO`'LS (>= ${gcc:Version})
 Recommends: libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version})
 Conflicts: libstdc++5-dbg`'LS, libstdc++5-3.3-dbg`'LS, libstdc++6-dbg`'LS, libstdc++6-0-dbg
 Replaces: libstdc++6-0-dbg
@@ -722,7 +747,7 @@
 Architecture: ifdef(`TARGET',`all',`biarch32_archs')
 Section: ifdef(`TARGET',`devel',`libdevel')
 Priority: extra
-Depends: gcc`'PV-base (= ${gcc:Version}), lib32stdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version})
+Depends: BASEDEP, lib32stdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version})
 Conflicts: libstdc++5-dbg`'LS, libstdc++5-3.3-dbg`'LS, libstdc++6-dbg`'LS, libstdc++6-0-dbg, libstdc++6-4.0-dbg (<< 4.0.0-7ubuntu7)
 Replaces: libstdc++6-0-dbg
 Description: The GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
@@ -738,7 +763,7 @@
 Architecture: ifdef(`TARGET',`all',`biarch64_archs')
 Section: ifdef(`TARGET',`devel',`libdevel')
 Priority: extra
-Depends: gcc`'PV-base (= ${gcc:Version}), lib64stdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version})
+Depends: BASEDEP, lib64stdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version})
 Conflicts: libstdc++5-dbg`'LS, libstdc++5-3.3-dbg`'LS, libstdc++6-dbg`'LS, libstdc++6-0-dbg, libstdc++6-4.0-dbg (<< 4.0.0-7ubuntu7)
 Replaces: libstdc++6-0-dbg
 Description: The GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
@@ -755,7 +780,7 @@
 Architecture: all
 Section: doc
 Priority: PRI(optional)
-Depends: gcc`'PV-base (>= ${gcc:SoftVersion})
+Depends: SOFTBASEDEP
 Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc
 Description: The GNU Standard C++ Library v3 (documentation files)
  This package contains documentation files for the GNU stdc++ library.
@@ -772,7 +797,7 @@
 Package: gnat`'-GNAT_V
 Architecture: any
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}
+Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}
 Suggests: gnat`'PV-doc, ada-reference-manual
 Provides: ada-compiler, gnat
 Conflicts: gnat, gnat-3.1, gnat-3.2, gnat-3.3, gnat-3.4, gnat-3.5
@@ -786,7 +811,7 @@
 Section: libs
 Architecture: any
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, ${shlibs:Depends}
 Conflicts: libgnat-3.5
 Replaces: libgnat-3.5
 Description: Runtime library for GNU Ada applications
@@ -797,7 +822,7 @@
 Architecture: all
 Section: doc
 Priority: PRI(optional)
-Depends: gcc`'PV-base (>= ${gcc:SoftVersion})
+Depends: SOFTBASEDEP
 Suggests: gnat`'PV
 Conflicts: gnat-3.5-doc
 Replaces: gnat-3.5-doc
@@ -809,7 +834,7 @@
 Package: gpc`'GPC_PV
 Architecture: any
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}
+Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}
 Recommends: libgmp3-dev, libncurses5-dev
 Suggests: gpc`'GPC_PV-doc (>= ${gpc:Version})
 Provides: pascal-compiler
@@ -824,7 +849,7 @@
 Architecture: all
 Section: doc
 Priority: PRI(optional)
-Depends: gcc`'PV-base (>= ${gcc:SoftVersion})
+Depends: SOFTBASEDEP
 Replaces: gpc (<= 2.91.58-3)
 Suggests: gpc`'GPC_PV
 Description: Documentation for the GNU Pascal compiler (gpc)
@@ -838,7 +863,7 @@
 Package: treelang`'PV
 Architecture: any
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${shlibs:Depends}
 Conflicts: treelang-3.5
 Replaces: treelang-3.5
 Description: The GNU Treelang compiler
@@ -854,7 +879,7 @@
 Package: gcc`'PV-soft-float
 Architecture: arm armeb
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), ifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}
+Depends: BASEDEP, ifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}
 Replaces: gcc-soft-float-ss
 Description: The soft-floating-point gcc libraries (arm)
  These are versions of basic static libraries such as libgcc.a compiled
@@ -866,7 +891,7 @@
 Package: fixincludes
 Architecture: any
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${shlibs:Depends}
+Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${shlibs:Depends}
 Description: Fix non-ANSI header files
  FixIncludes was created to fix non-ANSI system header files. Many
  system manufacturers supply proprietary headers that are not ANSI compliant.
@@ -884,7 +909,7 @@
 Architecture: all
 Section: doc
 Priority: PRI(optional)
-Depends: gcc`'PV-base (>= ${gcc:SoftVersion})
+Depends: SOFTBASEDEP
 Conflicts: gcc-docs (<< 2.95.2), gcc-3.5-doc
 Replaces: gcc (<=2.7.2.3-4.3), gcc-docs (<< 2.95.2), gcc-3.5-doc
 Description: Documentation for the GNU compilers (gcc, gobjc, g++)
@@ -897,7 +922,7 @@
 Package: gcc`'PV-nof
 Architecture: powerpc
 Priority: PRI(optional)
-Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends}ifenabled(`cdev',`, gcc`'PV (= ${gcc:Version})')
+Depends: BASEDEP, ${shlibs:Depends}ifenabled(`cdev',`, gcc`'PV (= ${gcc:Version})')
 Conflicts: gcc-3.2-nof
 Description: The no-floating-point gcc libraries (powerpc)
  These are versions of basic static libraries such as libgcc.a compiled
Index: debian/rules.defs
===================================================================
--- debian/rules.defs	(revision 963)
+++ debian/rules.defs	(working copy)
@@ -134,6 +134,12 @@
 with_gccbase := yes
 with_dev := yes
 
+# when DEB_CROSS_INDEPENDENT is set we build and depend on a 
+# separate -base package for the cross compiler.
+ifeq ($(DEB_CROSS_INDEPENDENT),yes)
+  with_gccxbase := yes
+endif
+
 #no_dummy_cpus := ia64 i386 hppa s390 sparc
 #with_base_only := yes
 #ifneq (, $(filter $(DEB_TARGET_ARCH_CPU),$(no_dummy_cpus)))
Index: debian/README.cross
===================================================================
--- debian/README.cross	(revision 963)
+++ debian/README.cross	(working copy)
@@ -100,11 +100,18 @@
 debian/target file. If both GCC_TARGET is defined and debian/target file
 exists, GCC_TARGET is used.
 
-Run debian/rules control. This will change debian/control file, adjusting
-build-depends.
+Run debian/rules control. This will change debian/control file,
+adjusting build-depends.  By default, the packages will depend on the
+system -base package.  This means future upgrades of the system gcc
+will require you to keep your cross compilers in sync by rebuilding.
+If you want to depend on a separate -base package for your cross
+compiler, specify DEB_CROSS_INDEPENDENT=yes on the command line,
 
-Build the package using dpkg-buildpackage.
+You can then build with either
 
+$ GCC_TARGET=[arch] dpkg-buildpackage -rfakeroot
+or
+$ GCC_TARGET=[arch] DEB_CROSS_INDEPENDENT=yes dpkg-buildpackage -rfakeroot
 
 3. Using crosshurd
 
Index: debian/rules.conf
===================================================================
--- debian/rules.conf	(revision 963)
+++ debian/rules.conf	(working copy)
@@ -282,6 +282,9 @@
 ifdef DEB_CROSS
   languages = c c++
   addons = libgcc lib64gcc libcxx lib64cxx cdev c++dev
+  ifdef DEB_CROSS_INDEPENDENT
+    addons += gccxbase
+  endif
 else
   languages = ada c c++ f95 java objc treelang # pascal
   addons = gccbase cdev c++dev fastjar fdev fixincl libcxx libg2c \

Reply to: