The reports of Thunderbird's death have been greatly exaggerated.

Manually Verify Updates

Occasionally the Update Verify jobs fail, and it might be useful to test the process yourself.

Requirements

  • A machine to run the update on. In CI this happens on Linux
  • Python (2.7 is still in use)
  • A copy of "compare-directories.py" from a M-C checkout.
    • M-C:tools/update-verify/release/compare-directories.py
  • Starting version package on the test machine (Linux)
    • thunderbird-68.0b4.tar.bz2
  • Starting version package for the target platform:
    • Thunderbird 68.0b4.dmg for macOS
    • Thunderbird Setup 68.0b4.exe for windows
    • thunderbird-68.0b4.tar.bz2 for linux
  • Destination version package for the target platform:
    • Thunderbird 69.0b1.dmg for macOS
    • Thunderbird Setup 68.0b1.exe for windows
    • thunderbird-69.0b1.tar.bz2 for linux
  • A mar file to test for the Destination version on the target platform
    • thunderbird-69.0b1.complete.mar

Make sure that all of these packages are for the same locale.

Unpack

  • Unpack the test machine package. If you're on Linux it will unpack into a directory named "thunderbird"
    • tar xvf thunderbird-68.0b4.tar.bz2
  • Create start and destination directories
    • mkdir start destination
  • Unpack the Start version inro start, Destination version in destination
    • ( cd start; 7z x "../Thunderbird 68.0b4.dmg" )
    • ( cd destination; 7z x "../Thunderbird 69.0b1.dmg" )
  • macOSX only Mangling

    • ( cd start mv "Thunderbird/Thunderbird.app" . rm -rf Thunderbird cp Thunderbird.app/Contents/Resources/{update-settings.ini,precomplete} Thunderbird.app/ )

    • ( cd destination mv "Thunderbird/Thunderbird.app" . rm -rf Thunderbird )

Run updater

  • Make sure you are in the top of your directory structure, you should see three directories: thunderbird, start, destination, and your downloaded files.
  • Set some variables
    • updater=$(realpath thunderbird/updater)
    • update=$(realpath thunderbird/update)
  • Copy mar file into update directory
    • cp thunderbird-69.0b1.complete.mar "$update/update.mar"
  • Run update program
    • pushd start/Thunderbird.app
    • Yes,. run it just like this. It's sort of a silly program to run from the commandline.
    • `"$updater" "$update" $(pwd) $(pwd) 0``
    • popd
  • View log file. Look for errors.
    • less "${update}/update.log"
  • macOSX only Undo Mangling
    • rm -f start/Thunderbird.app/{update-settings.ini,precomplete}

Compare Start to Destination

  • Run compare-directories.py
    • python compare-directories.py --verbose start/Thunderbird.app destination/Thunderbird.app beta-localtest
  • You will get output indicating anything that is different.
Comparing start/Thunderbird.app with destination/Thunderbird.app...
Files only in start/Thunderbird.app:
  Contents/Library/Spotlight/thunderbird.mdimporter/Contents/_CodeSignature/._CodeResources

Analysis

In the macOS UV example here, we find that there is an extraneous file left behind during the update process due to a code signing bug in a previous version. In this case the updater needs to be told to look for and remove that extra file if it exists which should fix this issue.