f9f813c4330857fed2ed6008e6d6e9eb54d2474a galt Fri Mar 28 04:51:53 2025 -0700 fixing slNameSort in list.c for hubApi, refreshed expected output lists. fixes #26947 diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c index 9c79295079b..a5530f56e15 100644 --- src/hg/lib/trackHub.c +++ src/hg/lib/trackHub.c @@ -1768,15 +1768,57 @@ FILE *f = mustOpen(filename, "a"); chmod(filename, 0666); walkTree(f, db, cart, tdbList, visDy); fclose(f); return cloneString(filename); } struct grp *trackHubGetGrps() /* Get the groups defined by attached track hubs. */ { return trackHubGrps; } + +struct trackDb *trackHubAddTracksGenome(struct trackHubGenome *hubGenome) +/* Load up stuff from data hub and return list. */ +{ +/* Load trackDb.ra file and make it into proper trackDb tree */ +struct trackDb *tdbList = NULL; + +if (hubGenome != NULL) + { + boolean doCache = trackDbCacheOn(); + + if (doCache) + { + // we have to open the trackDb file to get the udc cache to check for an update + struct udcFile *checkCache = udcFileMayOpen(hubGenome->trackDbFile, NULL); + if (checkCache != NULL) + { + time_t time = udcUpdateTime(checkCache); + udcFileClose(&checkCache); + + struct trackDb *cacheTdb = trackDbHubCache(hubGenome->trackDbFile, time); + + if (cacheTdb != NULL) + return cacheTdb; + } + + memCheckPoint(); // we want to know how much memory is used to build the tdbList + } + + struct dyString *incFiles = newDyString(4096); + boolean foundFirstGenome = FALSE; + tdbList = trackHubTracksForGenome(hubGenome->trackHub, hubGenome, incFiles, &foundFirstGenome); + tdbList = trackDbLinkUpGenerations(tdbList); + tdbList = trackDbPolishAfterLinkup(tdbList, hubGenome->name); + trackDbPrioritizeContainerItems(tdbList); + trackHubPolishTrackNames(hubGenome->trackHub, tdbList); + + if (doCache) + trackDbHubCloneTdbListToSharedMem(hubGenome->trackDbFile, tdbList, memCheckPoint(), incFiles->string); + } +return tdbList; +}