From owner-freebsd-ports@FreeBSD.ORG Fri May 22 16:37:03 2009 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 D269D1065687 for ; Fri, 22 May 2009 16:37:03 +0000 (UTC) (envelope-from matt@atopia.net) Received: from pluto.atopia.net (pluto.atopia.net [67.222.134.90]) by mx1.freebsd.org (Postfix) with ESMTP id B70368FC18 for ; Fri, 22 May 2009 16:37:03 +0000 (UTC) (envelope-from matt@atopia.net) Received: by pluto.atopia.net (Postfix, from userid 1003) id DFD9222950; Fri, 22 May 2009 12:17:44 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by pluto.atopia.net (Postfix) with ESMTP id DEC252285A for ; Fri, 22 May 2009 12:17:44 -0400 (EDT) Date: Fri, 22 May 2009 12:17:44 -0400 (EDT) From: Matt Juszczak To: freebsd-ports@freebsd.org Message-ID: User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Subject: Make package-recursive problem 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: Fri, 22 May 2009 16:37:04 -0000 Hi all, I've started noticing more and more that packages I build are missing files after they are rebuilt. I've tested this time and time again, and seem to be able to show that about 10 ports (gettext, apache, net-snmp, some php modules, etc.) are built correctly the first time, but when later re-packaged, do not contain all the files they need. For instance, I have a build box (named atlantis for the sake of this email): on atlantis, I build all packages with make package-recursive, and then install them on all boxes via NFS. This works fine, except that over time, as I compile more packages, the ports system re-generates packages for existing built packages (for instance, if I make a nagios package, it recreates the apache package since that's a dependency. If I then install cacti, it recreates the apache package again). This is normally no big deal, as I haven't touched my source tree, config options, or anything like that. 99% of the time the packages are rebuilt consistently. However, since this point, I've had some php modules come up empty (as in my original email), and now, I'm having some other flukes as well. If you'll see below, somehow, fontconfig, mysql-client, and python25 got out of whack between my build box and a production webserver. Yet these are packages built from the same environment - same box, same config, same tree, etc. - I didn't change a thing, other than install them at different times. But my build tree on atlantis has not been updated or changed in any manor. This obviously occured because make package-recursive rebuilt these packages at some point because they were dependencies for other packages being installed. Except that, obviously, it didn't build the packages 100% identically to the time before: local$ sh check2.sh barfy -> fontconfig-2.6.0,1 isn't right barfy -> mysql-client-5.0.77_1 isn't right barfy -> python25-2.5.4_1 isn't right local$ sh check3.sh Server 1: atlantis Server 2: barfy Package: fontconfig Password: Password: 65,67d64 < /usr/local/share/doc/fontconfig/fontconfig-user.html < /usr/local/share/doc/fontconfig/fontconfig-user.pdf < /usr/local/share/doc/fontconfig/fontconfig-user.txt Here's an example of how to replicate: - Create and install net-snmp package on box1 and box2 - Set make.conf options for apache2 - Create a nagios package (cd /usr/ports/.../nagios && make package-recursive) - Install the nagios package on box1 - Create a cacti package (cd /usr/ports/.../cacti && make package-recursive) - Install the cacti package on box2 What you'll now most likely find is that there are package differences between the two boxes in the SNMP and apache package. One of the boxes (most likely box2) will be missing startup scripts for snmp because, when you created the cacti package, it re-created an apache package too, except that it didn't have all of the files. pkg_info -xL net-snmp will show two different result sets from each box, even though the net-snmp package was built from the same box. If you need me to, I can replicate this issue in actuality by pasting a command output showing the differences. Please let me know if that's needed. Thanks! -Matt