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