#!/bin/bash
#
# by A. Kleen (andi@mlm.extern.lrz-muenchen.de) 
#
# Installiert eine PKG, die in /usr/local/pkg/$PACKAGE installiert wurde.
# Dazu werden die entsprechenden Links nach /usr/local erstellt. 
#
# Bugs:
#		Kann keine Packages installieren, die mit - beginnen 
#		(Option sind nicht 100% POSIX)
#

PACKAGE_PREFIX="/pkg"
INSTALL_PREFIX="/usr/local"

# lib wird ueblicherweise nicht benoetigt (da nur das Programm darauf zugreift)
# doc braucht man auch nicht
# evtw. elisp/site-lisp ??  

INSTALL_DIRS="bin man include info lib/pkgconfig" 

VERBOSE=true
SIM=""
UNINSTALL=false

while : 
do	
	case "$1" in
	-u) UNINSTALL=true ; shift ; continue ;; 	
	-d) INSTALL_DIRS="$1 $INSTALL_DIRS" ; shift ; continue ;;
	-q) VERBOSE=false ; shift ; continue ;; 
	-n) SIM=echo ; shift ; continue ;; 		
	-*) echo "usage: $0 [ -d dir ..] package .." >&2 ; exit 1 ;;
	"") exit 0 ;; 	
    *) ;; 
	esac

	cd $PACKAGE_PREFIX/$1
	for dir in $INSTALL_DIRS ; do
		if [ ! -r $dir ] ; then
			continue	
		fi 

		find $dir -type f |
		while read file ; do
			if $UNINSTALL ; then
				$SIM rm $INSTALL_PREFIX/$file
			else		
				if [ -f $INSTALL_PREFIX/$file ] ; then
				    if [ -L $INSTALL_PREFIX/$file ] ; then
			            $VERBOSE && ( 
				        echo >&2 -n "warning: package $1 overwrites file $file in package "
				        ls -l $INSTALL_PREFIX/$file |
						perl -ne "m#$PACKAGE_PREFIX/([^/]+)#; print \"\$1\n\""
						)
				    else
				        $VERBOSE && 
			            echo >&2 "warning: package $1 overwrites regular file $file"
				    fi		
			    fi	

				$SIM mkdir -p `dirname $INSTALL_PREFIX/$file`  
			    $SIM ln -sf $PACKAGE_PREFIX/$1/$file $INSTALL_PREFIX/$file
			fi	 	
		done
	done
		
	#if [ $cnt -eq 0 ] ; then
	#	$VERBOSE && echo >&2 "warning: nothing installed in package $1"
	#fi	

	shift
done		
	
exit 0 
				

