Make package-recursive problem

Matt Juszczak matt at atopia.net
Fri May 22 16:37:04 UTC 2009


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


More information about the freebsd-ports mailing list