88f4f3286f2b21c8fb65b3502adbbc2e7eaf60f1
max
  Fri Jul 10 06:14:13 2026 -0700
Automate GitHub source-archive upload with submodules, refs #37741

makeZip.csh now also builds jksrc.vNN.tar.gz next to the zip (both from the
recurse-submodules clone, so both include the htslib submodule). doZip.csh
hardlinks these to kent.src.zip / kent.src.tar.gz and uploads them to the
GitHub release (creating it if needed). This works around git-archive omitting
submodule contents, which is why GitHub's own auto-generated source archives are
not buildable. autoBuild.sh now runs release-markdown before the zip step so the
release doZip creates carries the real notes.

diff --git src/utils/qa/weeklybld/autoBuild.sh src/utils/qa/weeklybld/autoBuild.sh
index 491dc7928b0..e411127b385 100755
--- src/utils/qa/weeklybld/autoBuild.sh
+++ src/utils/qa/weeklybld/autoBuild.sh
@@ -832,41 +832,46 @@
     return 0
 }
 
 do_wrapup() {
     log "========== PHASE: WRAP-UP =========="
     read_buildenv
     PHASE_VER=$BRANCHNN
 
     log "Running wrap-up for v${BRANCHNN}"
     state_init wrapup "$PHASE_VER"
 
     step hgcentral-sql    wrapup_hgcentral_sql
     step userapps-utils   wrapup_userapps_utils
     step tag-beta         wrapup_tag_beta
     step tag-release      wrapup_tag_release
+    # release-markdown must run before zip: doZip.csh attaches the curated
+    # markdown notes to the GitHub release it creates, so they must exist first.
+    step release-markdown wrapup_release_markdown
     step zip              wrapup_zip
     step userapps-src     wrapup_userapps_src
     step docker-release   wrapup_docker_release
     step refresh-containers wrapup_refresh_containers
-    step release-markdown wrapup_release_markdown
 
     log "Wrap-up complete for v${BRANCHNN}."
     log "Manual steps remaining:"
     log "  - Push to genome browser store: sudo /cluster/bin/scripts/gbib_gbic_push"
-    log "  - Create GitHub release at https://github.com/ucscGenomeBrowser/kent/releases/new"
-    log "    Release notes: $WEEKLYBLD/markdownReleaseNotes/v${BRANCHNN}_markdown.txt"
+    log "  - Verify the GitHub release doZip.csh created (with submodule-complete"
+    log "    source archives attached): https://github.com/ucscGenomeBrowser/kent/releases"
+    log "    Edit its notes if needed; source: $WEEKLYBLD/markdownReleaseNotes/v${BRANCHNN}_markdown.txt"
+    log "    Note: GitHub's own auto-generated 'Source code' zip/tar.gz omit submodules;"
+    log "    users should download the attached kent.src.zip / kent.src.tar.gz instead."
     log "  - Wait 1 day for nightly rsync, then verify hgdownload: https://hgdownload.soe.ucsc.edu/admin/exe/"
     log "  - Send mirror announcement email to genome-mirror@soe.ucsc.edu"
 }
 
 ##############################################################################
 # Main
 ##############################################################################
 
 main() {
     # Parse arguments
     while [[ $# -gt 0 ]]; do
         case "$1" in
             --dry-run)
                 DRY_RUN=true
                 log "DRY RUN MODE - no changes will be made"