diff options
Diffstat (limited to 'testing/source/pkgtools/scripts/pkgtool')
-rw-r--r-- | testing/source/pkgtools/scripts/pkgtool | 723 |
1 files changed, 0 insertions, 723 deletions
diff --git a/testing/source/pkgtools/scripts/pkgtool b/testing/source/pkgtools/scripts/pkgtool deleted file mode 100644 index 076402b8..00000000 --- a/testing/source/pkgtools/scripts/pkgtool +++ /dev/null @@ -1,723 +0,0 @@ -#!/bin/sh -# -# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999 Patrick Volkerding, Moorhead, MN USA -# Copyright 2001, 2004 Slackware Linux, Inc., Concord, CA USA -# All rights reserved. -# Copyright 2007, 2009, 2010, 2011, 2013, 2015, 2016, 2018 Patrick Volkerding, Sebeka, MN, USA -# -# Redistribution and use of this script, with or without modification, is -# permitted provided that the following conditions are met: -# -# 1. Redistributions of this script must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# Mon Jun 4 21:17:58 UTC 2018 -# Use /var/lib/pkgtools, not /var/log. -# -# Sat Apr 25 21:18:53 UTC 2009 -# Converted to use new pkgbase() function to remove pathname and -# valid package extensions. -# -# Wed Oct 31 16:28:46 CDT 2007 -# * Thanks to Gabriele Inghirami for a patch allowing this script to work -# with much larger numbers of installed packages. -# Wed, 27 Apr 1994 00:06:50 -0700 (PDT) -# * Optimization by David Hinds. -# Sun Oct 24 23:11:40 BST 2004 -# * Further optimisations by Jim Hawkins <jawkins@armedslack.org> -# - dramatically improved the speed of the "View" option -# Thu Nov 04 12:19:56 BST 2004 -# * More optimisations by Jim Hawkins -# - improved "Remove" speed in a similar manner to "View" -# Wed Jan 12 16:53:48 GMT 2005 -# * Fixed quoting bug thanks to Lasse Collin -# Wed Jan 26 23:06:22 GMT 2005 -# * Fix for non-standard package descriptions by Jim Hawkins - -# Return a package name that has been stripped of the dirname portion -# and any of the valid extensions (only): -pkgbase() { - PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) - case $PKGEXT in - 'tgz' ) - PKGRETURN=$(basename $1 .tgz) - ;; - 'tbz' ) - PKGRETURN=$(basename $1 .tbz) - ;; - 'tlz' ) - PKGRETURN=$(basename $1 .tlz) - ;; - 'txz' ) - PKGRETURN=$(basename $1 .txz) - ;; - *) - PKGRETURN=$(basename $1) - ;; - esac - echo $PKGRETURN -} - -SOURCE_DIR=/var/lib/pkgtools/mount -ASK="tagfiles" -if [ -L /bin/chmod -a -L /bin/chown ]; then # probably on the bootdisk using busybox - TARGET_DIR=/mnt - rootdevice="$(mount | grep ' on /mnt ' | tail -n 1 | cut -f 1 -d ' ' 2> /dev/null)" - TMP=/mnt/var/lib/pkgtools/setup/tmp - if ! mount | grep ' on /mnt ' 1> /dev/null 2> /dev/null ; then - echo - echo - echo "You can't run pkgtool from the rootdisk until you've mounted your Linux" - echo "partitions beneath /mnt. Here are some examples:" - echo - echo "If your root partition is /dev/sda1 you would type:" - echo "mount /dev/sda1 /mnt" - echo - echo "Now you can find a list of all your partitions in /mnt/etc/fstab." - echo - echo "Then, supposing your /usr partition is /dev/sda2, you must do this:" - echo "mount /dev/sda2 /mnt/usr" - echo - echo "Please mount your Linux partitions and then run pkgtool again." - echo - exit - fi -else - TARGET_DIR=/ - rootdevice="$(mount | grep ' on / ' | tail -n 1 | cut -f 1 -d ' ')" - TMP=/var/lib/pkgtools/setup/tmp -fi -if [ ! -d $TMP ]; then - mkdir -p $TMP - chmod 700 $TMP - fi -ADM_DIR=$TARGET_DIR/var/lib/pkgtools -LOG=$TMP/PKGTOOL.REMOVED - -# remove whitespace -crunch() { - while read FOO ; do - echo $FOO - done -} - -package_name() { - STRING=$(pkgbase $1) - # Check for old style package name with one segment: - if [ "$(echo $STRING | cut -f 1 -d -)" = "$(echo $STRING | cut -f 2 -d -)" ]; then - echo $STRING - else # has more than one dash delimited segment - # Count number of segments: - INDEX=1 - while [ ! "$(echo $STRING | cut -f $INDEX -d -)" = "" ]; do - INDEX=$(expr $INDEX + 1) - done - INDEX=$(expr $INDEX - 1) # don't include the null value - # If we don't have four segments, return the old-style (or out of spec) package name: - if [ "$INDEX" = "2" -o "$INDEX" = "3" ]; then - echo $STRING - else # we have four or more segments, so we'll consider this a new-style name: - NAME=$(expr $INDEX - 3) - NAME="$(echo $STRING | cut -f 1-$NAME -d -)" - echo $NAME - # cruft for later ;) - #VER=$(expr $INDEX - 2) - #VER="$(echo $STRING | cut -f $VER -d -)" - #ARCH=$(expr $INDEX - 1) - #ARCH="$(echo $STRING | cut -f $ARCH -d -)" - #BUILD="$(echo $STRING | cut -f $INDEX -d -)" - fi - fi -} - -remove_packages() { - for pkg_name in $(cat $TMP/return | tr -d "\042") - do - if [ -r $ADM_DIR/packages/$pkg_name ]; then - dialog --title "PACKAGE REMOVAL IN PROGRESS" --cr-wrap --infobox \ -"\nRemoving package $pkg_name.\n\ -\n\ -Since each file must be checked \ -against the contents of every other installed package to avoid wiping out \ -areas of overlap, this process can take quite some time. If you'd like to \ -watch the progress, flip over to another virtual console and type:\n\ -\n\ -tail -f $TMP/PKGTOOL.REMOVED\n" 13 60 - export ROOT=$TARGET_DIR - removepkg $pkg_name >> $LOG 2> /dev/null - else - echo "No such package: $pkg_name. Can't remove." >> $LOG - fi - done -} - -create_list_of_installed_packages() -{ - FILES=$(ls $ADM_DIR/packages) - if [ -n "$FILES" ]; then - cd $ADM_DIR/packages - { grep '^PACKAGE DESCRIPTION:$' -Z -H -m1 -A1 $FILES; echo; } \ - | sed -n 'h;n;/\x00/{h;n;};x;s/ */ /g;s/ $//;s/[\"`$]/\\&/g - s/\(.*\)\x00\([^:]*:\)\? *\(.*\)/ "\1" "\3" "View information about package \1" \\/;p' > $TMP/list_of_installed_packages \ - - fi -} - - create_list_of_files_to_remove () -{ -FILES=$(ls $ADM_DIR/packages) - if [ -n "$FILES" ]; then - cd $ADM_DIR/packages - { grep '^PACKAGE DESCRIPTION:$' -Z -H -m1 -A1 $FILES; echo; } \ - | sed -n 'h;n;/\x00/{h;n;};x;s/ */ /g;s/ $//;s/[\"`$]/\\&/g - s/\(.*\)\x00\([^:]*:\)\? *\(.*\)/ "\1" "\3" off "Select\/Unselect removing package \1" \\/;p' > $TMP/temporary_list \ - - fi -} - -# Here, we read the list of arguments passed to the pkgtool script. -if [ $# -gt 0 ]; then # there are arguments to the command - while [ $# -gt 0 ]; do - case "$1" in - -sets | --sets) - DISK_SETS=$(echo $2 | tr "[A-Z]" "[a-z]") ; shift 2 ;; - -source_mounted | --source-mounted) - SOURCE_MOUNTED="always" ; shift 1 ;; - -ignore_tagfiles | --ignore-tagfiles) - ASK="never" ; shift 1 ;; - -tagfile | --tagfile) - USETAG=$2 ; shift 2 ;; - -source_dir | --source_dir) - SOURCE_DIR=$2 ; shift 2 ;; - -target_dir | --target_dir) - TARGET_DIR=$2 - ADM_DIR=$TARGET_DIR/var/lib/pkgtools - shift 2 ;; - -source_device | --source_device) - SOURCE_DEVICE=$2 ; shift 2 ;; - esac - done -else # there were no arguments, so we'll get the needed information from the - # user and then go on. - CMD_START="true" - rm -f $TMP/SeT* - while [ 0 ]; do - dialog --title "Slackware Package Tool (pkgtool version 15.0)" \ ---menu "\nWelcome to the Slackware package tool.\n\ -\nWhich option would you like?\n" 16 75 6 \ -"Current" "Install packages from the current directory" \ -"Other" "Install packages from some other directory" \ -"Remove" "Remove packages that are currently installed" \ -"View" "View the list of files contained in a package" \ -"Setup" "Choose Slackware installation scripts to run again" \ -"Exit" "Exit Pkgtool" 2> $TMP/reply - if [ ! $? = 0 ]; then - rm -f $TMP/reply - dialog --clear - exit - fi - REPLY="$(cat $TMP/reply)" - rm -f $TMP/reply - if [ "$REPLY" = "Exit" ]; then - dialog --clear - exit - fi - if [ "$REPLY" = "Setup" ]; then - echo 'dialog --title "SELECT SYSTEM SETUP SCRIPTS" --item-help --checklist \ - "Please use the spacebar to select the setup scripts to run. Hit enter when you \ -are done selecting to run the scripts." 17 70 9 \' > $TMP/setupscr - for script in $ADM_DIR/setup/setup.* ; do - BLURB=$(grep '#BLURB' $script | cut -b8-) - if [ "$BLURB" = "" ]; then - BLURB="\"\"" - fi - echo " \"$(basename $script | cut -f2- -d .)\" $BLURB \"no\" $BLURB \\" >> $TMP/setupscr - done - echo "2> $TMP/return" >> $TMP/setupscr - . $TMP/setupscr - if [ ! "$(cat $TMP/return)" = "" ]; then - # Run each script: - for script in $(cat $TMP/return) ; do - scrpath=$ADM_DIR/setup/setup.$(echo $script | tr -d \") - ( COLOR=on ; cd $TARGET_DIR ; . $scrpath $TARGET_DIR $rootdevice ) - done - fi - rm -f $TMP/return $TMP/setupscr - continue - fi # end Setup - - if [ "$REPLY" = "View" ]; then -create_list_of_installed_packages - DEFITEM="" - export DEFITEM - #dialog --title "SCANNING" --infobox "Please wait while \ -#Pkgtool scans your system to determine which packages you have \ -#installed and prepares a list for you." 0 0 - ( - echo 'dialog $DEFITEM --item-help --menu "Please select the package you wish to view." 17 68 10 \' - ) > $TMP/viewscr - cat $TMP/list_of_installed_packages >> $TMP/viewscr - echo "2> $TMP/return" >> $TMP/viewscr - while [ 0 ]; do - . $TMP/viewscr - if [ ! "$(cat $TMP/return)" = "" ]; then - DEFITEM="--default-item $(cat $TMP/return)" - dialog --title "CONTENTS OF PACKAGE: $(cat $TMP/return)" --no-shadow --textbox "$ADM_DIR/packages/$(cat $TMP/return)" \ - 0 0 2> /dev/null - else - break - fi - done - rm -f $TMP/return $TMP/viewscr $TMP/tmpmsg $TMP/list_of_installed_packages - # This will clean up after most defective packages: - chmod 755 / - chmod 1777 /tmp - continue - fi - - if [ "$REPLY" = "Remove" ]; then - #dialog --title "SCANNING" --infobox "Please wait while Pkgtool scans \ -#your system to determine which packages you have installed and prepares \ -#a list for you." 0 0 - # end section - ( -create_list_of_files_to_remove #call the function to create a list of installed packages - cat << EOF -dialog --title "SELECT PACKAGES TO REMOVE" --item-help --checklist \ -"Please select the \ -packages you wish to Remove. Use the \ -spacebar to select packages to delete, and the UP/DOWN arrow keys to \ -scroll up and down through the entire list." 20 75 11 \\ -EOF - ) > $TMP/rmscript - cat $TMP/temporary_list >> $TMP/rmscript - echo "2> $TMP/return" >> $TMP/rmscript - if [ -L $LOG -o -r $LOG ]; then - rm -f $LOG - fi - cat /dev/null > $LOG - chmod 600 $LOG - chmod 700 $TMP/rmscript - export ADM_DIR; - $TMP/rmscript - remove_packages - if [ "$(cat $TMP/PKGTOOL.REMOVED)" = "" ]; then - rm -f $TMP/PKGTOOL.REMOVED - dialog --title "NO PACKAGES REMOVED" --msgbox "Hit OK to return \ -to the main menu." 5 40 - else - dialog --title "PACKAGE REMOVAL COMPLETE" --msgbox "The packages have \ -been removed. A complete log of the files that were removed has been created \ -in $TMP: PKGTOOL.REMOVED." 0 0 - fi - rm -f $TMP/rmscript $TMP/return $TMP/tmpmsg $TMP/SeT* $TMP/temporary_list - chmod 755 / - chmod 1777 /tmp -# No, return to the main menu: -# exit - elif [ "$REPLY" = "Other" ]; then - dialog --title "SELECT SOURCE DIRECTORY" --inputbox "Please enter the name of the directory that you wish to \ -install packages from:" 10 50 2> $TMP/pkgdir - if [ $? = 1 ]; then - rm -f $TMP/pkgdir $TMP/SeT* - dialog --clear - exit - fi - SOURCE_DIR="$(cat $TMP/pkgdir)" - SOURCE_MOUNTED="always" - DISK_SETS="disk" - chmod 755 $TARGET_DIR - chmod 1777 $TARGET_DIR/tmp - rm -f $TMP/pkgdir - if [ ! -d $SOURCE_DIR ]; then - dialog --title "DIRECTORY NOT FOUND" --msgbox "The directory you want to \ -install from ($SOURCE_DIR) \ -does not seem to exist. Please check the directory and then try again." \ -10 50 - dialog --clear - exit - fi - break; - else # installing from current directory - SOURCE_MOUNTED="always" - SOURCE_DIR="$PWD" - DISK_SETS="disk" - chmod 755 $TARGET_DIR - chmod 1777 $TARGET_DIR/tmp - break; - fi - done -fi -if [ "$DISK_SETS" = "disk" ]; then - ASK="always" -fi - -mount_the_source() { - # is the source supposed to be mounted already? - if [ "$SOURCE_MOUNTED" = "always" ]; then - # The source should already be mounted, so we test it - if [ ! -d $SOURCE_DIR ]; then # the directory is missing - cat << EOF > $TMP/tmpmsg - -Your source device cannot be accessed properly. - -Please be sure that it is mounted on $SOURCE_DIR, -and that the Slackware disks are found in subdirectories -of $SOURCE_DIR like specified. - -EOF - dialog --title "MOUNT ERROR" --msgbox "$(cat $TMP/tmpmsg)" 11 67 - rm -f $TMP/tmpmsg - exit 1; - fi - return 0; - fi - dialog --title "INSERT DISK" --menu "Please insert disk $1 and \ -press ENTER to continue." \ -11 50 3 \ -"Continue" "Continue with the installation" \ -"Skip" "Skip the current disk series" \ -"Quit" "Abort the installation process" 2> $TMP/reply - if [ ! $? = 0 ]; then - REPLY="Quit" - else - REPLY="$(cat $TMP/reply)" - fi - rm -f $TMP/reply - if [ "$REPLY" = "Skip" ]; then - return 1; - fi - if [ "$REPLY" = "Quit" ]; then - dialog --title "ABORTING" --msgbox "Aborting software installation." 5 50 - chmod 755 $TARGET_DIR - chmod 1777 $TARGET_DIR/tmp - exit 1; - fi; - # Old line: - # mount -r -t msdos $SOURCE_DEVICE $SOURCE_DIR - # New ones: (thanks to Andy Schwierskott!) - go_on=y - not_successfull_mounted=1 - while [ "$go_on" = y -a "$not_successfull_mounted" = 1 ]; do - mount -r -t msdos $SOURCE_DEVICE $SOURCE_DIR - not_successfull_mounted=$? - if [ "$not_successfull_mounted" = 1 ]; then - mount_answer=x - while [ "$mount_answer" != "y" -a "$mount_answer" != "q" ] ; do - dialog --title "MOUNT PROBLEM" --menu "Media was not successfully \ -mounted! Do you want to \ -retry, or quit?" 10 60 2 \ -"Yes" "Try to mount the disk again" \ -"No" "No, abort." 2> $TMP/mntans - mount_answer="$(cat $TMP/mntans)" - rm -f $TMP/mntans - if [ "$mount_answer" = "Yes" ]; then - mount_answer="y" - else - mount_answer="q" - fi - done - go_on=$mount_answer - fi - done - test $not_successfull_mounted = 0 -} - -umount_the_source() { - if [ ! "$SOURCE_MOUNTED" = "always" ]; then - umount $SOURCE_DEVICE 1> /dev/null 2> /dev/null - fi; -} - -install_disk() { - mount_the_source $1 - if [ $? = 1 ]; then - umount_the_source; - return 1; - fi - CURRENT_DISK_NAME="$1" - PACKAGE_DIR=$SOURCE_DIR - if [ "$SOURCE_MOUNTED" = "always" -a ! "$DISK_SETS" = "disk" ]; then - PACKAGE_DIR=$PACKAGE_DIR/$1 - fi - - # If this directory is missing or contains no *.t?z files, bail. - if [ ! -d $PACKAGE_DIR ]; then - return 1 - fi - if ! ls $PACKAGE_DIR/*.t?z 1> /dev/null 2> /dev/null ; then - return 1 - fi - - # - # look for tagfile for this series and copy into $TMP/tagfile - # - touch $TMP/tagfile - if [ ! "$DISK_SETS" = "disk" ]; then - if [ -r $TMP/SeTtagext ]; then - if [ -r $PACKAGE_DIR/tagfile$(cat $TMP/SeTtagext) ]; then - cat $PACKAGE_DIR/tagfile$(cat $TMP/SeTtagext) >> $TMP/tagfile - else - if [ -r $PACKAGE_DIR/tagfile ]; then - cat $PACKAGE_DIR/tagfile >> $TMP/tagfile - fi - fi - - # - # Do we need to follow a custom path to the tagfiles? - # - elif [ -r $TMP/SeTtagpath ]; then - custom_path=$(cat $TMP/SeTtagpath) - short_path=$(basename $PACKAGE_DIR) - - # If tagfile exists at the specified custom path, copy it over. - if [ -r $custom_path/$short_path/tagfile ]; then - cat $custom_path/$short_path/tagfile >> $TMP/tagfile - - else # well, I guess we'll use the default one then. - if [ -r $PACKAGE_DIR/tagfile ]; then - cat $PACKAGE_DIR/tagfile >> $TMP/tagfile - fi - fi - # - # We seem to be testing for this too often... maybe this code should - # be optimized a little... - # - elif [ -r $PACKAGE_DIR/tagfile ]; then - cat $PACKAGE_DIR/tagfile >> $TMP/tagfile - fi - - # - # Execute menus if in QUICK mode: - # - if [ -r $TMP/SeTQUICK -a -r $PACKAGE_DIR/maketag ]; then - if [ ! "$MAKETAG" = "" -a -r $PACKAGE_DIR/$MAKETAG ]; then # use alternate maketag - sh $PACKAGE_DIR/$MAKETAG - else - sh $PACKAGE_DIR/maketag - fi - if [ -r $TMP/SeTnewtag ]; then - mv $TMP/SeTnewtag $TMP/tagfile - fi - fi - - # - # Protect tagfile from hacker attack: - # - if [ -r $TMP/tagfile ]; then - chmod 600 $TMP/tagfile - fi - - fi # ! "$DISK_SETS" = "disk" - - # It's possible that the tagfile was specified on the command line. If that's - # the case, then we'll just override whatever we figured out up above. - if [ ! "$USETAG" = "" ]; then - cat $USETAG > $TMP/tagfile - fi - - # If there's a catalog file present, use it to check for missing files. - # If not, forget about that and install whatever's there. - if [ "$1" = "single_disk" -o -r $PACKAGE_DIR/disk$1 -o -r $PACKAGE_DIR/package-list.txt ]; then - if [ -r $PACKAGE_DIR/package-list.txt ]; then - CATALOG_FILE=$PACKAGE_DIR/package-list.txt - else - CATALOG_FILE=$(basename $PACKAGE_DIR/disk*); - fi - if [ -r $PACKAGE_DIR/$CATALOG_FILE -a ! -d $PACKAGE_DIR/$CATALOG_FILE ]; then - if grep CONTENTS: $PACKAGE_DIR/$CATALOG_FILE 1> /dev/null 2> /dev/null ; then - # First we check for missing packages... - for PKGTEST in $(grep "^CONTENTS:" $PACKAGE_DIR/$CATALOG_FILE | cut -f2- -d : 2> /dev/null) ; do - # This is not a perfect test. (say emacs is missing but emacs-nox is not) - if ls $PACKAGE_DIR/$PKGTEST*.t?z 1> /dev/null 2> /dev/null ; then # found something like it - true - else - cat << EOF > $TMP/tmpmsg - -WARNING!!! - -While looking through your index file ($CATALOG_FILE), -I noticed that you might be missing a package: - -$PKGTEST-\*-\*-\*.t?z - -that is supposed to be on this disk (disk $1). You may go -on with the installation if you wish, but if this is a -crucial file I'm making no promises that your machine will -boot. - -EOF - dialog --title "FILE MISSING FROM YOUR DISK" --msgbox \ -"$(cat $TMP/tmpmsg)" 17 67 - fi - done # checking for missing packages - # Now we test for extra packages: - ALLOWED="$(grep CONTENTS: $PACKAGE_DIR/$CATALOG_FILE | cut -b10- 2> /dev/null)" - for PACKAGE_FILENAME in $PACKAGE_DIR/*.t?z; do - BASE=$(pkgbase $PACKAGE_FILENAME) - BASE="$(package_name $BASE)" - if echo $ALLOWED | grep $BASE 1> /dev/null 2> /dev/null ; then - true - else - cat << EOF > $TMP/tmpmsg - -WARNING!!! - -While looking through your index file ($CATALOG_FILE), -I noticed that you have this extra package: - -($BASE.t?z) - -that I don't recognize. Please be sure this package is -really supposed to be here, and is not left over from an -old version of Slackware. Sometimes this can happen at the -archive sites. - -EOF - dialog --title "EXTRA FILE FOUND ON YOUR DISK" \ ---msgbox "$(cat $TMP/tmpmsg)" 17 67 - rm -f $TMP/tmpmsg - fi - done - fi - fi - fi # check for missing/extra packages - - # Install the packages: - for PACKAGE_FILENAME in $PACKAGE_DIR/*.t?z; do - if [ "$PACKAGE_FILENAME" = "$PACKAGE_DIR/*.t?z" ]; then - continue; - fi - if [ "$ASK" = "never" ]; then # install the package - installpkg -root $TARGET_DIR -infobox -tagfile $TMP/tagfile $PACKAGE_FILENAME - ERROR=$? - elif [ "$ASK" = "tagfiles" ]; then - installpkg -root $TARGET_DIR -menu -tagfile $TMP/tagfile $PACKAGE_FILENAME - ERROR=$? - else # ASK should be = always here, and that's how we'll treat it - installpkg -root $TARGET_DIR -menu -ask -tagfile $TMP/tagfile $PACKAGE_FILENAME - ERROR=$? - fi - # Check for abort: - if [ "$ERROR" = "99" ]; then - umount_the_source; - chmod 755 $TARGET_DIR - chmod 1777 $TARGET_DIR/tmp - exit 1; - fi - done - OUTTAHERE="false" - if [ -r $PACKAGE_DIR/install.end ]; then - OUTTAHERE="true" - fi - umount_the_source; - if [ "$OUTTAHERE" = "true" ]; then - return 1; - fi -} - -install_disk_set() { # accepts one argument: the series name in lowercase. - SERIES_NAME=$1 - CURRENT_DISK_NUMBER="1"; - while [ 0 ]; do - # Don't start numbering the directories until 2: - if [ $CURRENT_DISK_NUMBER = 1 ]; then - DISKTOINSTALL=$SERIES_NAME - else - DISKTOINSTALL=$SERIES_NAME$CURRENT_DISK_NUMBER - fi - install_disk $DISKTOINSTALL - if [ ! $? = 0 ]; then # install.end was found, or the user chose - # to quit installing packages. - return 0; - fi - CURRENT_DISK_NUMBER=$(expr $CURRENT_DISK_NUMBER + 1) - done; -} - -# /* main() */ ;) -if [ "$DISK_SETS" = "disk" ]; then - install_disk single_disk; - ASK="always" -else - touch $TMP/tagfile - chmod 600 $TMP/tagfile - if echo $DISK_SETS | grep "#a#" 1> /dev/null 2> /dev/null ; then - A_IS_NEEDED="true" - else - A_IS_NEEDED="false" - fi - while [ 0 ]; - do - while [ 0 ]; # strip leading '#'s - do - if [ "$(echo $DISK_SETS | cut -b1)" = "#" ]; then - DISK_SETS="$(echo $DISK_SETS | cut -b2-)" - else - break; - fi - done - if [ "$A_IS_NEEDED" = "true" ]; then - cat << EOF > $TMP/tmpmsg - ---- Installing package series ==>a<== - -EOF - dialog --infobox "$(cat $TMP/tmpmsg)" 5 45 - sleep 1 - rm -f $TMP/tmpmsg - install_disk_set a; - A_IS_NEEDED="false" - fi - count="1" - if [ "$(echo $DISK_SETS | cut -b$count)" = "" ]; then - break; # we be done here :^) - else - count="2" - while [ 0 ]; do - if [ "$(echo $DISK_SETS | cut -b$count)" = "" -o "$(echo $DISK_SETS | cut -b$count)" = "#" ]; then - count="$(expr $count - 1)" - break; - else - count="$(expr $count + 1)" - fi - done - fi - diskset="$(echo $DISK_SETS | cut -b1-$count)" - count="$(expr $count + 1)" - DISK_SETS="$(echo $DISK_SETS | cut -b$count-)" - if [ "$diskset" = "a" ]; then - continue; # we expect this to be done elsewhere - fi - cat << EOF > $TMP/tmpmsg - -Installing package series ==>$diskset<== - -EOF - dialog --infobox "$(cat $TMP/tmpmsg)" 5 45 - sleep 1 - rm -f $TMP/tmpmsg - install_disk_set $diskset; - done -fi - -if [ "$DISK_SETS" = "disk" -o "$CMD_START" = "true" ]; then - if [ -r $TMP/tagfile ]; then - rm $TMP/tagfile - fi - dialog --clear -fi -chmod 755 $TARGET_DIR $TARGET_DIR/var $TARGET_DIR/usr -chmod 1777 $TARGET_DIR/tmp |