socsvn commit: r236758 - soc2012/scher/par_ports/head/Mk
scher at FreeBSD.org
scher at FreeBSD.org
Wed May 30 19:05:00 UTC 2012
Author: scher
Date: Wed May 30 19:04:58 2012
New Revision: 236758
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=236758
Log:
[bugfix] ":=" Type of MAkefile variable expansion leads to wrong
results of "$$(...)" command.
[new_feature] seal breakpoint targets for debbuging purpose
Submitted by: Alexander Pronin
Modified:
soc2012/scher/par_ports/head/Mk/bsd.parallel.mk
Modified: soc2012/scher/par_ports/head/Mk/bsd.parallel.mk
==============================================================================
--- soc2012/scher/par_ports/head/Mk/bsd.parallel.mk Wed May 30 18:05:48 2012 (r236757)
+++ soc2012/scher/par_ports/head/Mk/bsd.parallel.mk Wed May 30 19:04:58 2012 (r236758)
@@ -27,6 +27,11 @@
${ECHO_CMD} Press any key when you are ready to continue; \
read non_existed_var
+seal:
+ @echo " <<<<<< ===== WE ARE HERE ===== >>>>>>"
+breakpoint:
+ @${_dparv_DEBUGGING_BREAKPOINT}
+
# Delay for feedback message if the directory is locked.
# Just not to annoy a user with feedback message on each attempt to lock a directory.
_parv_ON_LOCK_FEEDBACK_TIMEOUT?= 2
@@ -81,10 +86,10 @@
_parv_MAKE_LOCK_EXIT_STATUS= 158
-# Senquence of commands to lock a directory using ${_parv_LOCK_FILE}.
-# During evaluation of the following commands lockf(1) is holding lock on ${_parv_LOCK_FILE} file.
+# Senquence of commands to lock a directory using ${_parv_${_lock_dir}_LOCK_FILE}.
+# During evaluation of the following commands lockf(1) is holding lock on ${_parv_${_lock_dir}_LOCK_FILE} file.
# Hence NO other process is able to evaluate any commands using lockf(1)
-# locking on the same ${_parv_LOCK_FILE} file.
+# locking on the same ${_parv_${_lock_dir}_LOCK_FILE} file.
#
# Stalled locks cheking enabled.
#
@@ -96,11 +101,11 @@
# _parv_PKG_DBDIR_LOCK_SEQ
# _parv_LOCK_DIR_LOCK_SEQ
#
-_parv_LOCK_FILE:= ${_parv_${_lock_dir}_LOCK_FILE}
+#_parv_${_lock_dir}_LOCK_FILE:= ${_parv_${_lock_dir}_LOCK_FILE}
-_parv_${_lock_dir}_LOCK_SEQ:= \
- ${CHMOD} 777 ${${_lock_dir}}/${_parv_LOCK_FILE}; \
- pid=$$(${CAT} ${${_lock_dir}}/${_parv_LOCK_FILE}); \
+_parv_${_lock_dir}_LOCK_SEQ= \
+ ${CHMOD} 777 ${${_lock_dir}}/${_parv_${_lock_dir}_LOCK_FILE}; \
+ pid=$$(${CAT} ${${_lock_dir}}/${_parv_${_lock_dir}_LOCK_FILE}); \
if [ $${pid} ]; then \
ps -p $${pid} > /dev/null && status=$$? || status=$$?; \
if [ $${status} -eq 0 ]; then \
@@ -109,15 +114,15 @@
${_dparv_START_OUTPUT}; \
${ECHO_CMD} "Dir: ${${_lock_dir}} Stalled lock Detected!"; \
${ECHO_CMD} "Deleting stalled lock. PID=$${pid}"; \
- ${ECHO_CMD} "Locking: ${${_lock_dir}}/${_parv_LOCK_FILE}"; \
+ ${ECHO_CMD} "Locking: ${${_lock_dir}}/${_parv_${_lock_dir}_LOCK_FILE}"; \
${_dparv_END_OUTPUT}; \
- ${ECHO_CMD} ${.MAKE.PID} > ${${_lock_dir}}/${_parv_LOCK_FILE}; \
+ ${ECHO_CMD} ${.MAKE.PID} > ${${_lock_dir}}/${_parv_${_lock_dir}_LOCK_FILE}; \
fi; \
else \
${_dparv_START_OUTPUT}; \
- ${ECHO_CMD} "Locking: ${${_lock_dir}}/${_parv_LOCK_FILE}"; \
+ ${ECHO_CMD} "Locking: ${${_lock_dir}}/${_parv_${_lock_dir}_LOCK_FILE}"; \
${_dparv_END_OUTPUT}; \
- ${ECHO_CMD} ${.MAKE.PID} > ${${_lock_dir}}/${_parv_LOCK_FILE}; \
+ ${ECHO_CMD} ${.MAKE.PID} > ${${_lock_dir}}/${_parv_${_lock_dir}_LOCK_FILE}; \
fi
#####################################################
@@ -127,8 +132,8 @@
# This scripts handles exit status of lockf(1) call.
# It substitutes exit status 75 of lockf(1) for ${_parv_ON_LOCK_EXIT_STATUS} and pushes it.
#
-_parv_${_lock_dir}_DO_LOCK:= \
- lockf -k -t ${_parv_WAIT_FOR_LOCK_TIME} ${${_lock_dir}}/${_parv_LOCK_FILE} ${SH} -c '${_parv_${_lock_dir}_LOCK_SEQ}' || { \
+_parv_${_lock_dir}_DO_LOCK= \
+ lockf -k -t ${_parv_WAIT_FOR_LOCK_TIME} ${${_lock_dir}}/${_parv_${_lock_dir}_LOCK_FILE} ${SH} -c '${_parv_${_lock_dir}_LOCK_SEQ}' || { \
status=$$?; \
if [ $${status} -eq ${_parv_LOCKF_EX_TEMPFAIL} ] || \
[ $${status} -eq ${_parv_ON_LOCK_EXIT_STATUS} ]; then \
@@ -137,7 +142,7 @@
${_dparv_START_OUTPUT}; \
${ECHO_CMD} "Unhandled EXIT STATUS = $${status}. Terminating"; \
${_dparv_END_OUTPUT}; \
- exit $${status}; \
+ exit 1; \
fi; \
}
@@ -162,7 +167,7 @@
elif [ $${status} -eq ${_parv_ON_LOCK_EXIT_STATUS} ]; then \
if [ $$(( $${enable_feedback} % ${_parv_ON_LOCK_FEEDBACK_TIMEOUT} )) -eq 0 ]; then \
${_dparv_START_OUTPUT}; \
- ${ECHO_CMD} "Unable to lock ${${_lock_dir}}/${_parv_LOCK_FILE}"; \
+ ${ECHO_CMD} "Unable to lock ${${_lock_dir}}/${_parv_${_lock_dir}_LOCK_FILE}"; \
${ECHO_CMD} "Dir: ${${_lock_dir}} is already locked by another working process ..."; \
${ECHO_CMD} "Waiting for unlock ........................................................."; \
${_dparv_END_OUTPUT}; \
@@ -182,22 +187,22 @@
# _parv_PKG_DBDIR_DO_UNLOCK
# _parv_LOCK_DIR_DO_UNLOCK
#
-_parv_${_lock_dir}_DO_UNLOCK:= \
- lockf -k -t ${_parv_WAIT_FOR_UNLOCK_TIME} ${${_lock_dir}}/${_parv_LOCK_FILE} \
- ${RM} ${${_lock_dir}}/${_parv_LOCK_FILE} && { \
+_parv_${_lock_dir}_DO_UNLOCK= \
+ lockf -k -t ${_parv_WAIT_FOR_UNLOCK_TIME} ${${_lock_dir}}/${_parv_${_lock_dir}_LOCK_FILE} \
+ ${RM} ${${_lock_dir}}/${_parv_${_lock_dir}_LOCK_FILE} && { \
${_dparv_START_OUTPUT}; \
- ${ECHO_CMD} "Dir: ${${_lock_dir}}/${_parv_LOCK_FILE} is unlocked"; \
+ ${ECHO_CMD} "Dir: ${${_lock_dir}}/${_parv_${_lock_dir}_LOCK_FILE} is unlocked"; \
${_dparv_END_OUTPUT}; \
} || { \
${_dparv_START_OUTPUT}; \
${ECHO_CMD} "Hard unlock!"; \
- ${RM} -rf ${${_lock_dir}}/${_parv_LOCK_FILE}; \
+ ${RM} -rf ${${_lock_dir}}/${_parv_${_lock_dir}_LOCK_FILE}; \
${_dparv_END_OUTPUT}; \
}
.endfor # _lock_dir in PKG_DBDIR .CURDIR
-.undef _parv_LOCK_FILE
+.undef _parv_${_lock_dir}_LOCK_FILE
#####################################################
# _parv_CHECK_SEQ
@@ -237,7 +242,7 @@
${_dparv_START_OUTPUT}; \
${ECHO_CMD} "Unhandled EXIT STATUS = $${status}. Terminating"; \
${_dparv_END_OUTPUT}; \
- exit $${status}; \
+ exit 1; \
fi; \
}
@@ -255,7 +260,13 @@
check-lock:
@( pkg_name=${PKGNAME}; ${_parv_CHECK_LOCK} ) || { ${_parv_ON_LOCK_EXIT_SEQ}; }
-
+
+lock-pkg-dbdir:
+ @attempts=-1; ${_parv_PKG_DBDIR_LOCK_LOOP}
+
+unlock-pkg-dbdir:
+ @${_parv_PKG_DBDIR_DO_UNLOCK}
+
do-lock:
@${DO_NADA}
More information about the svn-soc-all
mailing list