#!/bin/sh # run like this: ocaml-rebuild.sh [-h | -f] [emerge_options] emerge=/usr/bin/emerge qpkg=/usr/bin/qpkg if [ ! -x $qpkg ] then echo "You need to emerge gentoolkit for this script to work" exit 1 fi if [ "$1" = "-h" ] then echo "usage: ocaml-rebuild.sh [-h | -f(orce)] [emerge_options]" echo "With -f, the packages will first be unmerged and then emerged" echo "with the given options to ensuree correct dependancy analysis." echo "Otherwise emerge is run with the --pretend flag and the given" echo "options." echo "It is recommended to keep the list of rebuilt packages printed" echo "in pretend mode in case something go wrong" exit 1 fi if [ "$1" = "-f" ] then pretend=0 shift else pretend=1 fi depends=`find /var/db/pkg -name DEPEND -exec grep -l 'dev-lang/ocaml\\|dev-ml/findlib' {} \;` for dep in $depends do dir=`dirname $dep` pkg=`basename $dir` category=`cat $dir/CATEGORY` toclean="=$category/$pkg $toclean" tocleanstr="\"$category/$pkg\" $tocleanstr" tobuild=">=$category/$pkg $tobuild" tobuildstr="\">=$category/$pkg\" $tobuildstr" done echo Cleaning $tocleanstr echo Building $tobuildstr if [ "$toclean" != "" ] then if [ $pretend -eq 1 ] then $emerge --pretend $@ $tobuild else $emerge unmerge $toclean $emerge $@ $tobuild fi else echo "Nothing to update" fi