forked from Nexus/nexus
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
46474fbae6 |
|||
|
32fd54fd78 |
4 changed files with 34 additions and 17 deletions
|
|
@ -28,11 +28,7 @@ Future<void> main(List<String> args) => build(args, (input, output) async {
|
|||
final iosConfig = codeConfig.iOS;
|
||||
iosSdk = iosConfig.targetSdk;
|
||||
final minVersion = iosConfig.targetVersion;
|
||||
iosSdkPath = (await Process.run("xcrun", [
|
||||
"--sdk",
|
||||
iosSdk.type,
|
||||
"--show-sdk-path",
|
||||
])).stdout.toString().trim();
|
||||
iosSdkPath = await getXCodeSDK(sdkType: iosSdk.type);
|
||||
final archTriple = switch (targetArch) {
|
||||
Architecture.arm64 => "arm64",
|
||||
Architecture.x64 => "x86_64",
|
||||
|
|
@ -45,12 +41,7 @@ Future<void> main(List<String> args) => build(args, (input, output) async {
|
|||
: "$archTriple-apple-ios$minVersion.0";
|
||||
extraEnv = {
|
||||
"GOOS": "ios",
|
||||
"CC": (await Process.run("xcrun", [
|
||||
"--sdk",
|
||||
iosSdk.type,
|
||||
"-f",
|
||||
"clang",
|
||||
])).stdout.toString().trim(),
|
||||
"CC": await getXCodeClang(sdkType: iosSdk.type),
|
||||
"CGO_CFLAGS": "-isysroot $iosSdkPath -target $iosTargetTriple",
|
||||
"CGO_LDFLAGS": "-isysroot $iosSdkPath -target $iosTargetTriple",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -336,7 +336,7 @@
|
|||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
|
||||
shellScript = "export PATH=\"$PROJECT_DIR/scripts:$PATH\"\n/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
|
||||
};
|
||||
9740EEB61CF901F6004384FC /* Run Script */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
|
|
@ -351,7 +351,7 @@
|
|||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
||||
shellScript = "export PATH=\"$PROJECT_DIR/scripts:$PATH\"\n/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
||||
};
|
||||
EE82EC529EB6C0F1FA480659 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
|
|
|
|||
15
ios/scripts/lipo
Executable file
15
ios/scripts/lipo
Executable file
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/sh
|
||||
# Workaround for NixOS/nixpkgs#405066: frameworks copied from the Nix store
|
||||
# stay read-only, so lipo can't write its temporary output file when Flutter
|
||||
# thins them during the build. Make the framework writable before delegating
|
||||
# to the real lipo.
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
*/*.framework/*)
|
||||
fw_dir="${arg%.framework/*}.framework"
|
||||
chmod -R +w "$fw_dir" 2>/dev/null
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
exec /usr/bin/lipo "$@"
|
||||
|
|
@ -1,11 +1,22 @@
|
|||
import "dart:io";
|
||||
|
||||
Future<String> getXCodeSDK() async {
|
||||
final result = await Process.run("xcrun", ["--show-sdk-path"]);
|
||||
Future<String> _runXcrun(List<String> args, String errorContext) async {
|
||||
final result = await Process.run("xcrun", args);
|
||||
|
||||
if (result.exitCode != 0) {
|
||||
throw Exception("Failed to get XCode SDK\n${result.stderr}");
|
||||
throw Exception("Failed to $errorContext\n${result.stderr}");
|
||||
}
|
||||
|
||||
return result.stdout.trim();
|
||||
return result.stdout.toString().trim();
|
||||
}
|
||||
|
||||
Future<String> getXCodeSDK({String? sdkType}) => _runXcrun([
|
||||
if (sdkType != null) ...["--sdk", sdkType],
|
||||
"--show-sdk-path",
|
||||
], "get XCode SDK");
|
||||
|
||||
Future<String> getXCodeClang({String? sdkType}) => _runXcrun([
|
||||
if (sdkType != null) ...["--sdk", sdkType],
|
||||
"-f",
|
||||
"clang",
|
||||
], "get XCode clang");
|
||||
|
|
|
|||
Loading…
Reference in a new issue