svn commit: r236836 - user/dougb/portmaster
Doug Barton
dougb at FreeBSD.org
Sun Jun 10 07:15:13 UTC 2012
Author: dougb
Date: Sun Jun 10 07:15:13 2012
New Revision: 236836
URL: http://svn.freebsd.org/changeset/base/236836
Log:
Improve error handling for pm_mktemp. For some reason, exit called from
within a function is not actually exiting, so handle this with a little
more brute force.
Modified:
user/dougb/portmaster/portmaster
Modified: user/dougb/portmaster/portmaster
==============================================================================
--- user/dougb/portmaster/portmaster Sun Jun 10 06:44:19 2012 (r236835)
+++ user/dougb/portmaster/portmaster Sun Jun 10 07:15:13 2012 (r236836)
@@ -212,7 +212,11 @@ parent_exit () {
else
local new_pm_log
- new_pm_log=`pm_mktemp pm_log` && mv $new_pm_log $PM_LOG
+ if new_pm_log=`pm_mktemp pm_log` ; then
+ mv $new_pm_log $PM_LOG
+ else
+ fail 'mktemp failed for pm_log'
+ fi
fi
[ -n "$PM_LOG" ] && date >> $PM_LOG
fi
@@ -297,8 +301,14 @@ pm_make () { ( unset -v CUR_DEPS INSTA
unset -v PM_URB_LIST;
/usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*; ); }
pm_make_b () { /usr/bin/make $PM_MAKE_ARGS BEFOREPORTMK=bpm $*; }
-pm_mktemp () { /usr/bin/mktemp -t f-${PM_PARENT_PID}-$1 ||
- fail "mktemp for $1 failed"; }
+pm_mktemp () {
+ local f
+ if f=`/usr/bin/mktemp -t f-${PM_PARENT_PID}-$1 2>/dev/null` ; then
+ echo $f
+ else
+ return 1
+ fi
+}
pm_unlink () { [ -e "$1" ] && /bin/unlink $1; }
# Superuser versions for commands that need root privileges
@@ -804,7 +814,8 @@ if [ "$$" -eq "$PM_PARENT_PID" ]; then
if [ -n "$do_index_fetch" ] ||
[ ${index_time:-0} -ne `stat -f '%Um' ${PM_INDEX}.bz2 2>/dev/null` ]; then
- dli=`mktemp -d ${TMPDIR}/d-${PM_PARENT_PID}-index`
+ dli=`/usr/bin/mktemp -d ${TMPDIR}/d-${PM_PARENT_PID}-index 2>/dev/null` ||
+ fail "Could not create a temporary directory for index in $TMPDIR"
if [ -n "$do_index_fetch" ]; then
ift="$FETCHINDEX ${dli}/${INDEXFILE}.bz2 ${MASTER_SITE_INDEX}${INDEXFILE}.bz2"
$ift || fail Could not perform $ift
@@ -933,7 +944,7 @@ check_dependency_files () {
*+*) ro_opd=`echo $ro_opd | sed 's#\+#\\\\+#g'` ;; esac
# Always rely on the grep'ed dependencies instead of +REQUIRED_BY
- grep_deps=`pm_mktemp grep-deps-${iport}`
+ grep_deps=`pm_mktemp grep-deps-${iport}` || fail "mktemp failed for grep-deps-${iport}"
egrep -l "DEPORIGIN:($origin|$ro_opd)$" $pdb/*/+CONTENTS |
strip_to_iport | sort -u > $grep_deps
@@ -1013,7 +1024,7 @@ IFS='
contents=$1 ; origin=$2 ; n_port=$3 ; old_origin=$4
iport=${contents#$pdb/} ; iport=${iport%/+CONTENTS}
- new_cont=`pm_mktemp contents-${iport}`
+ new_cont=`pm_mktemp contents-${iport}` || fail "mktemp failed for contents-${iport}"
if [ -z "$delete" ]; then o_seen=':'; else o_seen=":${origin}:"; fi
@@ -1311,7 +1322,7 @@ if [ -n "$CLEAN_DISTFILES" ]; then
[ -n "$DISTDIR" ] || fail 'There is no DISTDIR to clean'
# Set the file name here since we are usually called in a subshell
- DI_FILES=`pm_mktemp DI-FILES`
+ DI_FILES=`pm_mktemp DI-FILES` || fail 'mktemp failed for DI-FILES'
if [ -z "$PM_THOROUGH" ]; then
read_distinfos
@@ -2869,7 +2880,7 @@ make_config () {
if [ "$$" -eq "$PM_PARENT_PID" -a -z "$SHOW_WORK" ]; then
CUR_DEPS=':' ; DISPLAY_LIST='' ; INSTALLED_LIST=''
- PM_DEPTH='' ; IPC_SAVE=`pm_mktemp IPC_SAVE`
+ PM_DEPTH='' ; IPC_SAVE=`pm_mktemp IPC_SAVE` || fail 'mktemp failed for IPC_SAVE'
export CUR_DEPS DISPLAY_LIST INSTALLED_LIST PM_DEPTH IPC_SAVE
if [ -n "$LOCALBASE" ]; then
@@ -2945,7 +2956,7 @@ if [ "$$" -eq "$PM_PARENT_PID" -a -z "$S
# Set the file name here so it's visible to the children
[ -z "$DONT_SCRUB_DISTFILES" -a -z "$FETCH_ONLY" -a -z "$PM_PACKAGES" ] &&
- export DI_FILES=`pm_mktemp DI-FILES`
+ export DI_FILES=`pm_mktemp DI-FILES` || fail 'mktemp failed for DI-FILES'
[ -n "$PM_URB" ] && multiport $PM_URB_IPORTS
[ $# -gt 1 -a -z "$REPLACE_ORIGIN" ] && multiport "$@"
@@ -3235,7 +3246,8 @@ if [ -z "$PM_INDEX_ONLY" -a -z "$PM_BUIL
for file in $distfiles; do
case "$file" in */*) file=`echo $file | sed s#/#_#g` ;; esac
if ! ls ${TMPDIR}/f-${PM_PARENT_PID}-${file}-* >/dev/null 2>&1; then
- pm_mktemp ${file}-${portdir#*/} >/dev/null
+ pm_mktemp ${file}-${portdir#*/} >/dev/null ||
+ fail "mktemp failed for ${file}-${portdir#*/}"
else
DONT_FETCH=dont_fetch
break
@@ -3244,7 +3256,8 @@ if [ -z "$PM_INDEX_ONLY" -a -z "$PM_BUIL
if [ -z "$DONT_FETCH" -a -n "$distfiles" ]; then
echo "===>>> Launching 'make checksum' for $portdir in background"
- fetchlog=`pm_mktemp fetchlog-${portdir#*/}`
+ fetchlog=`pm_mktemp fetchlog-${portdir#*/}` ||
+ fail "mktemp failed for fetchlog-${portdir#*/}"
(pm_make -DBATCH checksum >> $fetchlog 2>&1 && {
rm -f ${TMPDIR}/f-${PM_PARENT_PID}-*-${portdir#*/}.*; exit 0; }
allfiles=`pm_make -V ALLFILES`
@@ -3473,7 +3486,7 @@ fetch_package () {
dirlist=`echo ${TMPDIR}/f-${PM_PARENT_PID}-dl-${portdir%/*}\.*`
if [ ! -r "$dirlist" ]; then
pm_unlink $dirlist # JIC
- dirlist=`pm_mktemp dl-${portdir%/*}`
+ dirlist=`pm_mktemp dl-${portdir%/*}` || fail "mktemp failed for dl-${portdir%/*}"
fetch -q -o - ${sitepath} 2>/dev/null |
sed -e "s#%2[cC]#,#g" -e "s#%2[bB]#+#g" > $dirlist
fi
@@ -3626,8 +3639,8 @@ if [ -z "$use_package" ]; then
unset count fl_read
if [ -n "$HIDE_BUILD" ]; then
- port_log=`mktemp -t port_log-${PM_PARENT_PID}-${portdir#*/}` ||
- fail "mktemp for $1 failed"
+ port_log=`/usr/bin/mktemp -t port_log-${PM_PARENT_PID}-${portdir#*/}` ||
+ fail "mktemp for port_log-${PM_PARENT_PID}-${portdir#*/} failed"
port_log_args=">> $port_log 2>&1"
echo "===>>> Logging build to $port_log"
fi
@@ -3649,7 +3662,7 @@ if [ -n "$upg_port" -o -n "$ro_upg_port"
[ -z "$NO_BACKUP" ] && pm_pkg_create $pbu $UPGRADE_PORT
if [ -n "$SAVE_SHARED" ]; then
- ldconfig_out=`pm_mktemp ldconfig`
+ ldconfig_out=`pm_mktemp ldconfig` || fail 'mktemp for ldconfig failed'
ldconfig -r | sed 's#.* ##' |
grep -v ^$LOCALBASE_COMPAT > $ldconfig_out
@@ -3687,7 +3700,8 @@ if [ -n "$upg_port" -o -n "$ro_upg_port"
*" $portdir "*)
preserve_port=`echo $portdir | sed 's#[-+/\.]#_#g'`
eval preserve_port_files="\$${preserve_port}_files"
- preserve_dir=`mktemp -d ${TMPDIR}/d-${PM_PARENT_PID}-${preserve_port}`
+ preserve_dir=`/usr/bin/mktemp -d ${TMPDIR}/d-${PM_PARENT_PID}-${preserve_port} 2>/dev/null` ||
+ fail "Could not create a temporary directory for $preserve_port in $TMPDIR"
for file in $preserve_port_files; do
cp -p $file ${preserve_dir}/ ||
fail "Cannot copy $file, which is in \$${preserve_port}_files"
@@ -3762,7 +3776,7 @@ for file in $preserve_port_files; do
mv ${preserve_dir}/${file##*/} $file
oldmd5="MD5:`md5 -q $file`"
- new_cont=`pm_mktemp contents`
+ new_cont=`pm_mktemp contents` || fail 'mktemp failed for contents'
while read left right; do
case "$left" in
@cwd) short_file="${file#${right}/}" ;;
@@ -3841,7 +3855,7 @@ if [ -n "$distfiles" ]; then
[ -n "$distinfo" ] || fail "No DISTINFO_FILE in $portdir"
fi
- dist_list_temp=`pm_mktemp dist_list`
+ dist_list_temp=`pm_mktemp dist_list` || fail 'mktemp failed for dist_list'
echo '# Added by portmaster' > $dist_list_temp
for file in $distfiles; do
size=`grep "^SIZE (${ds}${file})" $distinfo`
More information about the svn-src-user
mailing list