c3fc03a88ff8fcd8fffadcdd960693268c2a6f5f hiram Thu May 14 11:43:43 2026 -0700 correctly use a dedicated clean otto kent source tree for operations in the source tree refs #31811 diff --git src/hg/utils/otto/userRequests/ottoBuildGenArkHub.py src/hg/utils/otto/userRequests/ottoBuildGenArkHub.py index 8d0d5e540f7..3b2771f0512 100755 --- src/hg/utils/otto/userRequests/ottoBuildGenArkHub.py +++ src/hg/utils/otto/userRequests/ottoBuildGenArkHub.py @@ -96,30 +96,34 @@ # keep ref alive for the lifetime of the process _ = lockFh genarkInfo = ottoLib.lookupGenark(accessions) for acc in accessions: if acc not in genarkInfo: print("WARNING: %s not in genark table - skipping" % acc, file=sys.stderr) grouped = ottoLib.groupByClade(set(genarkInfo.keys()), {}, genarkInfo) if not grouped: print("ERROR: nothing to do - no accessions resolved to a clade", file=sys.stderr) sys.exit(1) + # bring the otto kent tree up to date before any cladeAsmHub make + if not ottoLib.gitPullKentTree(): + sys.exit(1) + # doTrackDb runs first: it refreshes per-asm trackDb stanzas that the # downstream make chain then bakes into the hub files. An asm whose # doTrackDb fails is dropped from this build pass (the make chain # would otherwise bake stale or broken trackDb into the hub files); # a clade whose every asm fails doTrackDb is dropped entirely. doTdbFailures = [] for clade in sorted(grouped): survivors = [] for asmId in grouped[clade]: if ottoLib.runDoTrackDb(asmId, logPath=doTdbLog): survivors.append(asmId) else: doTdbFailures.append(asmId) print("# WARNING: doTrackDb failed for %s - dropping " "from this build pass" % asmId, file=sys.stderr)