From owner-freebsd-ports@FreeBSD.ORG Tue Jul 22 08:39:44 2008 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B9418106566C; Tue, 22 Jul 2008 08:39:44 +0000 (UTC) (envelope-from david@vizion2000.net) Received: from dns1.vizion2000.net (77-99-36-42.cable.ubr04.chap.blueyonder.co.uk [77.99.36.42]) by mx1.freebsd.org (Postfix) with ESMTP id 48FCA8FC19; Tue, 22 Jul 2008 08:39:44 +0000 (UTC) (envelope-from david@vizion2000.net) Received: by dns1.vizion2000.net (Postfix, from userid 1007) id F25901CC81; Tue, 22 Jul 2008 02:01:22 -0700 (PDT) From: David Southwell Organization: Voice and Vision To: freebsd-ports@freebsd.org Date: Tue, 22 Jul 2008 02:01:22 -0700 User-Agent: KMail/1.9.7 References: <200807220107.53942.david@vizion2000.net> <20080722081630.GA86993@eos.sc1.parodius.com> In-Reply-To: <20080722081630.GA86993@eos.sc1.parodius.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200807220201.22735.david@vizion2000.net> Cc: Jeremy Chadwick Subject: Re: gcc versions following upgrade 6.3 >7.0 X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Jul 2008 08:39:44 -0000 On Tuesday 22 July 2008 01:16:30 Jeremy Chadwick wrote: > On Tue, Jul 22, 2008 at 01:07:53AM -0700, David Southwell wrote: > > On Monday 21 July 2008 23:27:49 Garrett Cooper wrote: > > > On Mon, Jul 21, 2008 at 4:09 AM, Jeremy Chadwick wrote: > > > > On Mon, Jul 21, 2008 at 03:11:25AM -0700, david@vizion2000.net wrote: > > > >> FreeBSD **.vizion2000.net 7.0-STABLE FreeBSD 7.0-STABLE #0: Wed Jul > > > >> 16 09:27:38 PDT 2008 > > > >> @**.vizion2000.net:/usr/obj/usr/src/sys/GENERIC amd64 # pkg_info > > > >> |grep gcc > > > >> gcc-4.1.3_20080630 GNU Compiler Collection 4.1 > > > >> gcc-4.2.5_20080702 GNU Compiler Collection 4.2 > > > >> gccmakedep-1.0.2 Create dependencies in makefiles using 'gcc -M' > > > >> > > > >> Should both versions be installed? > > > > > > > > That depends. Are you using any ports which depend on specific > > > > versions of GCC? The base system version comes with gcc 4.2.1. > > > > There may be ports which require older or newer GCC, however. > > > > > > > > "pkg_info -R" should help you determine what ports are dependant upon > > > > those two GCC ports. > > > > > > There isn't anything wrong with having multiple compilers installed on > > > a given system, insomuch as they install within separate directories > > > or are prefixed differently. The sym-/hard-links for the compiler last > > > installed may be the one that gets used though (not sure because I > > > don't have any experience installing gcc from ports on FreeBSD)... > > > > > > >> Do they not place files in same place? > > > > > > > > No. > > > > > > This ties into the reply above, but if you have a compiler provided by > > > the base system and a compiler provided by ports, they won't install > > > in the same location, as ${PREFIX} dictates in ports. > > > > > > -Garrett > > > > What happens, as in this instance, the system was originally on 6.1 then > > 6.3 & subsequently upgraded to 7.0? > > > > How can I tell whether the versions were installed by the base system or > > via ports? > > The "base system" does not add anything to the ports/pkg database. The > reason you have gcc 4.1.3 and gcc 4.2.5 on your machine is because some > other port/package depended/depends on them. pkg_info -R will solve > that mystery. > > As I said before: some ports/packages may require a newer (or older) > version of GCC, in which case, you'll end up with two (or more) versions > of gcc on your system -- one in the base and one (or more) managed via > ports. > > Regardless of what Garrett and others say about how multiple compilers > on a system "works great", I do not advocate it. There are many catches > which can/will surprise you down the road, especially with regards to > library linking order, symbol versioning, and a couple other things. > I'm sorry, but in my eyes it's risky behaviour. We've been down this > road before back when perl was in the base system, for similar reasons. > > This spawns the whole base vs. ports discussion. For the record, I am > one of the minority who wants to do away with the entire "base system" > concept. I do not want this thread to start discussing that, though; > let's stay on topic. I just wanted to point it out so that you have > some idea of *why* I say what I do. > > > I am not clear about how the system distinguishes between gcc installed > > via ports and via base system. Indcidentally when did gcc become part of > > the base system? > > It always has been part of the base system, since at least FreeBSD 2.x > days. I can't speak for 1.x because I wasn't using FreeBSD then. > > Use "pkg_info -R gcc-4.1.3_20080630" to see what ports are reliant upon > gcc 4.1.3, and rebuild those ports now that you've upgraded to FreeBSD 7 > (which includes gcc 4.2.1 in the base system). FreeBSD 6 had gcc 3.4.6, > which is why some ports might have wanted something newr. > > Does all of this now make sense? Makes a very great deal of sense. During a portupgrade -frR ruby* (necessitated following a power out during a portupgrade!!!) I had a consol message about the two versions of gcc causing a conflict. The conflict was resolved by the upgrades. It was that message that started my enquiry. The dependencies in 4.1_3 have now been removed from pkgdb following the portupgrade and that version deinstalled. Thank you, and everyone else, for taking the time to answer my question. David