a5855ded640de30881d63cf3255399cc3c8e4238
hiram
  Sat Dec 20 12:44:18 2025 -0800
fixup empty lav result for axt output per Michael Hiller

diff --git src/hg/utils/automation/blastz-run-ucsc src/hg/utils/automation/blastz-run-ucsc
index 74fc78ddf24..b19673e83a3 100755
--- src/hg/utils/automation/blastz-run-ucsc
+++ src/hg/utils/automation/blastz-run-ucsc
@@ -651,43 +651,51 @@
 my $littleOut = "$TMP/little.lav";
 my $littleConv = "$TMP/little.conv";
 
 # Run blastz on each {target, query} pair;  lift and collect results.
 foreach my $tSpec (@tFileSpecs) {
   my ($tSeq, $tLocal) = ("", "");
   my $axtResult = 0;
   if ($tSpec =~ m/.2bit$/) {
      $tLocal = $tSpec;   # use .2bit file when it exists
      $axtResult = 1;     # lastz can only output axt when using 2bit[multiple]
   } else {
      ($tSeq, $tLocal) = &unpackForBlastz($tSpec, $seq1Dir, 't');
   }
   foreach my $qSpec (@qFileSpecs) {
     my ($qSeq, $qLocal) = ("", "");
+    my $answer = 1;  # flag: Will be set to 0 by plainBlastz() in case
+                     # it doesn't run blastz and creates an emtpy lav file
     if ($qSpec =~ m/.2bit$/) {
       $qLocal = $qSpec;
     } else {
       ($qSeq, $qLocal) = &unpackForBlastz($qSpec, $seq2Dir, 'q');
     }
     if ($defVars{'BLASTZ_ABRIDGE_REPEATS'}) {
       &abridgeLinSpecReps($tLocal, $qLocal, $blastzOptions, $littleRaw);
     } else {
-      &plainBlastz($tLocal, $qLocal, $blastzOptions, $littleRaw);
+      $answer = &plainBlastz($tLocal, $qLocal, $blastzOptions, $littleRaw);
     }
     # there may be no lifting involved when axtResult TBD XXX
     if ($axtResult) {
+      # in case axtResult is set and plainBlastz() created an empty lav,
+      # convert this to an empty axt. Otherwise axtToPsl below crashes
+      if ($answer) {
         &run("$cpCmd -p $littleRaw $littleOut");
+      } else {
+        &convertOutput($littleRaw, $littleOut);
+      }
     } else {
       if ($collapsed) {
         # Lift target side only:
         &liftLav($littleRaw, $littleOut, $tSeq, undef);
       } else {
         &liftLav($littleRaw, $littleOut, $tSeq, $qSeq);
         if ($qLocal =~ /^$TMP/) {
             $qLocal =~ s/\[.*\]$//;
             &run("$rmCmd $qLocal");
         }
       }
     }
     if ($opt_outFormat) {
       if ($axtResult) {
         if ($opt_outFormat eq 'axt') {