echo "usage:"
echo "$0 [install/remove] [root] [package]"
echo "$0 [dist-install] [root] [dist file]"
+ echo "$0 [update]"
echo
echo "options:"
echo "-v tell me whats going on"
echo "-a auto resolve deps, do not prompt user"
echo "-no-dep do not care for dependencies (used by hdw-get itself)"
echo "-s simulation only, do not install/remove packages"
+ echo "-b base package, not listed in hdw-get.db"
echo
}
verbose="" ; no_dep=""
auto_resolve_deps=""
simulate=""
+base=""
FL_DIR="var/adm/flists"
DEPS_DIR="var/adm/deps/run"
-a) auto_resolve_deps="1" ; shift 1 ;;
-no-dep) no_dep="1" ; shift 1 ;;
-s) simulate="1" ; shift 1 ;;
+ -b) base="1" ; no_dep="1" ; shift 1;;
*) usage ; exit 1 ;;
esac
done
echo -en " done. (`cat $DBF | wc -l` packages)\n"
fi
-# create temp directory
-mkdir -p /tmp/.hdw-get
-
# remove
if [ "$remove" = "1" ] ; then
# check if packages depend on package to be removed
if [ "$simulate" != "1" ] ; then
- # care about info/dir file
- rm -f /tmp/.hdw-get/dir* ; modify_info_dir=""
- if [ -n "`grep usr/share/info/dir $fl_file`" ] ; then
- modify_info_dir="1"
- cp $inst_root/usr/share/info/dir /tmp/.hdw-get/
- for info_obj in `grep 'usr/share/info/.*.info' $fl_file | \
- awk -F/ '{ print $4 }'`; do
- info_o=`echo $info_obj | sed 's/.info//'`
- [ "$verbose" ] && echo "deleting $info_o from info/dir"
- grep -v \($info_o\)\. /tmp/.hdw-get/dir | \
- grep -v ^$package\ info\ -\ added\ by\ hdw > \
- /tmp/.hdw-get/dir~
- mv /tmp/.hdw-get/dir~ /tmp/.hdw-get/dir
- done
- fi
-
# remove the files/dirs
((supposed = 0))
((counter = 0))
done
echo -en "\ndone.\n"
- # reinstall info/dir file
- if [ "$modify_info_dir" ] ; then
- [ "$verbose" ] && echo "restoring modified info/dir file"
- cp /tmp/.hdw-get/dir $inst_root/usr/share/info/dir
- rm -f /tmp/.hdw-get/dir*
- fi
+ # care about info/dir file
+ echo "recreating info dir file ..."
+ cd $inst_root/usr/share/info
+ rm -f dir
+ for f in *; do
+ install-info $f dir 2>/dev/null
+ done
fi
fi
# package in database?
- if [ "`grep "^$pkg\ -" $DBF`" = "" ] ; then
- echo "sorry, package $package not found ..."
- echo "(use 'hdw-get update' to update database)"
- exit 1
+ if [ -z $base ] ; then
+ if [ "`grep "^$pkg\ -" $DBF`" = "" ] ; then
+ echo "sorry, package $package not found ..."
+ echo "(use 'hdw-get update' to update database)"
+ exit 1
+ fi
fi
# check for runtime deps
- if [ -z $no_deps ] ; then
+ if [ -z $no_dep ] ; then
deps="`grep "^$pkg\ -" $DBF | sed 's/.* -//'`"
udeps=""
tudeps=""
fi
if [ "$simulate" != "1" ] ; then
-
- # store info/dir file
- rm -f /tmp/.hdw-get/dir*
- if [ -f $inst_root/usr/share/info/dir ] ; then
- [ "$verbose" ] && echo "backing up info/dir file"
- cp $inst_root/usr/share/info/dir /tmp/.hdw-get/
- fi
# check/install package
if [ -f $package ] ; then
exit 1
fi
- # merging info/dir file
- if [ "$pkg" != "00-dirtree" ] ; then
- fl_file=`ls -A $inst_root/$FL_DIR/$pkg-[0-9]* | tail -1`
- if [ -n "`grep usr/share/info/dir $fl_file`" ] ; then
- echo "" >> /tmp/.hdw-get/dir
- echo "$pkg info - added by hdw `date`" >> /tmp/.hdw-get/dir
- for info_obj in `grep 'usr/share/info/.*.info' $fl_file | \
- awk -F/ '{ print $4 }'`; do
- info_o=`echo $info_obj | sed 's/.info//'`
- if [ -z "`grep \($info_o\)\. /tmp/.hdw-get/dir`" ]
- then
- [ "$verbose" ] && \
- echo "merging $info_o to info/dir"
- grep \($info_o\)\. \
- $inst_root/usr/share/info/dir >> \
- /tmp/.hdw-get/dir
- fi
- done
- fi
- fi
- [ -f /tmp/.hdw-get/dir ] && \
- cp /tmp/.hdw-get/dir $inst_root/usr/share/info/dir
- rm -f /tmp/.hdw-get/dir
+ # care about info/dir file
+ echo "recreating info dir file ..."
+ cd $inst_root/usr/share/info
+ rm -f dir
+ for f in *; do
+ install-info $f dir 2>/dev/null
+ done
fi
# install all distribution related packages
for package in `cat $dist_file`; do
# execute myelf
- $0 install $inst_root $package
+ auto=""
+ [ "$auto_resolve_deps" = "1" ] && auto="-a"
+ $0 $auto -b install $inst_root $package
done
fi
fi
-# remove temp directory
-rm -rf /tmp/.hdw-get
-