Building packages intelligently

From FBSD_tips

Jump to: navigation, search

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

Personal tools