Skip to content

Commit 9d3cd18

Browse files
committed
Only output one plist
1 parent 1ab9a83 commit 9d3cd18

File tree

1 file changed

+33
-39
lines changed

1 file changed

+33
-39
lines changed

xcodeproj/internal/custom_toolchain.bzl

Lines changed: 33 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,75 @@
11
def _custom_toolchain_impl(ctx):
22
toolchain_dir = ctx.actions.declare_directory(ctx.attr.toolchain_name + ".xctoolchain")
3-
toolchain_info_plist_file = ctx.actions.declare_file(ctx.attr.toolchain_name + "_ToolchainInfo.plist")
4-
info_plist_file = ctx.actions.declare_file(ctx.attr.toolchain_name + "_Info.plist")
3+
toolchain_plist_file = ctx.actions.declare_file(ctx.attr.toolchain_name + "_ToolchainInfo.plist")
54

65
default_toolchain_path = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain"
6+
user_toolchain_path = "$(eval echo ~)/Library/Developer/Toolchains/{}.xctoolchain".format(ctx.attr.toolchain_name)
77

8-
# Generate symlink creation commands dynamically, excluding ToolchainInfo.plist
8+
# Generate symlink creation commands dynamically, excluding plist files
99
symlink_script = """#!/bin/bash
1010
set -e
1111
1212
mkdir -p "{toolchain_dir}"
1313
1414
find "{default_toolchain}" -type f -o -type l | while read file; do
1515
rel_path="${{file#"{default_toolchain}/"}}"
16-
if [[ "$rel_path" != "ToolchainInfo.plist" && "$rel_path" != "Info.plist" ]]; then
16+
if [[ "$rel_path" != "ToolchainInfo.plist" ]]; then
1717
mkdir -p "{toolchain_dir}/$(dirname "$rel_path")"
1818
ln -s "$file" "{toolchain_dir}/$rel_path"
1919
fi
2020
done
2121
2222
mkdir -p "{toolchain_dir}"
23-
mv "{toolchain_info_plist}" "{toolchain_dir}/ToolchainInfo.plist"
24-
mv "{info_plist}" "{toolchain_dir}/Info.plist"
23+
mv "{toolchain_plist}" "{toolchain_dir}/ToolchainInfo.plist"
24+
25+
# Remove existing symlink if present and create a new one in the user directory
26+
if [ -e "{user_toolchain_path}" ]; then
27+
rm -f "{user_toolchain_path}"
28+
fi
29+
ln -s "{toolchain_dir}" "{user_toolchain_path}"
2530
""".format(
2631
toolchain_dir=toolchain_dir.path,
2732
default_toolchain=default_toolchain_path,
28-
toolchain_info_plist=toolchain_info_plist_file.path,
29-
info_plist=info_plist_file.path
33+
toolchain_plist=toolchain_plist_file.path,
34+
user_toolchain_path=user_toolchain_path
3035
)
3136

3237
script_file = ctx.actions.declare_file(ctx.attr.toolchain_name + "_setup.sh")
3338
ctx.actions.write(output=script_file, content=symlink_script, is_executable=True)
3439

35-
# Generate ToolchainInfo.plist separately
36-
toolchain_info_plist_content = """<?xml version="1.0" encoding="UTF-8"?>
40+
# Generate ToolchainInfo.plist
41+
toolchain_plist_content = """<?xml version="1.0" encoding="UTF-8"?>
3742
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3843
<plist version="1.0">
39-
<dict>
40-
<key>Identifier</key>
44+
<dict>
45+
<key>Aliases</key>
46+
<array>
47+
<string>{name}</string>
48+
</array>
49+
<key>CFBundleIdentifier</key>
4150
<string>com.example.{name}</string>
51+
<key>CompatibilityVersion</key>
52+
<integer>2</integer>
53+
<key>CompatibilityVersionDisplayString</key>
54+
<string>Xcode 13.0</string>
4255
<key>DisplayName</key>
4356
<string>{name}</string>
44-
<key>CompatibilityVersion</key>
45-
<string>9999</string>
46-
</dict>
47-
</plist>
48-
""".format(name=ctx.attr.toolchain_name)
49-
50-
ctx.actions.write(output=toolchain_info_plist_file, content=toolchain_info_plist_content)
51-
52-
# Generate Info.plist
53-
info_plist_content = """<?xml version="1.0" encoding="UTF-8"?>
54-
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
55-
<plist version="1.0">
56-
<dict>
57-
<key>CFBundleIdentifier</key>
58-
<string>com.example.{name}</string>
59-
<key>CFBundleName</key>
57+
<key>ReportProblemURL</key>
58+
<string>https://github.com/MobileNativeFoundation/rules_xcodeproj</string>
59+
<key>ShortDisplayName</key>
6060
<string>{name}</string>
61-
<key>CFBundleVersion</key>
62-
<string>1.0</string>
63-
<key>DTSDKName</key>
64-
<string>macosx</string>
65-
<key>DTSDKBuild</key>
66-
<string>9999</string>
67-
<key>DTCompiler</key>
68-
<string>com.apple.compilers.llvm.clang.1_0</string>
69-
</dict>
61+
<key>Version</key>
62+
<string>0.0.1</string>
63+
</dict>
7064
</plist>
7165
""".format(name=ctx.attr.toolchain_name)
7266

73-
ctx.actions.write(output=info_plist_file, content=info_plist_content)
67+
ctx.actions.write(output=toolchain_plist_file, content=toolchain_plist_content)
7468

7569
# Run the generated shell script
7670
ctx.actions.run_shell(
7771
outputs=[toolchain_dir],
78-
inputs=[toolchain_info_plist_file, info_plist_file],
72+
inputs=[toolchain_plist_file],
7973
tools=[script_file],
8074
command=script_file.path
8175
)

0 commit comments

Comments
 (0)