65bfad661897f4f834dd07b89c507bae0a19bdde braney Tue Sep 1 00:41:08 2026 -0700 trackDb: clear MAKEFLAGS for the metaDb sub-make, refs #35489 checkMetaDb runs a plain make in the per-database metaDb directory. The recipe that calls it is not a recursive make, so under -j the parent has already closed the jobserver pipe and the sub-make prints make[2]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. makeStrictBeta.csh greps the log for "error|warn" and exits 1 on any hit, so those warnings would stop the build even though the trackDb work succeeded. The beta path has three of these sub-makes (hg18, hg19, mm9), so three hits. Clearing MAKEFLAGS for that one command silences it. The sub-make only needs DB and TABLE, and both are passed on the command line. Tested with the real script in the same three-level shape the build uses: before, serial gives zero hits on that grep and -O -j 8 gives three; after, both give zero, and the metaDb recipe still runs in all four cases. diff --git src/hg/makeDb/trackDb/checkMetaDb src/hg/makeDb/trackDb/checkMetaDb index 75950f36e54..53f7a242425 100755 --- src/hg/makeDb/trackDb/checkMetaDb +++ src/hg/makeDb/trackDb/checkMetaDb @@ -1,55 +1,57 @@ #!/bin/bash -e usage='checkMetaDb directory metaDb db0 ...' UNAME_N=`uname -n` UNAME_N=${UNAME_N/.soe.ucsc.edu/} if [ $# -lt 3 ] ; then echo "wrong # args: $usage" >&2 exit 1 fi directory="$1"; shift metaDb="$1"; shift dbs="$@" # check if a database exists, print note and return non-zero if it doesn't dbExists() { local db="$1" local dbChk=$(/cluster/bin/x86_64/hgsql -Ne 'show databases like "'$db'"') if [ -z "$dbChk" ] ; then echo "Note: database $db does not exist, skipping" return 1 else return 0 fi } # chck metaDb for a database checkMetaDb() { local db="$1" local dbpath=$(ls -1 -d */$db) local org=$(echo $dbpath | sed -e 's/\/.*//') local metaDir=$dbpath/metaDb/$directory if test \! -d $metaDir then return; fi touch $metaDir/metaDb echo hgsqlTableDate $db $metaDb $metaDir/metaDb /cluster/bin/x86_64/hgsqlTableDate $db $metaDb $metaDir/metaDb || rm $metaDir/metaDb # makefile will call makeMetaDb if file list is newer than table - (cd $metaDir && make DB=$db TABLE=$metaDb) + # clear MAKEFLAGS: this is not a recursive make, so a parallel parent make + # has already closed the jobserver pipe and the sub-make would warn about it + (cd $metaDir && MAKEFLAGS= make DB=$db TABLE=$metaDb) rm -f $metaDir/metaDb } # load for all specified databases for db in $dbs ; do if dbExists $db ; then checkMetaDb $db fi done