From owner-freebsd-hackers@FreeBSD.ORG Fri Jun 20 20:52:33 2008 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CAF0D106566C for ; Fri, 20 Jun 2008 20:52:33 +0000 (UTC) (envelope-from pisymbol@gmail.com) Received: from ik-out-1112.google.com (ik-out-1112.google.com [66.249.90.181]) by mx1.freebsd.org (Postfix) with ESMTP id 5F6718FC12 for ; Fri, 20 Jun 2008 20:52:33 +0000 (UTC) (envelope-from pisymbol@gmail.com) Received: by ik-out-1112.google.com with SMTP id c30so914802ika.3 for ; Fri, 20 Jun 2008 13:52:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=rqbA+GlDG/Smn1Ka0pSCw8EYpoiUbEHAgfn1uWMxFzg=; b=weXZJpVEGWWdtMgLI4hpB77jKZ2CBkrVSuUAL7cFB3Xu25L8zRnuroSPzVaIbuDagb Bs1SAMWDD3ulj4DGq1cSRiNjTo9opAyQeZu7/QQcTHSuMOrvRFeXYr96brM0MBA+iuTY 95gijbqZH1ONaFGQzil3hOBsZ+TMWpmLH2bGM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=OaO0W02HcZNdpQnNrW7HuutH1wHfn+gO5ECxtM7U6TNNJANbu8DJ5yzDSiqqewmZcx BU9OciWksFRSw9pndDTTGTiLV5r0A7hAfZvrEGw1x2+ArJWVcu5qmPZ+nBshqFymuKJW MP9vtq1BX1S7jrfmChFaO4NiQMqgcsm6U6Mo4= Received: by 10.210.24.7 with SMTP id 7mr3503950ebx.178.1213995152089; Fri, 20 Jun 2008 13:52:32 -0700 (PDT) Received: by 10.210.22.4 with HTTP; Fri, 20 Jun 2008 13:52:32 -0700 (PDT) Message-ID: <3c0b01820806201352n54b846cas612a6923531ef04@mail.gmail.com> Date: Fri, 20 Jun 2008 16:52:32 -0400 From: "Alexander Sack" To: "Garrett Cooper" In-Reply-To: <7d6fde3d0806190822s1420dcake3a38be7189b8ab0@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <3c0b01820806190629o7264cfaeg6fa6a08a6822047e@mail.gmail.com> <7d6fde3d0806190822s1420dcake3a38be7189b8ab0@mail.gmail.com> Cc: freebsd-hackers@freebsd.org Subject: Re: Cross platform building best practices (building 6 on 7) X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jun 2008 20:52:34 -0000 On Thu, Jun 19, 2008 at 11:22 AM, Garrett Cooper wrote: > On Thu, Jun 19, 2008 at 6:29 AM, Alexander Sack wrote: >> Hello Folks: >> >> I've done a lot of Googling and scouring the lists about this >> particular subject so I apologize for rehashing it. However, I'm >> still confused on what's the best way to perform BSD cross platform >> builds. Ideally what I want to have is an environment whereby I can >> build a 6.1-RELEASE tree on a 7.0-RELEASE box. I thought originally I >> could check out a 6.1 release version, perform make world, and then >> use the output of that build as either a basis for a jail or a >> toolchain. However, as noted by previous threads, 6.x doesn't build >> on a 7.x due to gcc4/binutils compatibility issues (please correct me >> if I'm wrong). I then thought I could potentially download a patched >> binutils, copy it into src/contrib/binutils and that would potentially >> fix it. No dice (and I'm still debugging why since this binutils >> package DOES build outside of the make world infrastructure without >> issue, this very well could be pilot error on my part since I didn't >> update the VERSION string and didn't trim the source files as per the >> FreeBSD-deleteList etc.). >> >> I THEN thought if I build/install a gcc-3.x/bintuils toolchain I could >> complie a 6.x on a 7.x machine. Well I haven't done that yet since at >> this point I believe I'm diverged from the path of FreeBSD build >> enlightenment! Moreover, if would be NICE if I could bootstrap the >> normal dev tools from the exiting make world build tree. I'm not yet >> ready for a lot of hackery on the build tree without asking around. >> :D! >> >> Does anyone due cross-platform builds (without host virtualization)? >> >> Thanks! >> >> -aps > > (I'll stick to just hackers@ because I don't want to pollute > questions@ unnecessarily) Sorry I felt really bad actually cc'ing questions its just that my last groking produced many threads in freebsd-questions as opposed to hackers. I'll try to be more attentive to my posts (I have a habit cc'ing multiple forums because sometimes they apply but questions is for normal troubleshooting, not cross-platform build issues!). > You touched on an important point. There were some code quality issues > (I think) with 6.x that were resolved moving to 7.x, which caused > gcc-4.2.x to barf. Probably but I'm not trying to point fingers! :D! > gcc-4.2.x requires a newer version of binutils, just because (for API > / usage compatibility). Yea understood. To be honest, this isn't documented very readily. I first thought it was pilot error on me, then I decided to take a look at what failed to compile (I believe it was an innocent extern). And then got lost in gcc/binutils hell. Luckily I've smelled this problem before and after some research confirmed by suspicion. > What you should probably do is create a jail then do your development > for 6.x in a jail, 7.x in another, and (if you're bold enough ;)...) > do 8.x development in yet a third. Jail's are a much better way to > isolate things such that you don't have to worry about toolchain > issues like these and are able to setup a sourcebase as the devs > intended it (for the most part; you may run into issues with sysctls > and virtual kernel stuff like that, but cest la vie... there isn't a > better way I know of than that outside of running a VM). I figured you were going ot say that Garrett. Well OK, but I still need to bootstrap my dev environment for 6.x development on 7.x. Since binutils compatibility makes my 6.x make world barf on 7.x, where should I go? I HAVE not parsed through a lot of the build infrastructure yet but it would seem to be IF make world bootstraps the world including the development tools, why can't I update binutils/gcc inplace and then compile (or is this a regression issue which I failed to grasp). Or do I need to update binutils on my *host* system itself? i.e. what I'm really asking is does make world bootstrap the right bintuils/gcc etc. and then use THAT to compile the rest or does it just perform a host build of everything and plops it in DESTDIR? Hope I make some sense here (still a n00b).... -aps