From 72dff226e1f6f809ff2d55906b20ff18a8040e7a Mon Sep 17 00:00:00 2001 From: Andrew Gunnerson Date: Thu, 20 Aug 2026 13:26:33 -0400 Subject: [PATCH] Update dependencies Signed-off-by: Andrew Gunnerson --- gradle/libs.versions.toml | 2 +- gradle/update_verification.py | 91 +++++++++++++++++------- gradle/verification-metadata.xml | 18 ++--- gradle/wrapper/gradle-wrapper.properties | 4 +- rcbridge/go.mod | 6 +- rcbridge/go.sum | 16 ++--- 6 files changed, 86 insertions(+), 51 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 181d0a0..c4e63b7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,7 @@ jgit = "7.7.1.202607240634-r" junit = "1.3.0" kotlin = "2.4.10" material = "1.14.0" -spotbugs = "4.10.3" +spotbugs = "4.10.4" tink-android = "1.23.0" [libraries] diff --git a/gradle/update_verification.py b/gradle/update_verification.py index 3ef8bf1..2dbbe11 100755 --- a/gradle/update_verification.py +++ b/gradle/update_verification.py @@ -1,8 +1,10 @@ #!/usr/bin/env python3 -# SPDX-FileCopyrightText: 2023-2024 Andrew Gunnerson +# SPDX-FileCopyrightText: 2023-2026 Andrew Gunnerson # SPDX-License-Identifier: GPL-3.0-only +from collections.abc import Callable, Iterable +import dataclasses import hashlib import io import os @@ -12,12 +14,14 @@ import urllib.request import xml.etree.ElementTree as ET - GOOGLE_MAVEN_REPO = 'https://dl.google.com/android/maven2' -def add_source_exclusions(ns, root): +def add_source_exclusions(ns: str, root: ET.Element): configuration = root.find(f'{{{ns}}}configuration') + if configuration is None: + raise ValueError(' tag not found') + trusted_artifacts = ET.SubElement( configuration, f'{{{ns}}}trusted-artifacts') @@ -32,29 +36,54 @@ def add_source_exclusions(ns, root): }) -def add_missing_aapt2_platforms(ns, root): - components = root.find(f'{{{ns}}}components') - aapt2 = components.find(f'{{{ns}}}component[@name="aapt2"]') +@dataclasses.dataclass +class ArtifactInfo: + group: str + name: str + version: str - for platform in ['linux', 'osx', 'windows']: - group = aapt2.attrib['group'] - name = aapt2.attrib['name'] - version = aapt2.attrib['version'] - filename = f'{name}-{version}-{platform}.jar' - if aapt2.find(f'{{{ns}}}artifact[@name="{filename}"]') is not None: - continue +@dataclasses.dataclass +class ArtifactAssets: + repo: str + files: list[str] + - path = f'{group.replace(".", "/")}/{name}/{version}/{filename}' - url = f'{GOOGLE_MAVEN_REPO}/{path}' +def add_missing_components( + ns: str, + root: ET.Element, + name: str, + assets_for: Callable[[ArtifactInfo], ArtifactAssets], +): + components = root.find(f'{{{ns}}}components') + if components is None: + raise ValueError(' tag not found') + + component = components.find(f'{{{ns}}}component[@name="{name}"]') + if component is None: + raise ValueError(f' tag not found') + + info = ArtifactInfo( + group=component.attrib['group'], + name=component.attrib['name'], + version=component.attrib['version'], + ) + assets = assets_for(info) + + for filename in assets.files: + if component.find(f'{{{ns}}}artifact[@name="{filename}"]') is not None: + continue - with urllib.request.urlopen(url) as r: - if r.status != 200: - raise Exception(f'{url} returned HTTP {r.status}') + path = f'{info.group.replace(".", "/")}/{name}/{info.version}/{filename}' + url = f'{assets.repo}/{path}' - digest = hashlib.file_digest(r, 'sha512') + try: + with urllib.request.urlopen(url) as r: + digest = hashlib.file_digest(r, 'sha512') + except urllib.request.HTTPError as e: + raise Exception(f'Failed to download: {e.url}') from e - artifact = ET.SubElement(aapt2, f'{{{ns}}}artifact', + artifact = ET.SubElement(component, f'{{{ns}}}artifact', attrib={'name': filename}) ET.SubElement(artifact, f'{{{ns}}}sha512', attrib={ @@ -62,10 +91,24 @@ def add_missing_aapt2_platforms(ns, root): 'origin': 'Generated by Gradle', }) - aapt2[:] = sorted(aapt2, key=lambda child: child.attrib['name']) + component[:] = sorted(component, key=lambda child: child.attrib['name']) + + +def add_missing_aapt2_platforms(ns: str, root: ET.Element): + platforms = ['linux', 'osx', 'windows'] + + add_missing_components( + ns, + root, + 'aapt2', + lambda info: ArtifactAssets( + repo=GOOGLE_MAVEN_REPO, + files=[f'{info.name}-{info.version}-{p}.jar' for p in platforms], + ), + ) -def patch_xml(path): +def patch_xml(path: str | os.PathLike[str]): tree = ET.parse(path) root = tree.getroot() @@ -75,8 +118,8 @@ def patch_xml(path): # Add exclusions to allow Android Studio to download sources. add_source_exclusions(ns, root) - # Gradle only adds the aapt2 entry for the host OS. We have to manually add - # the checksums for the other major desktop OSs. + # Gradle only adds entries for the host OS. We have to manually add the + # checksums for the other major desktop OSs. add_missing_aapt2_platforms(ns, root) # Match gradle's formatting exactly. diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index ccc93dd..eaa3ee5 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -1771,12 +1771,12 @@ - - - + + + - - + + @@ -3819,14 +3819,6 @@ - - - - - - - - diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 84c5a9c..760c459 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=84fbba45c7f4c64abc77460e1c00f541e9f960e3c7ed2538f1ede19eacd873ae -distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.0-bin.zip +distributionSha256Sum=acd53f1edaf02f1a8ff99879f8a34b302661a057d9b063ae9e35b552f804d20a +distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip networkTimeout=10000 retries=0 retryBackOffMs=500 diff --git a/rcbridge/go.mod b/rcbridge/go.mod index 2740c1b..11fb4a0 100644 --- a/rcbridge/go.mod +++ b/rcbridge/go.mod @@ -4,7 +4,7 @@ go 1.25.0 require ( github.com/rclone/rclone v1.75.0 - golang.org/x/mobile v0.0.0-20260730202154-c700fe717e6e + golang.org/x/mobile v0.0.0-20260820023541-8e8303b9da6c ) // https://github.com/chenxiaolong/RSAF/issues/268 @@ -206,13 +206,13 @@ require ( go.yaml.in/yaml/v2 v2.4.4 // indirect golang.org/x/crypto v0.54.0 // indirect golang.org/x/exp v0.0.0-20260709172345-9ea1abe57597 // indirect - golang.org/x/image v0.44.0 // indirect + golang.org/x/image v0.45.0 // indirect golang.org/x/net v0.57.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.47.0 // indirect golang.org/x/term v0.45.0 // indirect - golang.org/x/text v0.40.0 // indirect + golang.org/x/text v0.41.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/api v0.279.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260715232425-e75dac1f907d // indirect diff --git a/rcbridge/go.sum b/rcbridge/go.sum index 415f1ac..7207684 100644 --- a/rcbridge/go.sum +++ b/rcbridge/go.sum @@ -545,10 +545,10 @@ golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= golang.org/x/exp v0.0.0-20260709172345-9ea1abe57597 h1:qLvzZeaANDgyVOA8pyHCOStGlXn0rseXma+GQjeuv2g= golang.org/x/exp v0.0.0-20260709172345-9ea1abe57597/go.mod h1:EdfpwwqSu+0Li0mzskwHU6FWDV3t9Q+RZDo3QMUtL3Q= -golang.org/x/image v0.44.0 h1:+tDekMZED9+LrtB3G5xzRggpVh9CARjZqROla3R3R+I= -golang.org/x/image v0.44.0/go.mod h1:V8K3KE9KKKE+pLpQDOeN18w9oacNSvy1tDOirTu4xtY= -golang.org/x/mobile v0.0.0-20260730202154-c700fe717e6e h1:v5PGTbI7uer7FhpDeGryGytfbI8t7CDWkKukozvIsNU= -golang.org/x/mobile v0.0.0-20260730202154-c700fe717e6e/go.mod h1:YX+n47s+53POxN3dx9cIGxG3hGUm/lD64hvrRJFbcSA= +golang.org/x/image v0.45.0 h1:FMb1nTbH5H9vF55SriQHgFw5GnNL9Jg6L25BwXKzhB0= +golang.org/x/image v0.45.0/go.mod h1:n62x/7RqlwXDvGsSU4u6IUTUf6KghUZ9Bt7cG/T9Fx4= +golang.org/x/mobile v0.0.0-20260820023541-8e8303b9da6c h1:7EniRn2M+iJ4/2OQ/WpcHY8t5Ntv4aa1qzjh0h9FZ5A= +golang.org/x/mobile v0.0.0-20260820023541-8e8303b9da6c/go.mod h1:jMwjxoDSx9jqhNaZqPnr6nnKzb7cs+Dy1Czk7wdX+R8= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -616,8 +616,8 @@ golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= -golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= +golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8= +golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -627,8 +627,8 @@ golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.48.0 h1:3+hClM1aLL5mjMKm5ovokw9epgRXPuu2tILgismM6RE= -golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk= +golang.org/x/tools v0.49.0 h1:3NI7VXzL9+1WZD52Dx2ttoPwD5DWrFGpl9mFZDlmisI= +golang.org/x/tools v0.49.0/go.mod h1:SJNXV9DBKT0UbdttsQjbfJlAE/q+y36++zo3uL3N0Oo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=