Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Jun 2012 22:22:52 +0000
From:      scher@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r238512 - soc2012/scher/par_ports/head/Mk
Message-ID:  <20120628222252.1473B106566B@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: scher
Date: Thu Jun 28 22:22:51 2012
New Revision: 238512
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=238512

Log:
  [new_feature] ${_parv_CHECK_SEQ} considers parent process's lock file
  [user_feedback] feedback changes in ${_parv_CHECK_SEQ} ${_parv_CHECK_LOCK}
  	${_TERMINATE_PROCESS_TREE} scripts
  

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	Thu Jun 28 21:24:56 2012	(r238511)
+++ soc2012/scher/par_ports/head/Mk/bsd.parallel.mk	Thu Jun 28 22:22:51 2012	(r238512)
@@ -343,17 +343,27 @@
 	if [ \$${pid} ]; then \
 		ps -p \$${pid} > /dev/null && status=\$$? || status=\$$?; \
 		if [ \$${status} -eq 0 ]; then \
-			${_dparv_START_OUTPUT}; \
-			${ECHO_CMD} Unable to lock ${LOCK_DIR}/$${pkg_name}; \
-			${ECHO_CMD} Dir: ${LOCK_DIR}   is already locked by another working process ...; \
-			${_dparv_START_OUTPUT}; \
+			cur_pid=${.MAKE.PID}; \
+			while true; do \
+				ppid=\$$( ps -o ppid -p \$${cur_pid} | ${AWK} "NR==2" ); \
+				if [ \$${ppid} -eq \$${pid} ]; then \
+					${ECHO_CMD} '===> $${pkg_name} is locked by parent make process'; \
+					${ECHO_CMD} '     We are allowed to work here'; \
+					exit 0; \
+				elif [ \$${ppid} -eq 0 ]; then \
+					break; \
+				else \
+					cur_pid=\$${ppid}; \
+				fi; \
+			done; \
+			${ECHO_CMD} '===> $${pkg_name} is already locked by another working process'; \
 			exit ${_parv_ON_LOCK_EXIT_STATUS}; \
 		else \
-			${_dparv_START_OUTPUT}; \
-			${ECHO_CMD} Dir: ${LOCK_DIR}/$${pkg_name}   Stalled lock Detected!; \
-			${ECHO_CMD} Deleting stalled lock. PID=\$${pid}; \
-			${_dparv_END_OUTPUT}; \
+			${ECHO_CMD} '===> Stalled lock Detected for $${pkg_name}'; \
+			${ECHO_CMD} '     Deleting stalled lock'; \
 		fi; \
+	else \
+		${ECHO_CMD} '===> $${pkg_name} is not locked'; \
 	fi; \
 	${RM} -rf ${LOCK_DIR}/$${pkg_name}
 
@@ -364,9 +374,8 @@
 					[ $${status} -eq ${_parv_ON_LOCK_EXIT_STATUS} ]; then \
 				exit ${_parv_ON_LOCK_EXIT_STATUS}; \
 			else \
-				${_dparv_START_OUTPUT}; \
-				${ECHO_CMD} "Unhandled EXIT STATUS = $${status}. Terminating"; \
-				${_dparv_END_OUTPUT}; \
+				${ECHO_CMD}; \
+				${ECHO_CMD} "Unhandled EXIT STATUS = $${status}. Terminating..."; \
 				exit 1; \
 			fi; \
 	}
@@ -511,7 +520,8 @@
 # 
 _TERMINATE_PROCESS_TREE= \
 	[ $$? -eq 0 ] && exit 0; \
-	${ECHO_CMD} Terminating process tree strating from ${.MAKE.PID}; \
+	${ECHO_CMD}; \
+	${ECHO_CMD} Terminating process tree strating from ${PKGNAME} build process \( PID ${.MAKE.PID} \); \
 	pids_to_kill=${.MAKE.PID}; \
 	/bin/kill -STOP ${.MAKE.PID} 2> /dev/null || ${DO_NADA}; \
 	ppids=$$( ps -xao pid,ppid | awk "{ if (\$$2==${.MAKE.PID}) {print \$$1} }" ); \
@@ -529,7 +539,7 @@
 		done; \
 		if [ $${\#ppids} -eq 0 ]; then break; fi; \
 	done; \
-	${ECHO_CMD} PIDs to kill: $${pids_to_kill}; \
+	${ECHO_CMD} Processes with the following PIDs will be killed: $${pids_to_kill}; \
 	/bin/kill -KILL $${pids_to_kill} 2> /dev/null || ${DO_NADA}
 
 #####################################################



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120628222252.1473B106566B>