--- buildman/bma	2025/01/21 20:39:32	1.2
+++ buildman/bma	2025/03/12 02:31:46	1.6
@@ -44,11 +44,11 @@ then
     exit 1
 fi
 
-if [ $EUID -ne ${BUILDMAN_UID} ]
-then
-    echo "${PROGN} error:  must be run as user \"${BUILDMAN_USER}\""
-    exit 1
-fi
+#if [ $EUID -ne ${BUILDMAN_UID} ]
+#then
+#    echo "${PROGN} error:  must be run as user \"${BUILDMAN_USER}\""
+#    exit 1
+#fi
 
 OS=`uname`
 DT=`date +"%Y%m%d"`
@@ -91,23 +91,59 @@ do
             echo "$PROGN:  creating job ${JOBID}"
             JOBDIR="${HOSTDIR}/jobs/${JOBID}"
             JLOG="${JOBDIR}/job.log"
-            JSCR="${BUILDMAN_BASE}/project/${PROJECT}/scripts/build.sh"
+            JSCR="${BUILDMAN_BASE}/projects/${PROJECT}/scripts/build.sh"
+            PRESCR="${HOSTDIR}/prebuild.sh"
+            POSTSCR="${HOSTDIR}/postbuild.sh"
             
             mkdir -p "${JOBDIR}"            
             cd "${JOBDIR}"
+
+            echo "Coherent Logic Development BuildMan" >> "${JLOG}"
+            echo "Build agent is running job ID ${JOBID} for project ${PROJECT} on node ${THOST}" >> "${JLOG}"
             
             echo "${JOBID}" > "${HOSTDIR}/build-running"
             echo "${JOBID}" > "${JOBDIR}/running"
+
+            if [ -f "${PRESCR}" ]
+            then
+                echo "$PROGN:  running host-specific prebuild script ${PRESCR} for project ${PROJECT} on host ${THOST} [job id ${JOBID}]"
+                echo "$PROGN:  running host-specific prebuild script ${PRESCR} for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" >> ${JLOG}
+                sh "${PRESCR}" >> ${JLOG}
+                RETCODE=$?
+
+                if [ $RETCODE -gt 0 ]
+                then
+                    echo "$PROGN:  host-specific prebuild script failed for project ${PROJECT} on host ${THOST} [job id ${JOBID}]"
+                    echo "$PROGN:  host-specific prebuild script failed for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" >> ${JLOG}
+
+                    rm -f "${HOSTDIR}/build-running"
+                    rm -f "${JOBDIR}/running"                   
+                    rm -f "${HOSTDIR}/build-failing"
+                    rm -f "${HOSTDIR}/build-passing"
+                    
+                    echo "${JOBID}" > "${HOSTDIR}/build-failing"
+                    echo "${JOBID}" > "${JOBDIR}/failing"
+
+                    exit 1                    
+                fi
+            else
+                echo "$PROGN:  no host-specific prebuild script exists for project ${PROJECT} on host ${THOST} [job id ${JOBID}]"
+                echo "$PROGN:  no host-specific prebuild script exists for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" >> ${JLOG}
+            fi
             
             if [ -f "${JSCR}" ]
             then
                 echo "$PROGN:  running build script ${JSCR} for project ${PROJECT} [job id ${JOBID}]"
-                sh "${JSCR}" > ${JLOG}
+                echo "$PROGN:  running build script ${JSCR} for project ${PROJECT} [job id ${JOBID}]" >> ${JLOG}
+                sh "${JSCR}" >> ${JLOG}
                 RETCODE=$?
 
                 rm -f "${HOSTDIR}/build-running"
                 rm -f "${JOBDIR}/running"
-    
+
+                rm -f "${HOSTDIR}/build-failing"
+                rm -f "${HOSTDIR}/build-passing"
+                
                 case $RETCODE in
 
                     0)
@@ -117,6 +153,7 @@ do
                     *)
                         echo "${JOBID}" > "${HOSTDIR}/build-failing"
                         echo "${JOBID}" > "${JOBDIR}/failing"
+                        exit 1
                         ;;
 
                 esac
@@ -127,8 +164,34 @@ do
                 echo "$PROGN:  build script ${JSCR} missing for project ${PROJECT} [job id ${JOBID}]" >> "${JLOG}"
                 rm -f "${HOSTDIR}/build-running"
                 rm -f "${JOBDIR}/running"
+            fi
 
+            if [ -f "${POSTSCR}" ]
+            then
+                echo "$PROGN:  running host-specific postbuild script ${POSTSCR} for project ${PROJECT} on host ${THOST} [job id ${JOBID}]"
+                echo "$PROGN:  running host-specific postbuild script ${POSTSCR} for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" >> ${JLOG}
+                sh "${POSTSCR}" >> ${JLOG}
+                RETCODE=$?
+
+                if [ $RETCODE -gt 0 ]
+                then
+                    echo "$PROGN:  host-specific postbuild script failed for project ${PROJECT} on host ${THOST} [job id ${JOBID}]"
+                    echo "$PROGN:  host-specific postbuild script failed for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" >> ${JLOG}
+
+                    rm -f "${HOSTDIR}/build-running"
+                    rm -f "${JOBDIR}/running"                   
+                    rm -f "${HOSTDIR}/build-failing"
+                    rm -f "${HOSTDIR}/build-passing"
+                    
+                    echo "${JOBID}" > "${HOSTDIR}/build-failing"
+                    echo "${JOBID}" > "${JOBDIR}/failing"
+                    exit 1                    
+                fi
+            else
+                echo "$PROGN:  no host-specific postbuild script exists for project ${PROJECT} on host ${THOST} [job id ${JOBID}]"
+                echo "$PROGN:  no host-specific postbuild script exists for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" >> ${JLOG}
             fi
+            
         fi
     fi