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