From owner-freebsd-ports@FreeBSD.ORG Wed Dec 3 22:19:05 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 3117E1065672 for ; Wed, 3 Dec 2008 22:19:05 +0000 (UTC) (envelope-from scode@hyperion.scode.org) Received: from hyperion.scode.org (cl-1361.ams-04.nl.sixxs.net [IPv6:2001:960:2:550::2]) by mx1.freebsd.org (Postfix) with ESMTP id E7E0F8FC08 for ; Wed, 3 Dec 2008 22:19:04 +0000 (UTC) (envelope-from scode@hyperion.scode.org) Received: by hyperion.scode.org (Postfix, from userid 1001) id E342F23C454; Wed, 3 Dec 2008 23:19:03 +0100 (CET) Date: Wed, 3 Dec 2008 23:19:03 +0100 From: Peter Schuller To: Sean McAfee Message-ID: <20081203221903.GA57472@hyperion.scode.org> References: <20081203210233.GA55633@hyperion.scode.org> <20081203211627.GA56450@hyperion.scode.org> <4936F9A4.8030504@collaborativefusion.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="yrj/dFKFPuw6o+aM" Content-Disposition: inline In-Reply-To: <4936F9A4.8030504@collaborativefusion.com> User-Agent: Mutt/1.5.18 (2008-05-17) Cc: freebsd-ports@freebsd.org Subject: Re: Deterministic package building with ports 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: Wed, 03 Dec 2008 22:19:05 -0000 --yrj/dFKFPuw6o+aM Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable > On the "donor" system: > 1. portupgrade -a > 2. for a in `pkg_info -ao | awk '{ print $1 }'` ; do pkg_create -b $a ; d= one > 3. Push packages up to NFS'ed ports tree host's /usr/ports/packages >=20 > On the remaining systems, it's just a matter of running portupgrade -aPP. Thanks! It helps to know what people are doing in practice. The problem I have with this is the 'portupgrade -a' step. portupgrade, in my experience, has sever issues with consistenty relative to the actual ports tree in dependencies and figuring out correctly what needs to be built and not. In addition, '-a' only upgrades individual ports that have changed; not ports depending on them. You can do -arR instead or similar, but that does not help because the process is not re-startable. I have not found out a way to make portupgrade ensure that installed packages are what you would have gotten had you installed your packages on a clean system from scratch. This latter is what portmanager tries to do. While I like the idea for in-place updating on a system, it has no supports for building packages, and it too has its own set of issues with respect to deciding what to upgrade and in what order. portupgrade also does not support the concept of maintaining a list of packages that you specifically want. This leads to problems over time as dependency ports move around, disappear and have files moving between them. Both tools, portmanager and portupgrade, have always ended up, for me, leading to a subset of broken packages that won't build or install for various reasons - with said set growing larger over time. The only method I have found which allows me to build and install ports in a way which mostly works, assuming the port is not broken, is to do "clean slate" installations. However, just doing "for origin in $(cat somelist) ; do cd ... ; make package-recusrive clean" and similar solutions have issues, including non-restability and issues with recursion and duplicate work/package creation. This is what I am trying to automate with my shell hacks... which again *mostly* work, but not quite either. --=20 / Peter Schuller PGP userID: 0xE9758B7D or 'Peter Schuller ' Key retrieval: Send an E-Mail to getpgpkey@scode.org E-Mail: peter.schuller@infidyne.com Web: http://www.scode.org --yrj/dFKFPuw6o+aM Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (FreeBSD) iEYEARECAAYFAkk3BdYACgkQDNor2+l1i31ETQCg8DuWh8eLEMpbdyCak2v4gkqw sk0An2yQnp8HVM6pA00XmslvIlxgoYJS =RT8z -----END PGP SIGNATURE----- --yrj/dFKFPuw6o+aM--