16113a55a853321b5251989c64f6c995f8ed583b hiram Mon Apr 6 14:05:40 2026 -0700 restore the hg.conf switches to control the gcOnFly track - lost in later edits diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index b948062dd5c..e45f2a611e7 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -7455,38 +7455,63 @@ addWikiTrack(&trackList); struct sqlConnection *conn = wikiConnect(); if (sqlTableExists(conn, "variome")) addVariomeWikiTrack(&trackList); wikiDisconnect(&conn); } struct grp *grpList = NULL; if (cartOptionalString(cart, "hgt.trackNameFilter") == NULL) { // If a single track was asked for and it is from a hub, then it is already in trackList loadTrackHubs(&trackList, &grpList); } /* gcOnFly track: if a trackDb entry exists (native or hub, possibly * with a hub_#_ prefix on the table name), patch in on-the-fly * computation methods so data comes from genome sequence, not a file. + * hg.conf switches: + * gcOnTheFly=on - master switch, track is removed if off (default on) + * gcOnTheFlyCoExist=on - allow gcOnFly alongside gc5Base/gc5BaseBw + * (default off: remove gcOnFly if either exists) * This must run after loadTrackHubs so assembly hub tracks are present. */ { -struct track *t; -for (t = trackList; t != NULL; t = t->next) +boolean gcOnTheFlyEnabled = cfgOptionBooleanDefault("gcOnTheFly", TRUE); +boolean gcCoExist = cfgOptionBooleanDefault("gcOnTheFlyCoExist", FALSE); +struct track *t, *prev = NULL, *next; +for (t = trackList; t != NULL; t = next) { + next = t->next; if (sameString(GC_ON_FLY_TRACK_NAME, trackHubSkipHubName(t->table))) + { + boolean remove = FALSE; + if (!gcOnTheFlyEnabled) + remove = TRUE; + else if (!gcCoExist && + (rFindTrackWithTable("gc5Base", trackList) != NULL || + rFindTrackWithTable("gc5BaseBw", trackList) != NULL)) + remove = TRUE; + if (remove) + { + if (prev == NULL) + trackList = next; + else + prev->next = next; + continue; + } gc5BaseOnTheFlyMethods(t, cart); } + prev = t; + } } loadCustomTracks(&trackList); makeDupeTracks(&trackList); groupTracks( &trackList, pGroupList, grpList, vis); setSearchedTrackToPackOrFull(trackList); char *rtsLoad = cgiOptionalString( "rtsLoad"); if (rtsLoad) // load a recommended track set using the merge method { // store session name and user char *otherUserName = cartOptionalString(cart, hgsOtherUserName); char *otherUserSessionName = rtsLoad; // Hide all tracks except custom tracks struct hash *excludeHash = newHash(2); hashStore(excludeHash, "user");