be4311c07e14feb728abc6425ee606ffaa611a58 markd Fri Jan 22 06:46:58 2021 -0800 merge with master diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c index 9661ca0..28ec94c 100644 --- src/hg/lib/trackHub.c +++ src/hg/lib/trackHub.c @@ -897,40 +897,38 @@ static void expandOneUrl(struct hash *settingsHash, char *hubUrl, char *variable) { struct hashEl *hel = hashLookup(settingsHash, variable); if (hel != NULL) { char *oldVal = hel->val; hel->val = trackHubRelativeUrl(hubUrl, oldVal); freeMem(oldVal); } } static void expandBigDataUrl(struct trackHub *hub, struct trackHubGenome *genome, struct trackDb *tdb) /* Expand bigDataUrls so that no longer relative to genome->trackDbFile */ { -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "bigDataUrl"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "bigDataIndex"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "frames"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "summary"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "linkDataUrl"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "searchTrix"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "barChartSampleUrl"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "barChartMatrixUrl"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, SUBTRACK_HIDE_EMPTY_MULTIBED_URL); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, SUBTRACK_HIDE_EMPTY_SOURCES_URL); +struct hashEl *hel; +struct hashCookie cookie = hashFirst(tdb->settingsHash); +while ((hel = hashNext(&cookie)) != NULL) + { + char *name = hel->name; + if (trackSettingIsFile(name)) + expandOneUrl(tdb->settingsHash, genome->trackDbFile, name); + } } struct trackHubGenome *trackHubFindGenome(struct trackHub *hub, char *genomeName) /* Return trackHubGenome of given name associated with hub. Return NULL if no * such genome. Check genomeName without hub prefix to see if this hub * is attached to an assembly hub.*/ { struct trackHubGenome *ret = hashFindVal(hub->genomeHash, genomeName); if (ret == NULL) ret = hashFindVal(hub->genomeHash, hubConnectSkipHubPrefix(genomeName)); return ret; } static void requireBarChartBars(struct trackHub *hub, struct trackHubGenome *genome, struct trackDb *tdb) @@ -1081,36 +1079,37 @@ // mark the containers by setting their subtracks pointer markContainers(hub, genome, tdbList); /* Loop through list checking tags */ struct trackDb *tdb; for (tdb = tdbList; tdb != NULL; tdb = tdb->next) { validateOneTrack(hub, genome, tdb); // clear these two pointers which we set in markContainers tdb->subtracks = NULL; tdb->parent = NULL; } } -struct trackDb *trackHubTracksForGenome(struct trackHub *hub, struct trackHubGenome *genome) +struct trackDb *trackHubTracksForGenome(struct trackHub *hub, struct trackHubGenome *genome, struct dyString *incFiles) /* Get list of tracks associated with genome. Check that it only is composed of legal - * types. Do a few other quick checks to catch errors early. */ + * types. Do a few other quick checks to catch errors early. If incFiles is not NULL, + * put the list of included files in there. */ { struct lineFile *lf = udcWrapShortLineFile(genome->trackDbFile, NULL, MAX_HUB_TRACKDB_FILE_SIZE); -struct trackDb *tdbList = trackDbFromOpenRa(lf, NULL); +struct trackDb *tdbList = trackDbFromOpenRa(lf, NULL, incFiles); lineFileClose(&lf); char *tabMetaName = hashFindVal(genome->settingsHash, "metaTab"); char *absTabName = NULL; if (tabMetaName) absTabName = trackHubRelativeUrl(hub->url, tabMetaName); char *tagStormName = hashFindVal(genome->settingsHash, "metaDb"); char *absStormName = NULL; if (tagStormName) absStormName = trackHubRelativeUrl(hub->url, tagStormName); /* Make bigDataUrls more absolute rather than relative to genome.ra dir */ struct trackDb *tdb; for (tdb = tdbList; tdb != NULL; tdb = tdb->next) @@ -1298,31 +1297,31 @@ } } } void trackHubFindPos(struct cart *cart, char *db, char *term, struct hgPositions *hgp) /* Look for term in track hubs. Update hgp if found */ { struct trackDb *tdbList = NULL; if (trackHubDatabase(db)) { struct trackHubGenome *genome = trackHubGetGenome(db); - tdbList = trackHubTracksForGenome(genome->trackHub, genome); + tdbList = trackHubTracksForGenome(genome->trackHub, genome, NULL); } else tdbList = hubCollectTracks(db, NULL); findBigBedPosInTdbList(cart, db, tdbList, term, hgp, NULL); } static void parseBlatPcrParams(char *database, char *type, char *setting, char **pHost, char **pPort, char **pGenomeDataDir) /* parser parameters for either blat or pcr */ { char *conf = trimSpaces(cloneString(setting)); int numWords = chopByWhite(conf, NULL, 5); if ((numWords < 2) || (numWords > 4)) errAbort("invalid configuration for hub %s server, expect 2 or 4 arguments: %s", type, setting);