Skip to content

Commit b40e0f1

Browse files
authored
Update ArrayList usage for Zig 0.15.1. (#49)
The previous style of an ArrayList with an allocator field has been deprecated.
1 parent 7715c4b commit b40e0f1

File tree

4 files changed

+33
-31
lines changed

4 files changed

+33
-31
lines changed

src/androidbuild/BuildTools.zig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ pub const empty: BuildTools = .{
2020

2121
const BuildToolError = Allocator.Error || error{BuildToolFailed};
2222

23-
pub fn init(b: *std.Build, android_sdk_path: []const u8, build_tools_version: []const u8, errors: *std.ArrayList([]const u8)) BuildToolError!BuildTools {
23+
pub fn init(b: *std.Build, android_sdk_path: []const u8, build_tools_version: []const u8, errors: *std.ArrayListUnmanaged([]const u8)) BuildToolError!BuildTools {
2424
const prev_errors_len = errors.items.len;
2525

2626
// Get build tools path
@@ -38,14 +38,14 @@ pub fn init(b: *std.Build, android_sdk_path: []const u8, build_tools_version: []
3838
const message = b.fmt("Android Build Tool version '{s}' not found. Install it via 'sdkmanager' or Android Studio.", .{
3939
build_tools_version,
4040
});
41-
errors.append(message) catch @panic("OOM");
41+
errors.append(b.allocator, message) catch @panic("OOM");
4242
},
4343
else => {
4444
const message = b.fmt("Android Build Tool version '{s}' had unexpected error: {s}", .{
4545
build_tools_version,
4646
@errorName(err),
4747
});
48-
errors.append(message) catch @panic("OOM");
48+
errors.append(b.allocator, message) catch @panic("OOM");
4949
},
5050
};
5151
if (errors.items.len != prev_errors_len) {

src/androidbuild/Ndk.zig

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ pub const empty: Ndk = .{
2828

2929
const NdkError = Allocator.Error || error{NdkFailed};
3030

31-
pub fn init(b: *std.Build, android_sdk_path: []const u8, ndk_version: []const u8, errors: *std.ArrayList([]const u8)) NdkError!Ndk {
31+
pub fn init(b: *std.Build, android_sdk_path: []const u8, ndk_version: []const u8, errors: *std.ArrayListUnmanaged([]const u8)) NdkError!Ndk {
3232
// Get NDK path
3333
// ie. $ANDROID_HOME/ndk/27.0.12077973
3434
const android_ndk_path = b.fmt("{s}/ndk/{s}", .{ android_sdk_path, ndk_version });
@@ -39,7 +39,7 @@ pub fn init(b: *std.Build, android_sdk_path: []const u8, ndk_version: []const u8
3939
const message = b.fmt("Android NDK version '{s}' not found. Install it via 'sdkmanager' or Android Studio.", .{
4040
ndk_version,
4141
});
42-
try errors.append(message);
42+
try errors.append(b.allocator, message);
4343
break :blk false;
4444
},
4545
else => {
@@ -48,7 +48,7 @@ pub fn init(b: *std.Build, android_sdk_path: []const u8, ndk_version: []const u8
4848
@errorName(err),
4949
android_ndk_path,
5050
});
51-
try errors.append(message);
51+
try errors.append(b.allocator, message);
5252
break :blk false;
5353
},
5454
};
@@ -82,7 +82,7 @@ pub fn init(b: *std.Build, android_sdk_path: []const u8, ndk_version: []const u8
8282
ndk_version,
8383
ndk_sysroot,
8484
});
85-
try errors.append(message);
85+
try errors.append(b.allocator, message);
8686
break :blk false;
8787
},
8888
else => {
@@ -91,7 +91,7 @@ pub fn init(b: *std.Build, android_sdk_path: []const u8, ndk_version: []const u8
9191
@errorName(err),
9292
ndk_sysroot,
9393
});
94-
try errors.append(message);
94+
try errors.append(b.allocator, message);
9595
break :blk false;
9696
},
9797
};
@@ -111,7 +111,7 @@ pub fn init(b: *std.Build, android_sdk_path: []const u8, ndk_version: []const u8
111111
return ndk;
112112
}
113113

114-
pub fn validateApiLevel(ndk: *const Ndk, b: *std.Build, api_level: ApiLevel, errors: *std.ArrayList([]const u8)) void {
114+
pub fn validateApiLevel(ndk: *const Ndk, b: *std.Build, api_level: ApiLevel, errors: *std.ArrayListUnmanaged([]const u8)) void {
115115
if (ndk.android_sdk_path.len == 0 or ndk.sysroot_path.len == 0) {
116116
@panic("Should not call validateApiLevel if NDK path is not set");
117117
}
@@ -128,7 +128,7 @@ pub fn validateApiLevel(ndk: *const Ndk, b: *std.Build, api_level: ApiLevel, err
128128
@intFromEnum(api_level),
129129
ndk_sysroot_target_api_version,
130130
});
131-
errors.append(message) catch @panic("OOM");
131+
errors.append(b.allocator, message) catch @panic("OOM");
132132
break :blk false;
133133
},
134134
else => {
@@ -138,7 +138,7 @@ pub fn validateApiLevel(ndk: *const Ndk, b: *std.Build, api_level: ApiLevel, err
138138
@errorName(err),
139139
ndk_sysroot_target_api_version,
140140
});
141-
errors.append(message) catch @panic("OOM");
141+
errors.append(b.allocator, message) catch @panic("OOM");
142142
break :blk false;
143143
},
144144
};
@@ -160,7 +160,7 @@ pub fn validateApiLevel(ndk: *const Ndk, b: *std.Build, api_level: ApiLevel, err
160160
@intFromEnum(api_level),
161161
root_jar,
162162
});
163-
errors.append(message) catch @panic("OOM");
163+
errors.append(b.allocator, message) catch @panic("OOM");
164164
break :blk false;
165165
},
166166
else => {
@@ -169,7 +169,7 @@ pub fn validateApiLevel(ndk: *const Ndk, b: *std.Build, api_level: ApiLevel, err
169169
@errorName(err),
170170
root_jar,
171171
});
172-
errors.append(message) catch @panic("OOM");
172+
errors.append(b.allocator, message) catch @panic("OOM");
173173
break :blk false;
174174
},
175175
};

src/androidbuild/apk.zig

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ pub const Options = struct {
6060
pub fn create(sdk: *Sdk, options: Options) *Apk {
6161
const b = sdk.b;
6262

63-
var errors = std.ArrayList([]const u8).init(b.allocator);
64-
defer errors.deinit();
63+
var errors = std.ArrayListUnmanaged([]const u8).empty;
64+
defer errors.deinit(b.allocator);
6565

6666
const build_tools = BuildTools.init(b, sdk.android_sdk_path, options.build_tools_version, &errors) catch |err| switch (err) {
6767
error.BuildToolFailed => BuildTools.empty, // fallthruogh and print all errors below
@@ -213,35 +213,37 @@ fn doInstallApk(apk: *Apk) std.mem.Allocator.Error!*Step.InstallFile {
213213

214214
// validate
215215
{
216-
var errors = std.ArrayList([]const u8).init(b.allocator);
216+
var errors = std.ArrayListUnmanaged([]const u8).empty;
217+
defer errors.deinit(b.allocator);
218+
217219
if (key_store.password.len == 0) {
218-
try errors.append("Keystore not configured with password, must be setup with setKeyStore");
220+
try errors.append(b.allocator, "Keystore not configured with password, must be setup with setKeyStore");
219221
}
220222
if (apk.android_manifest == null) {
221-
try errors.append("AndroidManifest.xml not configured, must be set with setAndroidManifest");
223+
try errors.append(b.allocator, "AndroidManifest.xml not configured, must be set with setAndroidManifest");
222224
}
223225
if (apk.artifacts.items.len == 0) {
224-
try errors.append("Must add at least one artifact targeting a valid Android CPU architecture: aarch64, x86_64, x86, etc");
226+
try errors.append(b.allocator, "Must add at least one artifact targeting a valid Android CPU architecture: aarch64, x86_64, x86, etc");
225227
} else {
226228
for (apk.artifacts.items, 0..) |artifact, i| {
227229
if (artifact.kind == .exe) {
228-
try errors.append(b.fmt("artifact[{}]: must make Android artifacts be created with addSharedLibrary, not addExecutable", .{i}));
230+
try errors.append(b.allocator, b.fmt("artifact[{}]: must make Android artifacts be created with addSharedLibrary, not addExecutable", .{i}));
229231
} else {
230232
if (artifact.linkage) |linkage| {
231233
if (linkage != .dynamic) {
232-
try errors.append(b.fmt("artifact[{}]: invalid linkage, expected it to be created via addSharedLibrary", .{i}));
234+
try errors.append(b.allocator, b.fmt("artifact[{}]: invalid linkage, expected it to be created via addSharedLibrary", .{i}));
233235
}
234236
} else {
235-
try errors.append(b.fmt("artifact[{}]: unable to get linkage from artifact, expected it to be created via addSharedLibrary", .{i}));
237+
try errors.append(b.allocator, b.fmt("artifact[{}]: unable to get linkage from artifact, expected it to be created via addSharedLibrary", .{i}));
236238
}
237239
}
238240
if (artifact.root_module.resolved_target) |target| {
239241
if (!target.result.abi.isAndroid()) {
240-
try errors.append(b.fmt("artifact[{}]: must be targetting Android abi", .{i}));
242+
try errors.append(b.allocator, b.fmt("artifact[{}]: must be targetting Android abi", .{i}));
241243
continue;
242244
}
243245
} else {
244-
try errors.append(b.fmt("artifact[{}]: unable to get resolved target from artifact", .{i}));
246+
try errors.append(b.allocator, b.fmt("artifact[{}]: unable to get resolved target from artifact", .{i}));
245247
}
246248
}
247249
}

src/androidbuild/tools.zig

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,18 +84,18 @@ pub fn create(b: *std.Build, options: Options) *Sdk {
8484
const jdk_path = path_search.findJDK(b.allocator) catch @panic("OOM");
8585

8686
// Validate
87-
var errors = std.ArrayList([]const u8).init(b.allocator);
88-
defer errors.deinit();
87+
var errors = std.ArrayListUnmanaged([]const u8).empty;
88+
defer errors.deinit(b.allocator);
8989

9090
if (jdk_path.len == 0) {
91-
errors.append(
91+
errors.append(b.allocator,
9292
\\JDK not found.
9393
\\- Download it from https://www.oracle.com/th/java/technologies/downloads/
9494
\\- Then configure your JDK_HOME environment variable to where you've installed it.
9595
) catch @panic("OOM");
9696
}
9797
if (android_sdk_path.len == 0) {
98-
errors.append(
98+
errors.append(b.allocator,
9999
\\Android SDK not found.
100100
\\- Download it from https://developer.android.com/studio
101101
\\- Then configure your ANDROID_HOME environment variable to where you've installed it."
@@ -120,14 +120,14 @@ pub fn create(b: *std.Build, options: Options) *Sdk {
120120
cmdline_tools,
121121
tools,
122122
});
123-
errors.append(message) catch @panic("OOM");
123+
errors.append(b.allocator, message) catch @panic("OOM");
124124
},
125125
else => {
126126
const message = b.fmt("Android Command Line Tools path had unexpected error: {s} ({s})", .{
127127
@errorName(toolerr),
128128
tools,
129129
});
130-
errors.append(message) catch @panic("OOM");
130+
errors.append(b.allocator, message) catch @panic("OOM");
131131
},
132132
};
133133
},
@@ -136,7 +136,7 @@ pub fn create(b: *std.Build, options: Options) *Sdk {
136136
@errorName(cmderr),
137137
cmdline_tools,
138138
});
139-
errors.append(message) catch @panic("OOM");
139+
errors.append(b.allocator, message) catch @panic("OOM");
140140
},
141141
};
142142
break :cmdlineblk cmdline_tools;

0 commit comments

Comments
 (0)