ma1 pushed to branch maint-13.5 at The Tor Project / Applications / tor-browser-build

Commits:

1 changed file:

Changes:

  • tools/relprep.py
    ... ... @@ -12,6 +12,7 @@ import sys
    12 12
     import xml.etree.ElementTree as ET
    
    13 13
     
    
    14 14
     from git import Repo
    
    15
    +from git.exc import GitCommandError
    
    15 16
     import requests
    
    16 17
     import ruamel.yaml
    
    17 18
     
    
    ... ... @@ -155,8 +156,11 @@ class ReleasePreparation:
    155 156
                     break
    
    156 157
             if remote is None:
    
    157 158
                 raise RuntimeError("Cannot find the tpo/applications remote.")
    
    158
    -        remote.fetch()
    
    159
    -        remote.fetch(tags=True)
    
    159
    +        try:
    
    160
    +            remote.fetch()
    
    161
    +            remote.fetch(tags=True)
    
    162
    +        except GitCommandError:
    
    163
    +            logger.warning(f"Cannot fetch tags from {rem.url}, skipping.")
    
    160 164
     
    
    161 165
             branch_name = (
    
    162 166
                 "main" if self.version.is_alpha else f"maint-{self.version.major}"
    
    ... ... @@ -314,59 +318,50 @@ class ReleasePreparation:
    314 318
             logger.info("Updating addons")
    
    315 319
             config = self.load_config("browser")
    
    316 320
     
    
    317
    -        logger.debug("Updating NoScript")
    
    318
    -        self.update_addon_amo(
    
    321
    +        self.update_addon_tpo(
    
    319 322
                 config, "noscript", "{73a6fe31-595d-460b-a920-fcc0f8843232}"
    
    320 323
             )
    
    321
    -        if self.mullvad_browser:
    
    322
    -            logger.debug("Updating uBlock Origin")
    
    323
    -            self.update_addon_amo(
    
    324
    -                config, "ublock-origin", "uBlock0@raymondhill.net"
    
    325
    -            )
    
    326
    -            logger.debug("Updating the Mullvad Browser extension")
    
    327
    -            self.update_mullvad_addon(config)
    
    328 324
     
    
    329 325
             self.save_config("browser", config)
    
    330 326
     
    
    331
    -    def update_addon_amo(self, config, name, addon_id):
    
    332
    -        r = requests.get(
    
    333
    -            f"https://services.addons.mozilla.org/api/v4/addons/addon/{addon_id}"
    
    334
    -        )
    
    335
    -        r.raise_for_status()
    
    336
    -        amo_data = r.json()
    
    337
    -        addon = amo_data["current_version"]["files"][0]
    
    338
    -        assert addon["hash"].startswith("sha256:")
    
    339
    -        addon_input = self.find_input(config, name)
    
    340
    -        addon_input["URL"] = addon["url"]
    
    341
    -        addon_input["sha256sum"] = addon["hash"][7:]
    
    342
    -
    
    343
    -    def update_mullvad_addon(self, config):
    
    344
    -        input_ = self.find_input(config, "mullvad-extension")
    
    345
    -        r = requests.get(
    
    346
    -            "https://cdn.mullvad.net/browser-extension/updates.json"
    
    327
    +    def update_addon_tpo(self, config, name, addon_id):
    
    328
    +        channel = "pre" if self.version.is_alpha else "stable"
    
    329
    +        self.update_addon_any(
    
    330
    +            config,
    
    331
    +            name,
    
    332
    +            addon_id,
    
    333
    +            f"https://dist.torproject.org/torbrowser/{name}/update-{channel}.json",
    
    347 334
             )
    
    348
    -        r.raise_for_status()
    
    349 335
     
    
    336
    +    def update_addon_any(self, config, name, addon_id, updates_url):
    
    337
    +        logger.debug("Checking updates for addon %s", name)
    
    338
    +        r = requests.get(updates_url)
    
    339
    +        r.raise_for_status()
    
    350 340
             data = r.json()
    
    351
    -        updates = data["addons"]["{d19a89b9-76c1-4a61-bcd4-49e8de916403}"][
    
    352
    -            "updates"
    
    353
    -        ]
    
    354
    -        url = updates[-1]["update_link"]
    
    341
    +        input_ = self.find_input(config, name)
    
    342
    +        if "current_version" in data:
    
    343
    +            # AMO matadata
    
    344
    +            addon = data["current_version"]["files"][0]
    
    345
    +            assert addon["hash"].startswith("sha256:")
    
    346
    +            input_["URL"] = addon["url"]
    
    347
    +            input_["sha256sum"] = addon["hash"][7:]
    
    348
    +            return
    
    349
    +        # self-hosted standalone updates.json
    
    350
    +        url = data["addons"][addon_id]["updates"][-1]["update_link"]
    
    355 351
             if input_["URL"] == url:
    
    356
    -            logger.debug("No need to update the Mullvad extension.")
    
    352
    +            logger.debug("No need to update the %s extension.", name)
    
    357 353
                 return
    
    358 354
             input_["URL"] = url
    
    359
    -
    
    360 355
             path = self.base_path / "out/browser" / url.split("/")[-1]
    
    361 356
             # The extension should be small enough to easily fit in memory :)
    
    362
    -        if not path.exists:
    
    357
    +        if not path.exists():
    
    363 358
                 r = requests.get(url)
    
    364 359
                 r.raise_for_status()
    
    365 360
                 with path.open("wb") as f:
    
    366
    -                f.write(r.bytes)
    
    361
    +                f.write(r.content)
    
    367 362
             with path.open("rb") as f:
    
    368 363
                 input_["sha256sum"] = sha256(f.read()).hexdigest()
    
    369
    -        logger.debug("Mullvad extension downloaded and updated")
    
    364
    +        logger.debug("%s extension downloaded and updated.", name)
    
    370 365
     
    
    371 366
         def update_tor(self):
    
    372 367
             logger.info("Updating Tor")