Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
597967b
chore: squash all commits on top of 3.35.7
eseidel Nov 14, 2025
a1d5163
chore: run et format
eseidel Nov 14, 2025
b2ca1fb
fix: update name to application_library_paths
eseidel Nov 15, 2025
940a610
fix: attempt to fix builds
eseidel Nov 15, 2025
3bfd2e2
chore: add missing header for ios
eseidel Nov 17, 2025
f74be9f
fix: linux android build
eseidel Nov 17, 2025
67c9ecd
fix: attempt to fix shorebird flutter_tools changes
eseidel Nov 17, 2025
6cef8a2
feat: make it possible to load two patches into the runtime at once (…
eseidel Dec 12, 2025
cbfde6d
feat: shorebird flutter should work without setting FLUTTER_STORAGE_B…
eseidel Dec 12, 2025
2b3dde5
chore: move build_engine scripts into this repo (#98)
eseidel Dec 12, 2025
6472b9e
chore: update to use new CreateGroupIsolate API (#99)
eseidel Dec 16, 2025
b8251d1
bump updater rev
bryanoltman Dec 19, 2025
be7c0f7
fix: crash after patching on iOS
eseidel Dec 31, 2025
cf0ea2b
fix: revert to using Shorebird_SetBaseSnapshots to stop iOS crashers
eseidel Jan 6, 2026
bfb3c99
chore: fix linux
eseidel Jan 9, 2026
742d0a3
feat: add support for patch_verification_mode (#100)
eseidel Jan 11, 2026
db53a5a
chore: roll updater to 8691c8f60e69f8eb1f35361f4a22e8c9a7fdf93c to in…
eseidel Jan 11, 2026
ee041cd
fix: use of FlutterEngineGroup breaks patching (#101)
eseidel Jan 23, 2026
7602177
chore: add a C++ interface onto the updater (#102)
eseidel Jan 23, 2026
550f16b
fix: start/success reporting (#103)
eseidel Jan 31, 2026
0142f7e
fix: only call shorebird_report_start once (#105)
eseidel Feb 3, 2026
ec91878
feat: show logs when running shorebird_tests (#106)
eseidel Feb 3, 2026
f603301
perf: speed up shorebird_tests with template project and Gradle cache…
eseidel Feb 3, 2026
a086528
fix: throw on copy failure in _copyTemplateProject (#109)
eseidel Feb 3, 2026
f5d0ed8
chore: split CI into parallel jobs (#110)
eseidel Feb 3, 2026
257a23b
feat: add sharded CI build runner (#111)
eseidel Feb 4, 2026
fd8657f
fix: add Rust build steps to each shard that needs libupdater (#112)
eseidel Feb 4, 2026
995eaa6
fix: remove duplicate --help flag in finalize.dart
eseidel Feb 4, 2026
37f15d3
fix: resolve .cmd executables on Windows for gsutil/gcloud
eseidel Feb 5, 2026
7b22762
style: format process.dart
eseidel Feb 5, 2026
0d08e2c
fix: remove Rust steps from iOS simulator shards
eseidel Feb 5, 2026
e29e64f
fix: restore Rust for x64 iOS simulator shards
eseidel Feb 5, 2026
ee182e3
fix: update NDK path for unmodified Android SDK CIPD package
bdero Feb 11, 2026
3b15100
fix: format shard_runner config.dart
bdero Feb 25, 2026
875632a
fix: format shard_runner config.dart for stable SDK formatter
bdero Mar 12, 2026
0bcc085
fix: Update iOS dSYM filename in artifact manifest (#113)
eseidel Mar 13, 2026
4b762a5
fix: filter non-stable version branches in shorebird version detectio…
bdero Mar 27, 2026
7906e68
Integrate Rust updater build into GN/Ninja (#120)
bdero Apr 1, 2026
6cb2520
fix: thread Apple deployment target into Rust updater build (#123)
eseidel Apr 8, 2026
dde4eac
fix: put cargo target dir inside the GN build output dir (#124)
eseidel Apr 8, 2026
42b0e6b
fix: force static CRT for cc-compiled C deps on Windows (#125)
eseidel Apr 8, 2026
ce852a1
fix: remove legacy pre-GN cargo preamble from CI build scripts (#127)
eseidel Apr 8, 2026
ddb03aa
fix: declare libupdater.a as an output of build_rust_updater action (…
eseidel Apr 8, 2026
609b316
fix: gate shorebird_updater_supported on having a known rust target (…
eseidel Apr 8, 2026
00b2a9b
ci: upload patch-darwin-arm64.zip alongside x64 (#129)
bdero Apr 9, 2026
e2339fd
Add --trace flag to flutter build apk for build profiling (#116)
eseidel Apr 20, 2026
cd8c0c9
feat: add verbose logging to shorebird_tests for CI debugging (#107)
eseidel Apr 23, 2026
cba2d9a
refactor: split shorebird C API consumption (engine side of updater #…
eseidel May 4, 2026
2bc4650
ci: add aggregator job for branch protection (#139)
eseidel May 6, 2026
9666cba
fix: honor --flavor for ios-framework builds (#141)
eseidel May 7, 2026
12acc77
chore: bump Updater to 90c349287d17
bdero May 7, 2026
32bc89b
fix: update build_rust_updater cbindgen inputs after #350 API split (…
bdero May 7, 2026
13c7d1a
fix: drop stale shorebird_check_for_update/shorebird_update from Wind…
bdero May 7, 2026
7e195ff
ci(shorebird): drop iOS Rust targets from macOS android shard (#143)
eseidel May 8, 2026
2f10b81
ci(shorebird): stream child stdout/stderr from shard_runner (#144)
eseidel May 8, 2026
efaa7a9
ci(shorebird): remove shard_runner package; now lives in _build_engin…
eseidel May 8, 2026
5627d92
ci(shorebird): add dst + artifacts to compose.json; mac framework art…
eseidel May 8, 2026
1980910
ci(shorebird): add shell steps for engine_stamp.json + aot-tools.dill…
eseidel May 8, 2026
4f1a8bb
ci(shorebird): drop --offline from aot-tools pub get (#148)
eseidel May 8, 2026
9ec90c4
Revert "ci(shorebird): drop --offline from aot-tools pub get" (#148) …
eseidel May 8, 2026
3c26ef9
ci(shorebird): rename macos-framework dst to framework.zip (#150)
eseidel May 8, 2026
4aaa111
ci(shorebird): use framework.zip as macos-framework src (xcframework,…
eseidel May 8, 2026
56b3b04
shorebird/ci: drop iOS extension-safe shards from the engine build (#…
eseidel May 13, 2026
01e85a4
feat: add 2-pass release build for Dynamic Dispatch table (#119)
bdero May 14, 2026
a6ad18a
chore: bump updater_rev to fe37333 for inflate diagnostic counters
bdero May 14, 2026
c36f88e
debug: log per-blob sizes from SnapshotsDataHandle::createForSnapshots
bdero May 14, 2026
ee4044b
debug: log per-mapping sizes from SetBaseSnapshot
bdero May 14, 2026
417ef3c
engine: align Seek return value with io::Seek contract + add per-blob…
bdero May 15, 2026
6c58a65
ci(shards): split windows/host into host-release and host-debug (#153)
eseidel May 15, 2026
ce5c299
fix(android): demote libapp.so.sym/dbg check to warning (Part 1 of 3.…
bdero May 12, 2026
305c060
fix(macos): skip DD 2-pass on macOS until per-arch support lands
bdero May 20, 2026
2921463
shorebird: consume our published Dart SDK on mac-arm64 (skip rebuildi…
eseidel Jun 5, 2026
72f06d5
Reconcile flutter_tools tests with upstream 3.44.1 (#157)
eseidel Jun 5, 2026
2250e15
fix: restore --no-prebuilt-dart-sdk on mac-arm64 dart_sdk step
bdero Jun 5, 2026
697aca8
Bump flutter_flavorizr to published 2.5.0 (fix flavor APK build) (#158)
eseidel Jun 5, 2026
d27c969
chore: reset DEPS for 3.47.0-rc0 (dart-sdk 046fbc2 offsets-regen, upd…
nickshorebird Jul 23, 2026
1fdc321
chore(dry-run): disable unused mac-arm64 dart-sdk prebuilt hook (404 …
nickshorebird Jul 23, 2026
ae9bc6e
fix: feed the updater one snapshot instead of two
nickshorebird Aug 10, 2026
7b98251
chore: point DEPS at the published 3.47 dart-sdk prebuilt
nickshorebird Aug 10, 2026
682fba9
fix: restore 13 dependency pins reverted by a bad rebase
nickshorebird Aug 10, 2026
7a54d5d
fix: load one snapshot pair in the patch cache
nickshorebird Aug 10, 2026
85942c7
fix: load the patch snapshot on iOS
nickshorebird Aug 11, 2026
f988ad8
fix(shorebird): report a failed patch load instead of silently runnin…
nickshorebird Aug 11, 2026
58f8f40
chore: bump dart_sdk_revision to 7a2e23f
nickshorebird Aug 13, 2026
e8b68fb
chore: bump dart_sdk_revision to 5aa1bc5 and its mac-arm64 prebuilt pins
nickshorebird Aug 14, 2026
4506b5e
test: cover createForSnapshots blob count and order
nickshorebird Aug 17, 2026
a50914d
chore: bump dart_sdk_revision to 140dd36 and its mac-arm64 prebuilt pins
nickshorebird Aug 17, 2026
6efff40
test: reconcile flutter_tools test expectations with upstream 3.47.0
nickshorebird Aug 18, 2026
28000c9
fix: match both symlink forms of system temp in the filesystem guard
nickshorebird Aug 18, 2026
54fcea5
fix: resolve symlinks on the checked path in the filesystem guard
nickshorebird Aug 18, 2026
278f105
chore: bump dart_sdk_revision to 460d9f8 and its mac-arm64 prebuilt pins
nickshorebird Aug 21, 2026
315ff24
chore: bump dart_sdk_revision to 52183de and its mac-arm64 prebuilt pins
nickshorebird Aug 28, 2026
e16cf74
chore: bump engine to 315ff24
nickshorebird Aug 28, 2026
e137e18
Extend --shorebird-trace to aar, ios-framework, and desktop builds (#…
eseidel Sep 11, 2026
042c82d
Trace `flutter build ios-framework` with --shorebird-trace
eseidel Sep 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: ci

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
pull_request:
push:
branches:
- main

jobs:
test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]

runs-on: ${{ matrix.os }}

name: 🧪 Test

env:
FLUTTER_STORAGE_BASE_URL: https://download.shorebird.dev

steps:
- name: 📚 Git Checkout
uses: actions/checkout@v4
with:
# Fetch all branches and tags to ensure that Flutter can determine its version
fetch-depth: 0

- name: 🎯 Setup Dart
uses: dart-lang/setup-dart@v1

- name: 📦 Install Dependencies
run: |
dart pub get -C ./dev/bots
dart pub get -C ./dev/tools

- name: 🧪 Run Tests
run: dart ./dev/bots/test.dart
130 changes: 130 additions & 0 deletions .github/workflows/shorebird_ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
name: shorebird_ci

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
pull_request:
push:
branches:
- shorebird/dev

jobs:
# NOTE: Windows is not included because shorebird_tests depends on
# flutter_flavorizr which requires Xcode. Additionally, flutter_tools
# tests on Windows would need additional setup work.

flutter-tools-tests:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]

runs-on: ${{ matrix.os }}

name: 🛠️ Flutter Tools Tests (${{ matrix.os }})

steps:
- name: 📚 Git Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: 🎯 Setup Dart
uses: dart-lang/setup-dart@v1

- name: 🐦 Run Flutter Tools Tests
run: ../../bin/flutter test test/general.shard
working-directory: packages/flutter_tools

shorebird-android-tests:
# Android tests run on Ubuntu (faster runners, no macOS needed)
runs-on: ubuntu-latest

name: 🤖 Shorebird Android Tests

steps:
- name: 📚 Git Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: 🎯 Setup Dart
uses: dart-lang/setup-dart@v1

- uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "17"

- name: 📦 Cache Gradle
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-

- name: 🤖 Run Android Tests
run: dart test test/base_test.dart test/android_test.dart
working-directory: packages/shorebird_tests

shorebird-ios-tests:
# iOS tests require macOS for Xcode
runs-on: macos-latest

name: 🍎 Shorebird iOS + Android Smoke Tests

steps:
- name: 📚 Git Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: 🎯 Setup Dart
uses: dart-lang/setup-dart@v1

- uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "17"

- name: 📦 Cache Gradle
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-

- name: 🍎 Run iOS Tests
run: dart test test/base_test.dart test/ios_test.dart
working-directory: packages/shorebird_tests

- name: 🤖 Run Android Smoke Test (macOS)
# Quick sanity check that Android builds work on macOS too
run: dart test test/android_test.dart --name "can build an apk"
working-directory: packages/shorebird_tests
env:
# Enables streaming subprocess output for debugging timeouts.
VERBOSE: "1"

# Aggregator required by branch protection on shorebird/dev so the rule can
# list a single context ("ci") instead of every matrix-expanded job above.
ci:
if: always()
needs:
- flutter-tools-tests
- shorebird-android-tests
- shorebird-ios-tests
runs-on: ubuntu-latest
steps:
- if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
run: |
echo "One or more upstream jobs failed or were cancelled."
exit 1
30 changes: 25 additions & 5 deletions DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ vars = {
'llvm_git': 'https://llvm.googlesource.com',
'dart_ai_rev': '9c96bfe5f091c9451eff5b59c9bffeb2e806b875',
'skia_revision': '8df24be66531469e576a806749a0202ae26b8d08',
"dart_sdk_revision": "52183de0b928f738a4d9083ba64a9ba218a629ac",
"dart_sdk_git": "git@github.com:shorebirdtech/dart-sdk.git",
"updater_git": "https://github.com/shorebirdtech/updater.git",
"updater_rev": "1f85c4ab1ee5b540269b9859c75e1bffbb9050c7",

# Do not download the Emscripten SDK by default.
# This prevents us from downloading the Emscripten toolchain for builds
Expand Down Expand Up @@ -286,7 +290,7 @@ deps = {
Var('dart_git') + '/ai.git' + '@' + Var('dart_ai_rev'),

'engine/src/flutter/third_party/dart':
Var('dart_git') + '/sdk.git' + '@' + Var('dart_revision'),
Var('dart_sdk_git') + '@' + Var('dart_sdk_revision'),

# WARNING: Unused Dart dependencies in the list below till "WARNING:" marker are removed automatically - see create_updated_flutter_deps.py.

Expand Down Expand Up @@ -392,14 +396,27 @@ deps = {
'dep_type': 'cipd',
'condition': 'host_os == "mac" and download_dart_sdk'
},
# Consume Shorebird's own published Dart SDK (built from
# shorebirdtech/dart-sdk) from GCS instead of Google's CIPD prebuilt, so
# the engine builds against our Dart fork and skips rebuilding it from
# source (see shards/macos.json: mac-arm64 drops --no-prebuilt-dart-sdk).
# The object is keyed by Var('dart_sdk_revision') so it tracks the same
# fork revision as the source clone above; sha256sum/size_bytes pin the
# specific artifact's content and must be updated whenever that revision
# bumps. tar.gz (not zip) so gclient's extraction preserves the executable
# bit on bin/dart etc. The bot reads this private bucket via a keyless-WIF
# reader SA (shorebirdtech/_build_engine sync.yaml).
'engine/src/flutter/prebuilts/macos-arm64/dart-sdk': {
'packages': [
'bucket': 'shorebird-dart-sdk-prebuilt',
'objects': [
{
'package': 'flutter/dart-sdk/mac-arm64',
'version': 'git_revision:'+Var('dart_revision')
'object_name': Var('dart_sdk_revision') + '/dart-sdk-darwin-arm64.tar.gz',
'sha256sum': '2bdd969b03d792b84e62be5a498c8220224ae2811e6ab0e1bbf5f848e2b4d2ee',
'size_bytes': 215233237,
'generation': 1787929282076125,
}
],
'dep_type': 'cipd',
'dep_type': 'gcs',
'condition': 'host_os == "mac" and download_dart_sdk'
},
'engine/src/flutter/prebuilts/windows-x64/dart-sdk': {
Expand Down Expand Up @@ -477,6 +494,9 @@ deps = {
'engine/src/flutter/third_party/ocmock':
Var('flutter_git') + '/third_party/ocmock' + '@' + Var('ocmock_rev'),

'engine/src/flutter/third_party/updater':
Var('updater_git') + '@' + Var('updater_rev'),

'engine/src/flutter/third_party/libjpeg-turbo/src':
Var('flutter_git') + '/third_party/libjpeg-turbo' + '@' + '0fb821f3b2e570b2783a94ccd9a2fb1f4916ae9f',

Expand Down
2 changes: 1 addition & 1 deletion bin/internal/engine.version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
a804b261645ef8c13eb3d5c44a5c2fb0340c5539
315ff242617023c1c5549878bf17fad51ffec6f3
2 changes: 1 addition & 1 deletion bin/internal/update_dart_sdk.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ if ((Test-Path $engineStamp) -and ($engineVersion -eq (Get-Content $engineStamp)

$dartSdkBaseUrl = $Env:FLUTTER_STORAGE_BASE_URL
if (-not $dartSdkBaseUrl) {
$dartSdkBaseUrl = "https://storage.googleapis.com"
$dartSdkBaseUrl = "https://download.shorebird.dev"
}
if ($engineRealm) {
$dartSdkBaseUrl = "$dartSdkBaseUrl/$engineRealm"
Expand Down
2 changes: 1 addition & 1 deletion bin/internal/update_dart_sdk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ if [ ! -f "$ENGINE_STAMP" ] || [ "$ENGINE_VERSION" != "$(< "$ENGINE_STAMP")" ];
FIND=find
fi

DART_SDK_BASE_URL="${FLUTTER_STORAGE_BASE_URL:-https://storage.googleapis.com}${ENGINE_REALM:+/$ENGINE_REALM}"
DART_SDK_BASE_URL="${FLUTTER_STORAGE_BASE_URL:-https://download.shorebird.dev}${ENGINE_REALM:+/$ENGINE_REALM}"
DART_SDK_URL="$DART_SDK_BASE_URL/flutter_infra_release/flutter/$ENGINE_VERSION/$DART_ZIP_NAME"

# if the sdk path exists, copy it to a temporary location
Expand Down
2 changes: 1 addition & 1 deletion dev/bots/post_process_docs.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Future<void> postProcess() async {
await runProcessWithValidations(<String>[
'curl',
'-L',
'https://storage.googleapis.com/flutter_infra_release/flutter/$revision/api_docs.zip',
'https://download.shorebird.dev/flutter_infra_release/flutter/$revision/api_docs.zip',
'--output',
zipDestination,
'--fail',
Expand Down
2 changes: 1 addition & 1 deletion dev/bots/unpublish_package.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import 'prepare_package/transactional_update.dart';
const String gsBase = 'gs://flutter_infra_release';
const String releaseFolder = '/releases';
const String gsReleaseFolder = '$gsBase$releaseFolder';
const String baseUrl = 'https://storage.googleapis.com/flutter_infra_release';
const String baseUrl = 'https://download.shorebird.dev/flutter_infra_release';

/// Exception class for when a process fails to run, so we can catch
/// it and provide something more readable than a stack trace.
Expand Down
65 changes: 56 additions & 9 deletions dev/devicelab/lib/framework/fs_safety.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,62 @@ bool _isDangerousDirectory(String dirPath) {
return false;
}

/// [entityPath] with symlinks resolved.
///
/// Paths are routinely checked before they exist, and `resolveSymbolicLinksSync`
/// throws on a missing path, so this resolves the nearest existing ancestor and
/// re-appends the rest. Returns null when no ancestor resolves.
String? _resolveExistingPrefix(String entityPath) {
final List<String> tail = <String>[];
String current = entityPath;
while (true) {
try {
final String resolved = io.Directory(current).resolveSymbolicLinksSync();
return path.canonicalize(
tail.isEmpty ? resolved : path.joinAll(<String>[resolved, ...tail.reversed]),
);
} on io.FileSystemException {
final String parent = path.dirname(current);
if (parent == current) {
return null;
}
tail.add(path.basename(current));
current = parent;
}
}
}

bool _isAllowedPath(String entityPath) {
final String canonicalEntity = path.canonicalize(entityPath);

// Allow system temp
String canonicalTemp;
// Allow system temp. Callers reach temp by either name: `Directory.systemTemp`
// reports macOS's /var/folders/... while anything that resolves the path first
// yields /private/var/folders/.... `path.canonicalize` does not touch symlinks,
// so matching only one form rejects the other.
final List<String> canonicalTemps;
final io.IOOverrides? currentOverrides = io.IOOverrides.current;
if (currentOverrides is FSGuardIOOverrides) {
canonicalTemp = currentOverrides._canonicalSystemTemp;
canonicalTemps = currentOverrides._canonicalSystemTemps;
} else {
canonicalTemp = path.canonicalize(io.Directory.systemTemp.path);
canonicalTemps = <String>[path.canonicalize(io.Directory.systemTemp.path)];
}

if (path.isWithin(canonicalTemp, canonicalEntity) || canonicalEntity == canonicalTemp) {
return true;
for (final String canonicalTemp in canonicalTemps) {
if (path.isWithin(canonicalTemp, canonicalEntity) || canonicalEntity == canonicalTemp) {
return true;
}
}

// A symlink anywhere in the path, not just the macOS /var -> /private/var
// head, leaves the two sides spelled differently. Resolving costs I/O, so it
// runs only on paths the string comparison above already rejected.
final String? resolvedEntity = _resolveExistingPrefix(canonicalEntity);
if (resolvedEntity != null) {
for (final String canonicalTemp in canonicalTemps) {
if (path.isWithin(canonicalTemp, resolvedEntity) || resolvedEntity == canonicalTemp) {
return true;
}
}
}

// Allow modifications inside the Flutter installation root itself
Expand Down Expand Up @@ -573,15 +615,20 @@ final class FSGuardIOOverrides extends io.IOOverrides {

final io.IOOverrides? _parent;

late final String _canonicalSystemTemp = () {
late final List<String> _canonicalSystemTemps = () {
final io.Directory rawTemp = _parent != null
? _parent.getSystemTempDirectory()
: super.getSystemTempDirectory();
final String rawCanonical = path.canonicalize(rawTemp.path);
try {
return path.canonicalize(rawTemp.resolveSymbolicLinksSync());
final String resolved = path.canonicalize(rawTemp.resolveSymbolicLinksSync());
if (resolved != rawCanonical) {
return <String>[rawCanonical, resolved];
}
} on Object catch (_) {
return path.canonicalize(rawTemp.path);
// Temp is unreadable; the unresolved form is the best available answer.
}
return <String>[rawCanonical];
}();

@override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
def flutterStorageUrl = System.getenv("FLUTTER_STORAGE_BASE_URL") ?: "https://storage.googleapis.com"
def flutterStorageUrl = System.getenv("FLUTTER_STORAGE_BASE_URL") ?: "https://download.shorebird.dev"
maven {
url = uri("$flutterStorageUrl/download.flutter.io")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
val flutterStorageUrl = System.getenv("FLUTTER_STORAGE_BASE_URL") ?: "https://storage.googleapis.com"
val flutterStorageUrl = System.getenv("FLUTTER_STORAGE_BASE_URL") ?: "https://download.shorebird.dev"
maven("$flutterStorageUrl/download.flutter.io")
}
}
Expand Down
4 changes: 2 additions & 2 deletions dev/tools/create_api_docs.dart
Original file line number Diff line number Diff line change
Expand Up @@ -923,8 +923,8 @@ class PlatformDocGenerator {

for (final String platform in kPlatformDocs.keys) {
final String zipFile = kPlatformDocs[platform]!.zipName;
final url =
'https://storage.googleapis.com/${realm}flutter_infra_release/flutter/$engineRevision/$zipFile';
final String url =
'https://download.shorebird.dev/${realm}flutter_infra_release/flutter/$engineRevision/$zipFile';
await _extractDocs(url, platform, kPlatformDocs[platform]!, outputDir);
}
}
Expand Down
Loading
Loading