make assigning to TMPDIR in sbopkg.conf work

Move the assignment to SBOPKGTMP (via mktemp and its TMPDIR) to after
sourcing the config file. Thanks to Ken Roberts for reporting the issue
and providing a preliminary fix.

Also modify config_check() to check for obsolete variables as it does
for required variables. Also modify cleanup() to only try to remove
SBOPKGTMP if it exists.
This commit is contained in:
slakmagik 2011-01-21 07:45:37 +00:00
parent 74306e5424
commit c2590f6aca

View file

@ -90,7 +90,7 @@ config_check() {
# Check if config file is there and if so check that it has all # Check if config file is there and if so check that it has all
# needed variables with any value, and set them. # needed variables with any value, and set them.
local MISSING VAR local MISSING VAR OBS OBSVAR
if [[ ! -d $SBOPKG_REPOS_D ]]; then if [[ ! -d $SBOPKG_REPOS_D ]]; then
echo "$SCRIPT: No $SBOPKG_REPOS_D was found." 1>&2 echo "$SCRIPT: No $SBOPKG_REPOS_D was found." 1>&2
@ -111,6 +111,25 @@ config_check() {
[[ -e $SBOPKG_CONF ]] && . $SBOPKG_CONF [[ -e $SBOPKG_CONF ]] && . $SBOPKG_CONF
[[ -e $HOME/.sbopkg.conf ]] && . $HOME/.sbopkg.conf [[ -e $HOME/.sbopkg.conf ]] && . $HOME/.sbopkg.conf
# Some configuration options are obsolete
for OBSVAR in SBOPKGTMP; do
if [[ ${!OBSVAR} ]]; then
OBS+="$OBSVAR "
fi
done
if [[ $OBS ]]; then
cat << EOF
$SCRIPT: obsolete configuration variable(s) found:
$OBS
Please remove or update any obsolete variables. See the sbopkg.conf(5) man
page for more details.
EOF
exit 1
fi
# Some configuration options are mandatory # Some configuration options are mandatory
for VAR in REPO_ROOT QUEUEDIR SRCDIR REPO_NAME REPO_BRANCH \ for VAR in REPO_ROOT QUEUEDIR SRCDIR REPO_NAME REPO_BRANCH \
KEEPLOG CLEANUP LOGFILE DEBUG_UPDATES TMP OUTPUT RSYNCFLAGS \ KEEPLOG CLEANUP LOGFILE DEBUG_UPDATES TMP OUTPUT RSYNCFLAGS \
@ -121,19 +140,15 @@ config_check() {
done done
if [[ "$MISSING" ]]; then if [[ "$MISSING" ]]; then
cat << EOF cat << EOF
$SCRIPT: required configuration variable(s) not found:
ERROR
$SCRIPT: Can't find a value for variable(s):
$MISSING $MISSING
If you have recently upgraded sbopkg there may be If you have recently upgraded sbopkg there may be new variables in the
new variables in the sbopkg.conf file. Please sbopkg.conf file. Please merge the sbopkg.conf.new file with your existing
merge the sbopkg.conf.new file with your existing sbopkg.conf file. See the sbopkg.conf(5) man page for more details.
sbopkg.conf file. Please see the sbopkg.conf(5)
man page for more details.
Please correct this error and run $SCRIPT again. Please correct this error and run $SCRIPT again.
EOF EOF
exit 1 exit 1
fi fi
@ -4113,7 +4128,9 @@ cleanup() {
if [[ $HAS_NCURSES ]]; then if [[ $HAS_NCURSES ]]; then
tput cnorm # Restore cursor tput cnorm # Restore cursor
fi fi
rm -r $SBOPKGTMP if [[ -d $SBOPKGTMP ]]; then
rm -r $SBOPKGTMP
fi
rm -f $PIDFILE rm -f $PIDFILE
} }
@ -4396,20 +4413,6 @@ DIAG=1
ON_ERROR=ask ON_ERROR=ask
REPOS_FIELDS=7 REPOS_FIELDS=7
SBOPKGTMP=$(mktemp -td sbopkg.XXXXXX) ||
{ echo "$SCRIPT: failed to create sbopkg's temporary directory"; exit 1; }
STARTQUEUE=$SBOPKGTMP/sbopkg-start-queue
USERQUEUE_LOCK=$SBOPKGTMP/sbopkg_user_queue.lck
MISSING_LIST_FILE=$SBOPKGTMP/sbopkg_addall_missing
MISSING_SINGLE_FILE=$SBOPKGTMP/sbopkg_add_item_missing
TMPLOG=$SBOPKGTMP/sbopkg_tmplog
TMPQUEUE=$SBOPKGTMP/sbopkg-tmp-queue
FINALQUEUE=$SBOPKGTMP/sbopkg-final-queue
SB_OUTPUT=$SBOPKGTMP/sbopkg-sbooutputdir
SBOPKGOUTPUT=$SBOPKGTMP/sbopkg_output
TMPBUILDLOG=$SBOPKGTMP/sbopkg-tmp-buildlog
TMPSUMMARYLOG=$SBOPKGTMP/sbopkg-tmp-summarylog
# Make sure we are root. # Make sure we are root.
if [[ $(id -u) != 0 ]]; then if [[ $(id -u) != 0 ]]; then
echo "$SCRIPT: $SCRIPT must be run by the root user. Exiting." >&2 echo "$SCRIPT: $SCRIPT must be run by the root user. Exiting." >&2
@ -4587,6 +4590,20 @@ fi
# Check for a good config file and set initial variables # Check for a good config file and set initial variables
config_check config_check
SBOPKGTMP=$(mktemp -td sbopkg.XXXXXX) ||
{ echo "$SCRIPT: failed to create sbopkg's temporary directory"; exit 1; }
STARTQUEUE=$SBOPKGTMP/sbopkg-start-queue
USERQUEUE_LOCK=$SBOPKGTMP/sbopkg_user_queue.lck
MISSING_LIST_FILE=$SBOPKGTMP/sbopkg_addall_missing
MISSING_SINGLE_FILE=$SBOPKGTMP/sbopkg_add_item_missing
TMPLOG=$SBOPKGTMP/sbopkg_tmplog
TMPQUEUE=$SBOPKGTMP/sbopkg-tmp-queue
FINALQUEUE=$SBOPKGTMP/sbopkg-final-queue
SB_OUTPUT=$SBOPKGTMP/sbopkg-sbooutputdir
SBOPKGOUTPUT=$SBOPKGTMP/sbopkg_output
TMPBUILDLOG=$SBOPKGTMP/sbopkg-tmp-buildlog
TMPSUMMARYLOG=$SBOPKGTMP/sbopkg-tmp-summarylog
# Change $REPO_BRANCH (and optionally REPO_NAME) if set manually using cli -v # Change $REPO_BRANCH (and optionally REPO_NAME) if set manually using cli -v
if [[ $VERSION ]]; then if [[ $VERSION ]]; then
if [[ $CUSTOMVER == ? ]]; then if [[ $CUSTOMVER == ? ]]; then