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

Re: [Debian-bootstrap] An apparent need for gcc-<triplet>, cpp-<triplet>, g++-<triplet>, etc.



On 2012-07-02 06:52, Wookey wrote:
> The disadvantage of the way it's currently done is that if a
> knowledgeable user installs gcc-4.7-<triplet> they get a toolchain
> that doesn't work.

AFAICT, this applies to the native compiler packages as well.  A user
can install gcc-4.7 without installing gcc.  However, I think users tend
to install gcc rather than a real versioned package like gcc-4.7.  And
more to the point, build-essential depends on gcc, not on gcc-4.7.

But it's not that the toolchain "doesn't work" per se if a user doesn't
install gcc or gcc-<triplet>.

Basically, a user who installs only a versioned compiler package (e.g.
gcc-4.7) gets only a versioned compiler name (/usr/bin/gcc-4.7).  But
for a user who installs gcc and/or build-essential, things will Just Work.

As I mentioned before [1], I'd like to make this Just Work with
crossbuild-essential-<target> packages [2][3] as well by depending on
gcc-<triplet> and g++-<triplet> rather than gcc-4.7-<triplet> and
g++-4.7-<triplet>.

> My questions are:
> how does it work for native gcc?

src:gcc-defaults builds a number of metapackages (gcc, cpp, g++, ...).
Each of these depends on the default version of a tool and provides a
symbolic link to it.  For example, the gcc package in sid currently
depends on cpp (>= 4:4.7.1-1) and gcc-4.7 (>= 4.7.1-1~) and provides a
link at /usr/bin/gcc to /usr/bin/gcc-4.7.

So when a user runs `gcc foo.c` or natively builds a Debian package that
contains C code, he/she is using a symbolic link provided by a metapackage.

If a user wants to use a version of GCC (e.g. 4.6) other than the
current Debian default, he/she can just run the executable directly
(e.g. `gcc-4.6 foo.c`).  Setting the "CC" variable to the desired
version of the compiler should suffice for building most packages.  In
other cases, manually changing the symbolic link at /usr/bin/gcc is of
course always an option.

> And reason not to do the same thing in cross-world?

None as far as I can tell.  That's why I proposed that we do so. :)

[1]:
http://lists.mister-muffin.de/pipermail/debian-bootstrap/2012-July/000248.html
[2]: http://bootstrap.pehjota.net/build-essential/
[3]: http://bootstrap.pehjota.net/archive/pool/main/c/cross-build-essenti

-- 
P. J. McDermott                                        (_/@\_)    ,--.
http://www.pehjota.net/                           o    < o o >   / oo \
http://www.pehjota.net/contact.html                 o   \ `-/    | <> |.
                                                o o o    "~v    /_\--/_/


Reply to: