Building packages intelligently
From FBSD_tips
A few points on this script :
- NOT DONE YET
- little more that a proof of concept
- EXPERIMENTAL (it could kill your dog, cat or other dependant non-human being)
#!/bin/sh
dig_ports () \
{
PT=$1
(cd ${PT} && make missing) | while read D
do
echo "Missing port $D for $PT"
dig_ports /usr/ports/$D
done
# clear
echo ">>>>>>>>>>>>>>>>>>>"
echo "in ${PT}"
grep ${PT} /tmp/done.txt > /dev/null
if [ $? -eq 0 ]; then
echo "Already done"
echo "leaving ${PT}"
echo "<<<<<<<<<<<<<<<<<<<<"
return
fi
cd ${PT}
PNAME=`make package-name`
pkg_info -q ${PNAME} 2> /dev/null > /dev/null
if [ $? -eq 0 ]
then
echo ${PT} >> /tmp/done.txt
echo "Already installed"
echo "leaving of ${PT}"
echo "<<<<<<<<<<<<<<<<<<<"
return
fi
if [ -r /usr/ports/packages/All/${PNAME}.tbz ]
then
echo "Not installed, but tarball exists (/usr/ports/packages/All/${PNAME}.tbz)"
pkg_add /usr/ports/packages/All/${PNAME}.tbz
echo ${PT} >> /tmp/done.txt
echo "Installed from tarball"
echo "out of ${PT}"
echo "<<<<<<<<<<<<<<<<<<<<"
return
fi
echo "no tarball exists (/usr/ports/packages/All/${PNAME}.tbz), building one"
(cd ${PT} && make clean package > /tmp/recurse_ports.log || exit)
echo ${PT} >> /tmp/done.txt
echo "out of ${PT}"
echo "<<<<<<<<<<<<<<<<<<<<"
return
}
echo "" > /tmp/done.txt
dig_ports $1
