usage() {
echo
- echo "usage: $0 [install/remove] [directory] [package]"
+ echo "usage:"
+ echo "$0 [install/remove] [root] [package]"
+ echo "$0 [dist-install] [root] [dist file]"
echo
}
package="" ; inst_root=""
+d_install="" ; install=""
verbose=""
while [ "$1" ] ; do
inst_root="$2" ; package="$3" ; shift 3 ;;
remove) remove="1"
inst_root="$2" ; package="$3" ; shift 3 ;;
+ dist-install) d_install="1"
+ inst_root="$2" ; dist_file="$3" ; shift 3 ;;
-v) verbose=1 ; shift 1 ;;
*) usage ; exit 1 ;;
esac
fi
# read hdw-get configs
-net_addr="" ; bin_dir=""
+net_addr="" ; bin_dir="" ; distf_dir=""
if [ -f /etc/hdw-get.conf ] ; then
. /etc/hdw-get.conf
if [ -z "$hdw_version" -o -z "$hdw_arch" -o -z "$hdw_arch_opt" ] ; then
exit 1
fi
+# create temp directory
+mkdir -p /tmp/.hdw-get
+
# remove
if [ "$remove" = "1" ] ; then
# looking for flist file
fl_pris=""
- for fl_file in $inst_root/var/adm/flists/$package-*; do
+ for fl_file in $inst_root/var/adm/flists/$package-[0-9]*; do
fl_pris="`echo $fl_file | awk -F- '{ print $NF }'` $fl_pris"
done
fl_max="0"
echo "package $apckage is not installed (moved the flist file?)"
exit 1
fi
+
+ # 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 > /tmp/.hdw-get/dir~
+ mv /tmp/.hdw-get/dir~ /tmp/.hdw-get/dir
+ done
+ fi
+
+ # remove the files/dirs
((supposed = 0))
((counter = 0))
cat $fl_file | while read pkg file; do
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
+
# install
elif [ "$install" = "1" ] ; then
# does inst_root exist
echo
exit 1
fi
- # does the package exist
+
+ # 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
echo "extracting `basename $package` to $inst_root ..."
tar --use-compress-program=bzip2 -xf $package \
-C $inst_root
echo "done"
- elif [ ! -z "$bin_dir" -a -f $bin_dir/$package/$package.tar.bz2 ] ; then
+ elif [ ! -z "$bin_dir" -a -f $bin_dir/${hdw_arch}-${hdw_arch_opt}/$package/$package.tar.bz2 ] ; then
echo "extracting $package to $inst_root ..."
tar --use-compress-program=bzip2 \
-xf $bin_dir/$package/$package.tar.bz2 -C $inst_root
elif [ ! -z "$net_addr" ] ; then
#echo "trying to get package $package via net ..."
- wget $net_addr/hdw-linux/hdw-linux-$hdw_version/binaries/${hdw_arch}-${hdw_arch_opt}/$package/${package}.tar.bz2 &&
- tar --use-compress-program=bzip2 \
- -xf ${package}.tar.bz2 -C $inst_root
- rm ${package}.tar.bz2
- echo "done"
+ wget $net_addr/hdw-linux/hdw-linux-$hdw_version/binaries/${hdw_arch}-${hdw_arch_opt}/$package/${package}.tar.bz2 > /dev/null 2>&1
+ if [ "$?" ] ; then
+ echo "package not found at $net_addr, aborting ..."
+ else
+
+ tar --use-compress-program=bzip2 \
+ -xf ${package}.tar.bz2 -C $inst_root
+ rm ${package}.tar.bz2
+ echo "done"
+ fi
else
echo "sorry, package $package not found"
fi
+
+ # merging info/dir file
+ fl_file=`ls -A $inst_root/var/adm/flists/$package-[0-9]* | tail -1`
+ if [ -n "`grep usr/share/info/dir $fl_file`" ] ; then
+ echo "" >> /tmp/.hdw-get/dir
+ echo "$package 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
+ cp /tmp/.hdw-get/dir $inst_root/usr/share/info/dir
+ rm -f /tmp/.hdw-get/dir
+
+# dist-install
+elif [ "$dist_install" = "1" ] ; then
+ # check dist file
+ if [ ! -f $dist_file ] ; then
+ echo "$dist_file not found, aborting"
+ else
+ # install all distribution related packages
+ for package in `cat $dist_file`; do
+ # execute myelf
+ $0 install $inst_root $package
+ done
+ fi
fi
+# remove temp directory
+rm -rf /tmp/.hdw-get
+
echo "creating binary tarball of $package"
mkdir -p $hdw_home_dir/binaries/$bin_dir/$package &&
cd $hdw_build_dir &&
- # which files do we need? - are we packaging linux?
- if [ "$package" = "linux" ] ; then
- fl_file="var/adm/flists/$package*"
- else
- fl_file="var/adm/flists/$package"
- fi
+ # which files do we need?
+ fl_file="var/adm/flists/$package"
cat $fl_file | awk '{ print $2 }' | \
tar --no-recursion --use-compress-program=bzip2 \
-cf $hdw_home_dir/binaries/$bin_dir/$package/$tar_name.tar.bz2 \
elif [ "$package" = "all" ] ; then
-((counter=1))
-for pkg in `ls -A $hdw_build_dir/var/adm/flists | grep -v '.stage1'`; do
- ./scripts/Create-Binary -package $pkg -root $hdw_build_dir
+((counter=0))
+for pkg in `ls -A $hdw_build_dir/var/adm/flists | grep -v '.stage'`; do
+ tar_name=`echo $pkg | awk -F- '{ print $1 }'`
+ ./scripts/Create-Binary -package $pkg -root $hdw_build_dir \
+ -tar_name $tar_name
((counter+=1))
done
# add 00-dirtree, build in stage1
-./scripts/Create-Binary -package 00-dirtree.stage1 -tar-name 00-dirtree
+./scripts/Create-Binary -package 00-dirtree.stage0-0 -tar-name 00-dirtree
((counter+=1))
echo "created $counter binaries, done"