2cf4774648ff468f2c26ddab4a2b1c24294f40ee
hiram
  Mon Aug 3 16:27:49 2026 -0700
and symLink out the archive/ncbiGene to the hgdownload staging refs #37958

diff --git src/hg/makeDb/doc/asmHubs/mkSymLinks.pl src/hg/makeDb/doc/asmHubs/mkSymLinks.pl
index e8e9e080f28..604760b05ea 100755
--- src/hg/makeDb/doc/asmHubs/mkSymLinks.pl
+++ src/hg/makeDb/doc/asmHubs/mkSymLinks.pl
@@ -137,30 +137,31 @@
   `rm -f "${destDir}/${accessionId}_assembly_report.txt"`;
   `rm -f "${destDir}/${accessionId}.rmsk.customLib.fa.gz"`;
   `rm -f "${destDir}/${accessionId}.repeatMasker.out.gz"`;
   `rm -f "${destDir}/${accessionId}.repeatMasker.version.txt"`;
   `rm -f "${destDir}/${accessionId}.repeatModeler.version.txt"`;
   `rm -f "${destDir}/${accessionId}.repeatModeler.families.fa.gz"`;
   `rm -f "${destDir}/${accessionId}.repeatModeler.families.stk.gz"`;
   `rm -f "${destDir}/${accessionId}.repeatModeler.out.gz"`;
   `rm -f "${destDir}/${accessionId}.repeatModeler.2bit"`;
   `rm -f "${destDir}/${accessionId}.rmod.log.txt"`;
   `rm -f "${destDir}/${accessionId}.userTrackDb.txt"`;
   `rm -f "${gbdbDir}/${accessionId}.userTrackDb.txt"`;
   `rm -f "${destDir}/trackDb.txt"`;
   `rm -f "${destDir}/genomes.txt"`;
   `rm -f "${destDir}/download.genomes.txt"`;
+  `rm -f "${destDir}/archive/ncbiGene"`;
   `rm -f "${destDir}/hub.txt"`;
   `rm -f "${gbdbDir}/hub.txt"`;
   foreach my $hubTxt (@stageHub) {
     `rm -f "${destDir}/$hubTxt.hub.txt"`;
     `rm -f "${gbdbDir}/$hubTxt.hub.txt"`;
   }
   # it used to be standard practice to have a different hub.txt on genome-test
   #   vs. the hub.txt on hgdownload.  They evolved into being identical, but
   #   there may be a case in the future where this function may be required.
   #   Also, the sendDownload script expects to use this download.hub.txt file.
   `rm -f "${destDir}/download.hub.txt"`;
   `rm -f "${destDir}/groups.txt"`;
   `rm -f "${gbdbDir}/groups.txt"`;
    if (-d "${buildDir}/bbi") {
      `ln -s "${buildDir}/bbi" "${destDir}/bbi"`;
@@ -235,36 +236,38 @@
      `ln -s "${buildDir}/${asmId}.chromAlias.bb" "${gbdbDir}/${accessionId}.chromAlias.bb"`;
    }
    `ln -s "${buildDir}/${asmId}.rmsk.customLib.fa.gz" "${destDir}/${accessionId}.rmsk.customLib.fa.gz"` if (-s "${buildDir}/${asmId}.rmsk.customLib.fa.gz");
   `ln -s "${buildDir}/${asmId}.repeatMasker.out.gz" "${destDir}/${accessionId}.repeatMasker.out.gz"` if (-s "${buildDir}/${asmId}.repeatMasker.out.gz");
   `ln -s "${buildDir}/${asmId}.repeatModeler.out.gz" "${destDir}/${accessionId}.repeatModeler.out.gz"` if (-s "${buildDir}/${asmId}.repeatModeler.out.gz");
   `ln -s "${buildDir}/${asmId}.repeatMasker.version.txt" "${destDir}/${accessionId}.repeatMasker.version.txt"` if (-s "${buildDir}/${asmId}.repeatMasker.version.txt");
   `ln -s "${buildDir}/${asmId}.repeatModeler.version.txt" "${destDir}/${accessionId}.repeatModeler.version.txt"` if (-s "${buildDir}/${asmId}.repeatModeler.version.txt");
   `ln -s "${buildDir}/${asmId}.repeatModeler.families.fa.gz" "${destDir}/${accessionId}.repeatModeler.families.fa.gz"` if (-s "${buildDir}/${asmId}.repeatModeler.families.fa.gz");
   `ln -s "${buildDir}/${asmId}.repeatModeler.families.stk.gz" "${destDir}/${accessionId}.repeatModeler.families.stk.gz"` if (-s "${buildDir}/${asmId}.repeatModeler.families.stk.gz");
   `ln -s "${buildDir}/${asmId}.repeatModeler.2bit" "${destDir}/${accessionId}.repeatModeler.2bit"` if (-s "${buildDir}/${asmId}.repeatModeler.2bit");
   `ln -s "${buildDir}/${asmId}.rmod.log.txt" "${destDir}/${accessionId}.rmod.log.txt"` if (-s "${buildDir}/${asmId}.rmod.log.txt");
   `ln -s "${buildDir}/download/${asmId}_assembly_report.txt" "${destDir}/${accessionId}_assembly_report.txt"` if (-s "${buildDir}/download/${asmId}_assembly_report.txt");
    if (-d "${buildDir}/trackData/ncbiGene/archive") {
       `mkdir -p "${buildDir}/archive"`;
       `mkdir -p "${buildDir}/archive/ncbiGene"`;
+      `mkdir -p "${destDir}/archive"`;
       foreach my $subDir (grep { -d } glob("${buildDir}/trackData/ncbiGene/archive/20*")) {
         $subDir =~ s#${buildDir}/##;
         my $archiveDate = basename(${subDir});
         `rm -f "${buildDir}/archive/ncbiGene/${archiveDate}"`;
         `ln -s "../../${subDir}" "${buildDir}/archive/ncbiGene/"`;
       }
+      `ln -s "${buildDir}/archive/ncbiGene" "${destDir}/archive/ncbiGene"`;
    }
   # trackDb.txt still needed for use by top-level genomes.txt file
   `ln -s "${buildDir}/${asmId}.trackDb.txt" "${destDir}/trackDb.txt"` if (-s "${buildDir}/${asmId}.trackDb.txt");
   # genomes.txt obsolete now with single file
 #   `ln -s "${buildDir}/${asmId}.genomes.txt" "${destDir}/genomes.txt"` if (-s "${buildDir}/${asmId}.genomes.txt");
   `ln -s "${buildDir}/${asmId}.download.genomes.txt" "${destDir}/download.genomes.txt"` if (-s "${buildDir}/${asmId}.download.genomes.txt");
    foreach my $hubTxt (@stageHub) {
      if (-s "${buildDir}/${hubTxt}.hub.txt") {
        `ln -s "${buildDir}/${hubTxt}.hub.txt" "${destDir}/${hubTxt}.hub.txt"`;
        `ln -s "${buildDir}/${hubTxt}.hub.txt" "${gbdbDir}/${hubTxt}.hub.txt"`;
      }
    }
    if (-s "${buildDir}/${asmId}.singleFile.hub.txt") {
     `ln -s "${buildDir}/${asmId}.singleFile.hub.txt" "${destDir}/hub.txt"`;
     `ln -s "${buildDir}/${asmId}.singleFile.hub.txt" "${gbdbDir}/hub.txt"`;