rework the whole process_queue and related functions; this patch attempts to properly handle certain items by the caller instead of in the called function; it also does away with the INSTALLPKGS and BUILDPKGS toggles; the logging is cleaned up and improved; and various other FIXMEs and tweaks are made along the way.

This commit is contained in:
chess.griffin 2009-05-14 14:06:44 +00:00
parent 0ff2ee1f91
commit 07c263c203

View File

@ -852,7 +852,7 @@ info_item() {
local CURAPP LONGAPP SHORTAPP
local STRING INDEX NAME VER BUILD DEFAULTITEM
local CURPACKAGE INSTALLEDPACKAGE MENUPACKAGE TITLEPACKAGE RENAMEDPACKAGE
local CHOICE PARSED_SLACK_DESC SBOPKGINSTALLOUTPUT
local CHOICE PARSED_SLACK_DESC
local APP="$(< $SBOPKGTMP/sbopkg_item_selection)"
# We need to check and see if the APP has ever been renamed.
@ -966,18 +966,17 @@ info_item() {
Queue ) add_item_to_queue $APP $CURVERSION-$CURBUILD ON ;;
Build )
echo "$APP" > $SBOPKGTMP/sbopkg-start-queue
process_queue ;;
start_dialog_queue ;;
Install )
SBOPKGINSTALLOUTPUT=$SBOPKGTMP/sbopkg_install_output
if [[ ! -e $OUTPUT/$CURPACKAGE ]]; then
continue;
fi
install_package $CURPACKAGE | tee $SBOPKGINSTALLOUTPUT
install_package $OUTPUT $CURPACKAGE | tee $TMPLOG
read -n 1 -p "Press any key to continue."
if [[ $KEEPLOG ]]; then
cat $SBOPKGINSTALLOUTPUT >> $LOGFILE
cat $TMPLOG >> $LOGFILE
fi
rm -f $SBOPKGINSTALLOUTPUT
rm $TMPLOG
;;
esac
;;
@ -1094,8 +1093,6 @@ view_perm_log() {
empty_queue() {
# This function tests whether the temporary build queue is empty.
local TMPQUEUE=$SBOPKGTMP/sbopkg-tmp-queue
if [[ ! -e $TMPQUEUE ]]; then
if [[ $DIAG ]]; then
dialog --title "Empty Queue" --msgbox \
@ -1183,7 +1180,6 @@ load_backup_queue() {
# This function loads any backup queue and merges it with any current
# $TMPQUEUE.
local TMPQUEUE=$SBOPKGTMP/sbopkg-tmp-queue
local PERMQUEUE=$SBOPKGTMP/sbopkg-savedqueue
local BACKUPQUEUE_LOCK=$SBOPKGTMP/sbopkg_backup_queue.lck
@ -1216,8 +1212,8 @@ queue_dir_lister() {
# takes two arguments - the title and the text of the widget - and makes
# the selected item(s) from the listing available as USERQUEUE
local QFS=$SBOPKGTMP/sbopkg-queue-files-selection
local QFM=$SBOPKGTMP/sbopkg-queue-files-menu
local QFS=$SBOPKGTMP/sbopkg_queue_files_selection
local QFM=$SBOPKGTMP/sbopkg_queue_files_menu
if [[ -z $(ls -A $QUEUEDIR 2> /dev/null) ]]; then
if [[ $DIAG ]]; then
@ -1361,7 +1357,6 @@ save_user_queue() {
# queue. In that case, show the filename dialog only if there actually is
# an active queue, and return silently otherwise.
local TMPQUEUE=$SBOPKGTMP/sbopkg-tmp-queue
local USERQUEUE=$SBOPKGTMP/sbopkg-user-queue
local DEFAULT MSG USERQUEUE_NAME i
local USERQUEUE_NAME
@ -1429,7 +1424,6 @@ edit_build_queue() {
# This function deletes items in the build queue.
local ANSQUEUE=$SBOPKGTMP/sbopkg-ans-queue
local TMPQUEUE=$SBOPKGTMP/sbopkg-tmp-queue
local REMOVEQUEUE=$SBOPKGTMP/sbopkg-remove-queue
local WORKINGQUEUE=$SBOPKGTMP/sbopkg-working-queue
local CHOICE REMOVE REMOVED
@ -1500,7 +1494,6 @@ add_item_to_queue() {
local VERSIONBUILD=$2
local ONOFF=$3
local BACKUPQUEUE_LOCK=$SBOPKGTMP/sbopkg_backup_queue.lck
local TMPQUEUE=$SBOPKGTMP/sbopkg-tmp-queue
local USERQUEUE_LOCK=$SBOPKGTMP/sbopkg_user_queue.lck
local UPDATEQUEUE=$SBOPKGTMP/sbopkg-update-queue
local OLDVER="$(awk '/^'$APP'/{ print $2 }' $TMPQUEUE 2> /dev/null)"
@ -1533,8 +1526,6 @@ view_queue() {
local ANSQUEUE=$SBOPKGTMP/sbopkg-ans-queue
local REVERSEDQUEUE=$SBOPKGTMP/sbopkg-reversed-queue
local STARTQUEUE=$SBOPKGTMP/sbopkg-start-queue
local TMPQUEUE=$SBOPKGTMP/sbopkg-tmp-queue
local WORKINGQUEUE=$SBOPKGTMP/sbopkg-working-queue
empty_queue && return
@ -1563,9 +1554,6 @@ view_queue() {
fi
done < $TMPQUEUE
mv $WORKINGQUEUE $TMPQUEUE
if [[ $BUILDPKGS == 1 ]]; then
mv $ANSQUEUE $STARTQUEUE
fi
return 0
;;
1)
@ -1670,7 +1658,6 @@ sync_repo() {
# This function does the sync with SBo.
local SYNC_LOCK=$SBOPKGTMP/sbopkg_sync.lck
local SBOPKGOUTPUT=$SBOPKGTMP/sbopkg_output
if [[ $REPO_TOOL == "" ]]; then
if [[ $DIAG ]]; then
@ -1719,35 +1706,16 @@ sync_repo() {
}
search_package() {
# Search for package name and exit if not found. If it is found, populate
# various variables with data about the package for displaying information
# and building.
# Search for package name and return error if not found.
cd $LOCALREPO/$SLACKVER
PKG="$1"
PKGPATH=( $(find -type d -mindepth 2 -name "$PKG") )
if [[ -z $PKGPATH ]]; then
if [[ $SINGLE == yes ]]; then
echo "ERROR: Package or queuefile \"$PKG\" not found. Exiting." \
>&2
exit 1
fi
if [[ $BUILDPKGS == 1 ]]; then
echo "ERROR: Package \"$PKG\" not found" >> $PRECHECKLOG
echo "ERROR: Package \"$PKG\" not found - skipped" >> $SUMMARYLOG
echo >> $PRECHECKLOG
echo >> $SUMMARYLOG
continue
return 1
else
if [[ $DIAG ]]; then
dialog --title "ERROR" --msgbox "Package $PKG not found" 0 0
continue
else
echo "ERROR: Package \"$PKG\" not found." >&2
continue
fi
fi
return 0
fi
}
@ -2020,7 +1988,7 @@ get_source() {
local BUILD_LOCK=$SBOPKGTMP/sbopkg_build.lck
local DLDIR=$SBOPKGTMP/download
local PIDLIST=$SBOPKGTMP/sbopkgpidlist
local SUMMARYLOG=$SBOPKGTMP/sbopkg_summary
local TMPSUMMARYLOG=$SBOPKGTMP/sbopkg-tmp-summarylog
local SRCNAME DL FAILURE ANS MD5CHK
# Don't pollute the environment with the .info content...
local PRGNAM VERSION HOMEPAGE DOWNLOAD MD5SUM MAINTAINER EMAIL APPROVED
@ -2042,9 +2010,9 @@ get_source() {
mv "$DL" "$SRCDIR/$SRCNAME"
else
FAILURE=download
echo "$PKG:" >> $SUMMARYLOG
echo "Download failed." >> $SUMMARYLOG
echo >> $SUMMARYLOG
echo "$PKG:" >> $TMPSUMMARYLOG
echo "Download failed." >> $TMPSUMMARYLOG
echo >> $TMPSUMMARYLOG
fi
cd $SRCDIR
rm -rf $DLDIR
@ -2055,10 +2023,11 @@ get_source() {
if [[ $MD5CHK == $MD5SUM ]]; then
echo "OK"
else
echo "$PKG:" >> $SUMMARYLOG
echo "MD5SUM check failed." | tee -a $SUMMARYLOG
echo "Expected: $MD5SUM" | tee -a $SUMMARYLOG
echo "Found: $MD5CHK" | tee -a $SUMMARYLOG
echo >> $TMPSUMMARYLOG
echo "$PKG:" >> $TMPSUMMARYLOG
echo "MD5SUM check failed." | tee -a $TMPSUMMARYLOG
echo "Expected: $MD5SUM" | tee -a $TMPSUMMARYLOG
echo "Found: $MD5CHK" | tee -a $TMPSUMMARYLOG
# Ask the user what to do with the bad source
while :; do
cat << EOF
@ -2082,7 +2051,7 @@ EOF
y* | Y* )
MD5SUM=$(tr / _ <<< "$MD5CHK")
echo "Keeping the source and continuing." |
tee -a $SUMMARYLOG
tee -a $TMPSUMMARYLOG
break
;;
* )
@ -2100,7 +2069,6 @@ EOF
if [[ $FAILURE ]]; then
rm -f $PKG.info.build
rm -f $PKG.SlackBuild.build
if [[ $BUILDPKGS == 1 ]]; then
while :; do
echo
echo "Would you like to continue processing the rest of the"
@ -2116,7 +2084,6 @@ EOF
* ) echo "Unknown response." ;;
esac
done
fi
return 2
else
ln -s "$SRCDIR/$SRCNAME" "$SRCNAME"
@ -2303,16 +2270,17 @@ do_install() {
install_package() {
# Install the package.
local INSTPKG=$1
local OWNER=$(stat -c %U $OUTPUT/$INSTPKG)
local GROUP=$(stat -c %G $OUTPUT/$INSTPKG)
local INSTDIR=$1
local INSTPKG=$2
local OWNER=$(stat -c %U $INSTDIR/$INSTPKG)
local GROUP=$(stat -c %G $INSTDIR/$INSTPKG)
if [[ $OWNER != root && $GROUP != root ]]; then
crunch_fmt "WARNING: The file $INSTPKG is not set with root:root \
permissions! Do you want to proceed? Here is the \
output of ls -l:"
echo
ls -l $OUTPUT/$INSTPKG
ls -l $INSTDIR/$INSTPKG
echo
echo "Press (Y)es to proceed or (N)o to abort."
read ANS
@ -2322,12 +2290,8 @@ install_package() {
* ) echo "Unknown response."; break ;;
esac
fi
if [[ $INSTALLPKGS ]]; then
do_install $SB_OUTPUT/*
else
do_install $OUTPUT/$INSTPKG
do_install $INSTDIR/$INSTPKG
echo "Done upgrading/installing package."
fi
}
error_read() {
@ -2360,8 +2324,6 @@ build_package() {
local PKGPATH=$1
local PKGNAME=$2
local SB_OUTPUT=$SBOPKGTMP/sbooutput
local SUMMARYLOG=$SBOPKGTMP/sbopkg_summary
echo
echo "Building $PKGNAME"
@ -2381,6 +2343,7 @@ build_package() {
esac
# Start the actual build
echo >> $TMPSUMMARYLOG
echo "Building package for $PKGNAME..."
( # Run the build in a subshell, to avoid namespace pollution
[[ $BUILDOPTIONS ]] && eval "export $BUILDOPTIONS"
@ -2395,11 +2358,9 @@ build_package() {
# Let's see the result
cd $SB_OUTPUT
if [ ! -f *.t?z ]; then
echo "$PKGNAME:" >> $SUMMARYLOG
echo "$PKGNAME:" >> $TMPSUMMARYLOG
echo "Error occurred with build. Please check the log." \
>> $SUMMARYLOG
echo >> $SUMMARYLOG
if [[ $BUILDPKGS ]]; then
>> $TMPSUMMARYLOG
echo
echo "Would you like to continue processing the rest of the"
echo "build queue or would you like to abort? If this failed"
@ -2422,20 +2383,12 @@ build_package() {
;;
esac
done
fi
else
echo "Done building package for $PKG."
NEWPACKAGE=$(ls -1 *.t?z)
echo "$PKGNAME:" >> $SUMMARYLOG
echo "Built package: $NEWPACKAGE" >> $SUMMARYLOG
echo "$PKGNAME:" >> $TMPSUMMARYLOG
echo "Built package: $NEWPACKAGE" >> $TMPSUMMARYLOG
echo "Built package: $NEWPACKAGE"
if [[ $INSTALLPKGS ]]; then
install_package $NEWPACKAGE
echo "Done installing/upgrading package for $PKG."
echo "Installed package: $NEWPACKAGE" >> $SUMMARYLOG
fi
mv $SB_OUTPUT/* $OUTPUT/
echo >> $SUMMARYLOG
fi
}
@ -2448,12 +2401,6 @@ edit_local_slackbuild() {
local SHORTPATH=$1
local APP=$2
# FIXME is this check really necessary?
if ! check_write $SHORTPATH; then
dialog --title "ERROR" --msgbox "You do not have write \
permissions on the target directory." 8 30
return 1
fi
if [[ ! -e $SHORTPATH/$APP.SlackBuild.sbopkg ]]; then
cp $SHORTPATH/$APP.SlackBuild $SHORTPATH/$APP.SlackBuild.sbopkg
fi
@ -2469,12 +2416,6 @@ delete_local_slackbuild() {
local SHORTPATH=$1
local APP=$2
# FIXME is this check really necessary?
if ! check_write $SHORTPATH; then
dialog --title "ERROR" --msgbox \
"You do not have write permissions on the target directory." 8 30
return 1
fi
# FIXME should be checked on the caller side?
if [[ ! -e $SHORTPATH/$APP.SlackBuild.sbopkg ]]; then
dialog --title "ERROR" --msgbox \
@ -2496,10 +2437,6 @@ pick_slackbuild() {
local PKGNAME=$2
if pick_file SlackBuild $PKGPATH $PKGNAME; then
# FIXME this BUILD assignment is a non-obvious side effect, the caller
# should do this
BUILD=$(egrep -m1 "^BUILD" $PKGPATH/$PKG.SlackBuild.build |
sed -e 's/^.*[=-]//;s/\"//;s/[ #}\t].*$//g;s/\"//g')
return 0
else
return 1
@ -2515,12 +2452,6 @@ edit_local_info() {
local SHORTPATH=$1
local APP=$2
# FIXME is this check really necessary?
if ! check_write $SHORTPATH; then
dialog --title "ERROR" --msgbox "You do not have write \
permissions on the target directory." 8 30
return 1
fi
if [[ ! -e $LOCALREPO/$SLACKVER/$CATEGORY/$APP/$APP.info.sbopkg ]]; then
cp $SHORTPATH/$APP.info $SHORTPATH/$APP.info.sbopkg
fi
@ -2536,12 +2467,6 @@ delete_local_info() {
local SHORTPATH=$1
local APP=$2
# FIXME is this check really necessary?
if ! check_write $SHORTPATH; then
dialog --title "ERROR" --msgbox \
"You do not have write permissions on the target directory." 8 30
return 1
fi
# FIXME should be checked on the caller side?
if [[ ! -e $SHORTPATH/$APP.info.sbopkg ]]; then
dialog --title "ERROR" --msgbox \
@ -2563,8 +2488,6 @@ pick_info() {
local PKGNAME=$2
if pick_file info $PKGPATH $PKGNAME; then
# FIXME the caller should do this
. $PKGPATH/$PKGNAME.info.build
return 0
else
return 1
@ -2583,10 +2506,10 @@ pick_file() {
# $3 = the package name
# Returns 0 if the user did his choice, 1 if ESC was pressed.
local FILE=$1
FILE=$1
local PKGPATH=$2
local PKG=$3
local PICKFILE=original
PICKFILE=original
local ANS ITEM
rm -f $SBOPKGTMP/sbopkg_file_selection $SBOPKGTMP/sbopkg_diff
@ -2652,8 +2575,8 @@ pick_file() {
crunch_fmt "A local $FILE file for $PKG was found in \
addition to the original $FILE file."
echo "Which one would you like to use?"
crunch_fmt "Please enter 'O' for original, 'L' for local, \
'D' to view a diff of the two, or 'C' to cancel."
echo
crunch_fmt "(O)riginal, (L)ocal, (D)iff, (C)ancel:"
read ANS
case $ANS in
o* | O* )
@ -2687,8 +2610,6 @@ pick_file() {
elif [[ $PICKFILE == local ]]; then
cp $PKGPATH/$PKG.$FILE.sbopkg $PKGPATH/$PKG.$FILE.build
fi
echo "Using $PICKFILE $FILE file" >> $SBOPKGTMP/sbopkg_tmp_prechecklog
return 0
}
@ -2746,102 +2667,77 @@ use_options() {
}
process_queue() {
# Iterate through the process queue to build, and optionally
# install, the selected packages.
# The package(s) to be built are listed in $SBOPKGTMP/sbopkg-start-queue.
# $1 = if set, assume that we're a building a queue and perform some
# additional checks.
# FIXME This is a horrible interface...
local QUEUETYPE=$1 # build|buildinstall
local BUILDPKGS=$1
# TODO Some of these should really be global...
local SBOPKGOUTPUT=$SBOPKGTMP/sbopkg_output
local SBOPKGTMPOUTPUT=$SBOPKGTMP/sbopkg_tmpoutput
local STARTQUEUE=$SBOPKGTMP/sbopkg-start-queue
local FINALQUEUE=$SBOPKGTMP/sbopkg-final-queue
local PRECHECKLOG=$SBOPKGTMP/sbopkg_precheck_log
local SUMMARYLOG=$SBOPKGTMP/sbopkg_summary
local TMPPRECHECKLOG=$SBOPKGTMP/sbopkg_tmp_prechecklog
local PKG SINGLE PKGPATH CHKBUILD ANS
# need to check the following before uncommenting
#local PKG PKGBUILD SINGLE PKGPATH CHKBUILD ANS
local CHKBUILD ANS
rm -f $SBOPKGTMPOUTPUT $FINALQUEUE $PRECHECKLOG $SUMMARYLOG $PRECHECKLOG
if [[ $DIAG && $BUILDPKGS ]]; then
# If there are no packages queued to be built, exit now
empty_queue && return
# Show the queued packages
view_queue
fi
# Ask the user if he also wants to install the built packages
if [[ $DIAG ]]; then
dialog --title "Install Package(s)" --yes-label "Build" \
--no-label "Build and Install" --yesno \
"$(crunch "Would you like to build the package(s) only, or \
build and install the package(s)? (Press ESC to exit).")" 8 50
case $? in
255|-1 ) # The user pressed ESC
return 0
;;
1 ) # Build and install
INSTALLPKGS=1
;;
#0 ) # Build only (there's nothing to do in this case)
esac
fi
> $SUMMARYLOG
echo >> $SUMMARYLOG
echo "******************************************" >> $SUMMARYLOG
echo "PACKAGE BUILDING/INSTALLATION SUMMARY LOG" >> $SUMMARYLOG
echo "Using the $REPO_DESC" >> $SUMMARYLOG
echo >> $SUMMARYLOG
if [[ $BUILDPKGS ]]; then
> $PRECHECKLOG
echo >> $PRECHECKLOG
echo "******************************************" >> $PRECHECKLOG
echo "PACKAGE BUILDING/INSTALLATION PRECHECK LOG" >> $PRECHECKLOG
echo "Using the $REPO_DESC" >> $PRECHECKLOG
echo >> $PRECHECKLOG
rm -f $TMPLOG $TMPBUILDLOG $TMPSUMMARYLOG $FINALQUEUE
# Start the precheck
echo >> $TMPLOG
echo "++++++++++++++++++++++++++++++++++++++++++" >> $TMPLOG
echo " New queue process started on" >> $TMPLOG
echo " $(date)" >> $TMPLOG
echo "++++++++++++++++++++++++++++++++++++++++++" >> $TMPLOG
echo >> $TMPLOG
echo "------------------------------------------" >> $TMPLOG
echo "PACKAGE BUILDING/INSTALLATION PRECHECK LOG" >> $TMPLOG
echo "Using the $REPO_DESC" >> $TMPLOG
echo >> $TMPLOG
for CHKBUILD in $(< $STARTQUEUE); do
unset PKG
# FIXME This SINGLE assignment should be a parameter to
# search_package(). Better yet, deciding what to do if the
# package is not found should be dealt with by the caller.
if [[ $(wc -l < $STARTQUEUE) == 1 ]]; then
SINGLE=yes
# FIXME: This section still needs to be reviewed
unset PKG PKGPATH PKGNAME VERSION BUILD PICKFILE FILE
if ! search_package $CHKBUILD; then
echo "$CHKBUILD not found!" >> $TMPLOG
continue
else
echo $CHKBUILD >> $FINALQUEUE
fi
search_package $CHKBUILD
if ! pick_info $PKGPATH $CHKBUILD; then
rm -f $PKGPATH/$PKG*.build
return 0
else
. $PKGPATH/$PKG.info.build
echo "Using $PICKFILE $FILE file" >> $TMPLOG-info
fi
if ! pick_slackbuild $PKGPATH $CHKBUILD; then
rm -f $PKGPATH/$PKG*.build
return 0
fi
use_options $PKGPATH $CHKBUILD
echo $CHKBUILD >> $FINALQUEUE
echo "Found $CHKBUILD $VERSION-$BUILD" >> $PRECHECKLOG
if [[ $BUILDOPTIONS ]]; then
echo "Options: $BUILDOPTIONS" >> $PRECHECKLOG
else
echo "Options: None" >> $PRECHECKLOG
BUILD=$(egrep -m1 "^BUILD" $PKGPATH/$PKG.SlackBuild.build |
sed -e 's/^.*[=-]//;s/\"//;s/[ #}\t].*$//g;s/\"//g')
echo "Using $PICKFILE $FILE file" >> $TMPLOG-SB
fi
cat $TMPPRECHECKLOG >> $PRECHECKLOG
rm -f $TMPPRECHECKLOG
echo >> $PRECHECKLOG
echo "Found $CHKBUILD $VERSION-$BUILD" >> $TMPLOG
cat $TMPLOG-info >> $TMPLOG
cat $TMPLOG-SB >> $TMPLOG
rm $TMPLOG-info $TMPLOG-SB
use_options $PKGPATH $CHKBUILD
if [[ $BUILDOPTIONS ]]; then
echo "Options: $BUILDOPTIONS" >> $TMPLOG
else
echo "Options: None" >> $TMPLOG
fi
echo >> $TMPLOG
done
echo "******************************************" >> $PRECHECKLOG
echo "------------------------------------------" >> $TMPLOG
if [[ ! -e $FINALQUEUE ]]; then
echo "No valid file names in the queue. Exiting."
cleanup
exit 1
fi
if [[ $DIAG ]]; then
dialog --title "Pre-Check Log" --ok-label "Start Build" \
--extra-button --extra-label "Back" --no-cancel \
--textbox $PRECHECKLOG 0 0
--textbox $TMPLOG 0 0
if [[ $? != 0 ]]; then
rm -f $PKGPATH/$PKG*.build
rm -f $STARTQUEUE $FINALQUEUE $PRECHECKLOG $SUMMARYLOG
return 0
fi
else
while :; do
cat $PRECHECKLOG
cat $TMPLOG
echo
echo "Pre-check complete."
echo
@ -2856,11 +2752,7 @@ process_queue() {
break
;;
n* | N* )
# FIXME Again, the fact that in this case the program
# terminates is a caller's decision.
rm -f $PKGPATH/$PKG*.build
cleanup
exit 0
return 0
;;
* )
echo "Unknown response."
@ -2869,56 +2761,97 @@ process_queue() {
done
echo
fi
else
for CHKBUILD in $(< $STARTQUEUE); do
search_package $CHKBUILD
if ! pick_info $PKGPATH $CHKBUILD; then
rm -f $PKGPATH/$PKG*.build
return 1
fi
if ! pick_slackbuild $PKGPATH $CHKBUILD; then
rm -f $PKGPATH/$PKG*.build
return 1
fi
use_options $PKGPATH $CHKBUILD
echo $CHKBUILD >> $FINALQUEUE
done
if [[ $KEEPLOG ]]; then
cat $TMPLOG >> $LOGFILE
fi
rm $TMPLOG
# Okay, precheck done, now start the actual queue processing (build or
# build+install)
> $SBOPKGTMP/sbopkg_build.lck
for PKGBUILD in $(< $FINALQUEUE); do
search_package $PKGBUILD
if ! search_package $PKGBUILD; then
echo "$CHKBUILD not found!" >> $TMPLOG
continue
fi
if [[ -f $SBOPKGTMP/sbopkg_build.lck ]]; then
build_package $PKGPATH $PKGBUILD 2>&1 | tee $SBOPKGTMPOUTPUT ||
build_package $PKGPATH $PKGBUILD 2>&1 | tee $TMPBUILDLOG ||
break
cat $SBOPKGTMPOUTPUT >> $SBOPKGOUTPUT
if [[ $QUEUETYPE == "buildinstall" ]]; then
if [[ $SB_OUTPUT/*.t?z ]]; then
#install_package $SB_OUTPUT *.t?z
cd $SB_OUTPUT
NEWPACKAGE=$(ls -1t *.t?z | head -n1)
install_package $SB_OUTPUT $NEWPACKAGE
echo "Installed package: $NEWPACKAGE" >> $TMPSUMMARYLOG
fi
fi
if [[ $SB_OUTPUT/*.t?z ]]; then
mv $SB_OUTPUT/*.t?z $OUTPUT/
fi
else
echo "$PKG:" >> $SUMMARYLOG
echo "Not processed - build queue aborted." >> $SUMMARYLOG
echo >> $SUMMARYLOG
echo "$PKG:" >> $TMPSUMMARYLOG
echo "Not processed - build queue aborted." >> $TMPSUMMARYLOG
echo >> $TMPSUMMARYLOG
fi
done
rm -f $SBOPKGTMP/sbopkg_build.lck
echo "******************************************" >> $SUMMARYLOG
cat $SUMMARYLOG
if [[ $DIAG ]]; then
read -n 1 -p "Press any key to continue."
if [[ $KEEPLOG ]]; then
cat $TMPBUILDLOG >> $LOGFILE
rm $TMPBUILDLOG
fi
if [[ $BUILDPKGS && -f $SBOPKGTMP/sbopkg-tmp-queue ]]; then
rm -f $SBOPKGTMP/sbopkg_build.lck
echo >> $TMPLOG
echo "------------------------------------------" >> $TMPLOG
echo "PACKAGE BUILDING/INSTALLATION SUMMARY LOG" >> $TMPLOG
echo "Using the $REPO_DESC" >> $TMPLOG
cat $TMPSUMMARYLOG >> $TMPLOG
rm $TMPSUMMARYLOG
echo >> $TMPLOG
echo "------------------------------------------" >> $TMPLOG
echo >> $TMPLOG
echo "++++++++++++++++++++++++++++++++++++++++++" >> $TMPLOG
echo " Queue process complete" >> $TMPLOG
echo "++++++++++++++++++++++++++++++++++++++++++" >> $TMPLOG
echo >> $TMPLOG
cat $TMPLOG
read -n 1 -p "Press any key to continue."
if [[ $KEEPLOG ]]; then
cat $TMPLOG >> $LOGFILE
fi
rm $TMPLOG
if [[ -f $TMPQUEUE ]]; then
dialog --title "Clear Queue?" --yes-label "Keep" --no-label \
"Clear" --yesno "$(crunch "Would you like to keep the build \
queue or would you like to clear it?")" 8 35
if [[ $? == 1 ]]; then
rm $SBOPKGTMP/sbopkg-tmp-queue
rm $TMPQUEUE
dialog --title "Done" --msgbox \
"The build queue has been cleared." 8 35
fi
fi
if [[ $KEEPLOG ]]; then
[[ -f $PRECHECKLOG ]] && cat $PRECHECKLOG >> $LOGFILE
[[ -f $SBOPKGOUTPUT ]] && cat $SBOPKGOUTPUT >> $LOGFILE
cat $SUMMARYLOG >> $LOGFILE
fi
rm -f $SBOPKGOUTPUT $STARTQUEUE $FINALQUEUE $PRECHECKLOG $SUMMARYLOG
rm -f $SBOPKGTMP/sbopkg-ans-queue
rm -f $FINALQUEUE
}
start_dialog_queue() {
# This kick-starts the queue processing when using the dialog interface.
# When using cli, the -b or -i option will determine whether we build or
# build and install.
dialog --title "Install Package(s)" --yes-label "Build" \
--no-label "Build and Install" --yesno \
"$(crunch "Would you like to build the package(s) only, or \
build and install the package(s)? (Press ESC to exit).")" 8 50
case $? in
255|-1 ) # The user pressed ESC
return 0
;;
1 ) # Build and install
process_queue buildinstall
;;
0 ) # Build only
process_queue build
;;
esac
}
check_for_latest() {
@ -3047,13 +2980,17 @@ queue_menu() {
DEFAULTITEM=$(< $ANSWERFILE)
case "$DEFAULTITEM" in
"View") view_queue ;;
"View") #empty_queue && return
view_queue ;;
"Load") load_user_queue ;;
"Save") save_user_queue ;;
"Edit") edit_build_queue ;;
"Rename") rename_user_queue ;;
"Delete") delete_user_queue ;;
"Process") process_queue 1 ;;
"Process") #empty_queue && return
view_queue
cp $SBOPKGTMP/sbopkg-ans-queue $STARTQUEUE
start_dialog_queue ;;
*) break ;;
esac
done
@ -3105,6 +3042,7 @@ cleanup() {
rm -f $SBOPKGTMP/sbopkgpidlist
rm -rf $SBOPKGTMP/sbooutput
rm -f $SBOPKGTMP/sbopkg-*-queue
rm -f $SBOPKGTMP/sbopkg-tmp-*
rm -f $PIDFILE
# Back to the directory the user started sbopkg in
@ -3309,8 +3247,6 @@ unset DIAG # When set, run in dialog mode (instead of CLI mode)
unset QUIET # When set, suppress less important output in CLI mode
unset ON_ERROR # The policy used in error conditions (see "-e")
unset LAST_USER_QUEUE_ON_DISK # The name of the last loaded/saved user queue
unset BUILDPKGS # TODO
unset INSTALLPKGS # TODO
unset BUILDOPTIONS # TODO
unset SBOPKG_RENAMES_D # Directory containing files tracking package renames
# SBOPKG_CONF # Configuration file
@ -3345,7 +3281,7 @@ while getopts ":b:cd:e:f:g:hi:lopqrs:uv:" OPT; do
case $OPT in
b ) # Build
BFLAG=1
BUILDPKGS=1
TYPE="build"
BUILD="$OPTARG"
unset DIAG
;;
@ -3369,8 +3305,7 @@ while getopts ":b:cd:e:f:g:hi:lopqrs:uv:" OPT; do
;;
i ) # Build and install
IFLAG=1
BUILDPKGS=1
INSTALLPKGS=1
TYPE="buildinstall"
BUILD="$OPTARG"
unset DIAG
;;
@ -3464,6 +3399,14 @@ fi
# Check for a good config file and set initial variables
config_check
STARTQUEUE=$SBOPKGTMP/sbopkg-start-queue
TMPLOG=$SBOPKGTMP/sbopkg_tmplog
TMPQUEUE=$SBOPKGTMP/sbopkg-tmp-queue
FINALQUEUE=$SBOPKGTMP/sbopkg-final-queue
SB_OUTPUT=$SBOPKGTMP/sbooutput
SBOPKGOUTPUT=$SBOPKGTMP/sbopkg_output
TMPBUILDLOG=$SBOPKGTMP/sbopkg-tmp-buildlog
TMPSUMMARYLOG=$SBOPKGTMP/sbopkg-tmp-summarylog
# Change $SLACKVER if set manually using cli -v
if [[ $VERSION ]]; then
@ -3494,11 +3437,22 @@ else
for PKGBUILD in $BUILD; do
if [[ -r $QUEUEDIR/$PKGBUILD ]]; then
# Add an entire queue
CLIQUEUEFILE=$PKGBUILD
cp $QUEUEDIR/$PKGBUILD $CLIQUEUE
else
if search_package $PKGBUILD; then
# Add a single package
echo $PKGBUILD > $CLIQUEUE
echo $PKGBUILD >> $CLIQUEUE
else
crunch_fmt "Queuefile or package $PKGBUILD not found - \
skipping."
echo
fi
fi
done
if [[ ! -e $CLIQUEUE ]]; then
echo "No valid queuefile or package name given. Exiting."
cleanup
exit 1
fi
# Reading from $CLIQUEUE...
while read PICK; do
@ -3507,10 +3461,9 @@ else
echo $PICK_NAME >> $SBOPKGTMP/sbopkg-start-queue
fi
done < $CLIQUEUE
done
rm -f $CLIQUEUE
unset CLIQUEUE
process_queue $BUILDPKGS
process_queue $TYPE
fi
if [[ $CHK_UPDATES ]]; then