c3bb4207fb2a58064b937ba9fef1cc11852f7576 hiram Wed Mar 25 10:48:49 2026 -0700 allow trackDb entry to override the in-code defaults of the gcOnFly track refs #35958 diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c index 47375013db5..3950824e761 100644 --- src/hg/lib/hdb.c +++ src/hg/lib/hdb.c @@ -3980,30 +3980,32 @@ trackDbAddTableField(tdbList); return tdbList; } boolean trackDataAccessibleHash(char *database, struct trackDb *tdb, struct hash *gbdbHash) /* Return TRUE if underlying data are accessible - meaning the track has either * a bigDataUrl with remote URL (http:// etc), a bigDataUrl with an existing local file, * or a database table with the same name. * Note: this returns FALSE for composite tracks; use this on subtracks or simple tracks. * * if gbdbHash is not NULL, use it when looking for the file */ { if (startsWith("mathWig", tdb->type) || startsWith("cartVersion", tdb->type)|| startsWith("instaPort", tdb->type) ) return TRUE; // assume mathWig data is available. Fail at load time if it isn't // cartVersion is a pseudo trackDb entry with no data +if (trackDbSettingOn(tdb, "syntheticTrack")) + return TRUE; // synthetic tracks compute data on the fly, no table or file needed char *bigDataUrl = trackDbSetting(tdb, "bigDataUrl"); if (bigDataUrl != NULL) { bigDataUrl = replaceChars(bigDataUrl, "$D", database); char *bigDataUrlLocal = hReplaceGbdb(bigDataUrl); if (hasProtocol(bigDataUrlLocal)) return TRUE; else { if (gbdbHash == NULL) return fileExists(bigDataUrlLocal); else return hashLookup(gbdbHash, bigDataUrlLocal) != NULL; } }