Releases: MobileNativeFoundation/rules_xcodeproj
2.1.1
What’s Changed
Since 2.1.0
- Upgraded WORKSPACE and dev rules_apple: #3002
- Upgraded dev rules_swift: #3003
- Fixed missing
BAZEL_PACKAGE_BIN_DIR
for non-Swift targets in incremental generation mode: #3004
Below are the changes that were in 2.1.0.
Adjusted
- Added
module.bazel_compatibility
to reflect our minimum supported Bazel version: #2995 - Upgraded WORKSPACE version of rules_swift and rules_apple: #2996
Fixed
- Fixed
extension_host
error when usinglaunch_path
: #2992 - Test hosts are no longer included in schemes when
adjust_schemes_for_swiftui_previews = True
: #2991 - The correct action (e.g. Test or Run) is now set for transitive Xcode Preview dependencies: #2993
Ruleset Development Changes
- Upgraded dev version of rules_swift and rules_apple: #2996
Full Changelog
Contributors
Bzlmod Snippet
bazel_dep(name = "rules_xcodeproj", version = "2.1.1")
release.tar.gz
’s integrity
: sha256-w4cknrUOEOiCgdg4tqjUvykKxNBpeAjvA65EL0tWNos=
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_xcodeproj",
sha256 = "c387249eb50e10e88281d838b6a8d4bf290ac4d0697808ef03ae442f4b56368b",
url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/2.1.1/release.tar.gz",
)
load(
"@rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
2.1.0
What’s Changed
Adjusted
- Added
module.bazel_compatibility
to reflect our minimum supported Bazel version: #2995 - Upgraded WORKSPACE version of rules_swift and rules_apple: #2996
Fixed
- Fixed
extension_host
error when usinglaunch_path
: #2992 - Test hosts are no longer included in schemes when
adjust_schemes_for_swiftui_previews = True
: #2991 - The correct action (e.g. Test or Run) is now set for transitive Xcode Preview dependencies: #2993
Ruleset Development Changes
- Upgraded dev version of rules_swift and rules_apple: #2996
Full Changelog
Contributors
Bzlmod Snippet
bazel_dep(name = "rules_xcodeproj", version = "2.1.0")
release.tar.gz
’s integrity
: sha256-pn04vd6/nJZNK1P143Qud+SPryzqXHj7/37DmzWG07g=
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_xcodeproj",
sha256 = "a67d38bddebf9c964d2b53f5e3742e77e48faf2cea5c78fbff7ec39b3586d3b8",
url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/2.1.0/release.tar.gz",
)
load(
"@rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
2.0.0: Incremental generation mode enabled by default
What’s Changed
⚠️ Breaking changes ⚠️
- Changed the default value for
xcodeproj.generation_mode
fromlegacy
toincremental
: #2986 - Removed some deprecated attributes: #2988
New
- Environment variables are now resolved in
bazel_env
: #2983 additional_*_inputs
are now collected as extra files in incremental generation mode: #2972swiftc_inputs
are now collected as extra files in incremental generation mode: #2971
Adjusted
- Reduced work that incremental generation mode installer does for generated directories: #2956 & #2965
- The adjusted
Info.plist
is now used forextension_infoplists
in incremental generation mode: #2966 exec
configuration targets are no longer processed in incremental generation mode: #2968
Fixed
- Indentation related
project_options
are now applied in incremental generation mode: #2959 - Uncategorized files are no longer collected for unfocused targets in incremental generation mode: #2960 & #2982
- Uncategorized files are no longer collected for source-less library targets in incremental generation mode: #2969
- The swift generated header is now excluded from the project in incremental generation mode: #2961
codesign_inputs
are now collected as extra files in incremental generation mode: #2970- Fixed
build_mode
to be setbazel
when passed inNone
or""
: #2987
Ruleset Development Changes
- Locked down distribution to a specific Xcode version: #2954
Full Changelog
Contributors
Bzlmod Snippet
bazel_dep(name = "rules_xcodeproj", version = "2.0.0")
release.tar.gz
’s integrity
: sha256-ZEARdZYhfJ4Fxp7t1MyKprj+4RkbKrRhckF8yi95FiM=
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_xcodeproj",
sha256 = "6440117596217c9e05c69eedd4cc8aa6b8fee1191b2ab46172417cca2f791623",
url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/2.0.0/release.tar.gz",
)
load(
"@rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
1.18.0
What’s Changed
New
- Added support for visionOS: #2922
- Added Ruby file type extension for
Podspec
files: #2932 - Added
literal_string
argument toxcschemes.arg
: #2938
Adjusted
- Upgraded WORKSPACE version of rules_swift to 1.16.0: #2927
--experimental_remote_download_regex
is no longer set by default with the command-line API: #2930- Timing output from
calculate_output_groups.py
is now flushed immediately: #2931 - We now work around when
bazelisk
is called recursively during project generation: #2929 - Made
xcschemes.top_level_anchor_target
work with*_build_test
targets: #2945 & #2949
Fixed
- Fixed Xcode 15.3 LLDB debugging: #2947
- Fixed an error when using an empty or
None
xcschemes.env
value: #2935 - Fixed stale tests with test hosts when deploying to simulator: #2936
explicitFileType
is now correctly set for.bazel
and.bzl
extensions in incremental generation mode: #2928- Fixed performance of
associated_extra_files
with incremental generation mode: #2944 & #2948
Ruleset Development Changes
- Upgrade dev version of rules_swift to 1.16.0: #2927
Full Changelog
Contributors
Bzlmod Snippet
bazel_dep(name = "rules_xcodeproj", version = "1.18.0")
release.tar.gz
’s integrity
: sha256-hNSObmZAiQeLMq8NRrG3LsM7qsPUpMbTTG3hIHSBens=
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_xcodeproj",
sha256 = "84d48e6e664089078b32af0d46b1b72ec33baac3d4a4c6d34c6de12074817a7b",
url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.18.0/release.tar.gz",
)
load(
"@rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
1.17.0
What’s Changed
New
- Added support for the new
swift_proto_library
rule: #2832
Adjusted
- Added support for argument lists in
swiftc_stub
: #2907 - We now log when the Bazel build is starting: #2895
- Upgraded WORKSPACE versions of rules_apple: #2912
- Removed incremental generation mode extra
CODE_SIGNING_ALLOWED
logic: #2921
Fixed
- Fixed duplicate
same_as_run
launch target pre/post actions: #2892 - Fixed frozen list issue with incremental generation: #2894
- Fixed more code signing issues of UI tests with incremental generation: #2919
- Fixed processing of folder-type uncategorized resources with incremental generation: #2918
- Fixed tree artifact
File
handling with incremental generation: #2905 - Fixed tvOS Xcode preview framework code signing with incremental generation: #2920
xcschemes
no longer errors when listing a merged target inlibrary_targets
: #2897
Ruleset Development Changes
- Upgraded development apple_support and rules_apple versions: #2912
Full Changelog
Contributors
Bzlmod Snippet
bazel_dep(name = "rules_xcodeproj", version = "1.17.0")
release.tar.gz
’s integrity
: sha256-iEDmJM4kKyWeTn6kwe83+nfu34XOai1rBg4he/8nNss=
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_xcodeproj",
sha256 = "8840e624ce242b259e4e7ea4c1ef37fa77eedf85ce6a2d6b060e217bff2736cb",
url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.17.0/release.tar.gz",
)
load(
"@rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
1.16.0
What’s Changed
New
- Added support for pre/post actions with
launch_path
: #2866
Adjusted
- Added a failure when
product.original_basename
isn’t set: #2879 - Improved performance of the
files_and_groups
incremental generator: #2870 - Upgraded
xcodeproj_rules_dependencies
rules_apple, rules_swift, and bazel_features: #2882 - Upgraded bazel_features to 1.3.0: #2883
- Removed bitcode support: #2887
Fixed
- Fixed macro expansion for test schemes without launch targets: #2868
- Fixed some args and env setting in incremental generation schemes: #2869
- Fixed SwiftUI Previews link command-line length issue with incremental generation mode: #2878
- Fixed Bazel 6 handling of
libSwiftProtobuf.a
: #2888 - Fixed the command-line API to support all Bazel commands via the
common
pseudo-command: #2889
Ruleset Development Changes
Full Changelog
Contributors
Bzlmod Snippet
bazel_dep(name = "rules_xcodeproj", version = "1.16.0")
release.tar.gz
’s integrity
: sha256-zMcZhRqZQsU7k1mYQQbp+lxcl9liGzRiQ7Y4sY7Al/k=
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_xcodeproj",
sha256 = "ccc719851a9942c53b9359984106e9fa5c5c97d9621b346243b638b18ec097f9",
url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.16.0/release.tar.gz",
)
load(
"@rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
1.15.0: Incremental generation mode fixes
What’s Changed
New
cmake
sources are now included in the Project navigator: #2847
Adjusted
- The default
--experimental_remote_download_regex
flag set by rules_xcodeproj has been expanded to explicitly list file types needed for indexing: #2859- Incremental generation mode has been adjusted to not manually track generated files, resulting in lower CPU and memory usage
- The targets for a scheme (e.g.
.app
,.xctest
,.a
) are now built in Index Build, similar to how Xcode does it - This should improve indexing of more complicated setups (e.g. ones that use VFS overlays or hmap files)
- Added
--experimental_use_cpp_compile_action_args_params_file
to baselinexcodeproj.bazelrc
: #2850- Fixes a long command-line issue in incremental generation mode
Fixed
- Fixed
build_targets
inxcschemes
to accept string labels: #2864 - Fixed folder-type files (e.g.
.xcassets
) in incremental generation mode: #2841 - Fixed generated input source file error in incremental generation mode: #2851
- Fixed simulator UI test debugging in incremental generation mode: #2849
- Fixed a potential hang in
import_indexstores
: #2858
Full Changelog
Contributors
Bzlmod Snippet
bazel_dep(name = "rules_xcodeproj", version = "1.15.0")
release.tar.gz
’s integrity
: sha256-d3W+uh+d2zy84gnKHtDRF//ii5LYW/qOZZ+zwXatpWU=
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_xcodeproj",
sha256 = "7775beba1f9ddb3cbce209ca1ed0d117ffe28b92d85bfa8e659fb3c176ada565",
url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.15.0/release.tar.gz",
)
load(
"@rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
1.14.2
What’s Changed
Since 1.14.1
- Fix another incremental installer issue: #2826
Below are the changes that were in 1.14.1.
New
- Added a new incremental generation mode
- Incremental generation mode is a new way for rules_xcodeproj to generate your project. Unlike the Build Mode (BwB or BwX), this should only really affect the process by which rules_xcodeproj takes to generate the project, not how the project itself behaves (with some small caveats). Here are some of the benefits of using incremental generation mode over the current (a.k.a
"legacy"
) generation mode:- Much faster generation. Numbers from a large example project:
- Clean
- Analysis: 12% faster (62s vs 71s)
- Execution: 41% faster (72s vs 123s)
- Minimal incremental (add file to a top-level target)
- Analysis: 36% faster (13s vs 21s)
- Execution: 93% faster (8.5s vs 123s)
- Clean
- Lower Starlark memory usage (about 33% lower)
- Improved target consolidation and target merging
- Some targets can now consolidate better
- Libraries can merge into multiple top-level targets
- Mixed-language targets merge better
- Improved indexing
- All Swift compiler flags are now in the project, working around more SourceKit issues
- Improved debugging
- Improved handling of extra files (mainly around target focusing)
- Improved Xcode Previews support
- For maintainers, vastly improved maintainability (docs, tests, code structure, etc.)
- Much faster generation. Numbers from a large example project:
- This is currently opt in
- Set
xcodeproj.generation_mode
to"incremental"
to try it out - Use
xcodeproj.xcschemes
, instead ofxcodeproj.schemes
, if you define custom schemes - Note: Only BwB mode is supported
- Set
- Incremental generation mode is a new way for rules_xcodeproj to generate your project. Unlike the Build Mode (BwB or BwX), this should only really affect the process by which rules_xcodeproj takes to generate the project, not how the project itself behaves (with some small caveats). Here are some of the benefits of using incremental generation mode over the current (a.k.a
- Added a Bzlmod dependency on
rules_python
0.27.1
: #2793
Adjusted
- Added recognition of additional
deps
attributes for rules_ios bundle rules: #2750 - Archived bundles are now extracted with Bazel instead of in
copy_outputs.sh
: #2779 cc_common.merge_cc_infos
is now only called if needed: #2762- Disabled the
GenerateTAPI
Xcode action: #2724 - Improved handling of source-less library targets: #2714
- Optimized some Starlark CPU usage: #2760
- Optimized some Starlark retained memory usage: #2769 and #2777
- Upgraded bazel_features to 1.1.1: #2718
- Upgraded apple_support, rules_apple, and rules_swift in
WORKSPACE
macro: #2824 - Removed
--collect_specs
support: #2803 - Removed
DEPLOYMENT_LOCATION
hack when using BwB mode: #2790
Ruleset Development Changes
Full Changelog
Contributors
Bzlmod Snippet
bazel_dep(name = "rules_xcodeproj", version = "1.14.2")
release.tar.gz
’s integrity
: sha256-UnbmV2Q0XQqwBa6+dxdjH4j3uzUTDVnYostRWfGQ3Zw=
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_xcodeproj",
sha256 = "5276e65764345d0ab005aebe7717631f88f7bb35130d59d8a2cb5159f190dd9c",
url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.14.2/release.tar.gz",
)
load(
"@rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
1.14.1
What’s Changed
Since 1.14.0
- Fixed incremental installer: #2825
Below are the changes that were in 1.14.0.
New
- Added a new incremental generation mode
- Incremental generation mode is a new way for rules_xcodeproj to generate your project. Unlike the Build Mode (BwB or BwX), this should only really affect the process by which rules_xcodeproj takes to generate the project, not how the project itself behaves (with some small caveats). Here are some of the benefits of using incremental generation mode over the current (a.k.a
"legacy"
) generation mode:- Much faster generation. Numbers from a large example project:
- Clean
- Analysis: 12% faster (62s vs 71s)
- Execution: 41% faster (72s vs 123s)
- Minimal incremental (add file to a top-level target)
- Analysis: 36% faster (13s vs 21s)
- Execution: 93% faster (8.5s vs 123s)
- Clean
- Lower Starlark memory usage (about 33% lower)
- Improved target consolidation and target merging
- Some targets can now consolidate better
- Libraries can merge into multiple top-level targets
- Mixed-language targets merge better
- Improved indexing
- All Swift compiler flags are now in the project, working around more SourceKit issues
- Improved debugging
- Improved handling of extra files (mainly around target focusing)
- Improved Xcode Previews support
- For maintainers, vastly improved maintainability (docs, tests, code structure, etc.)
- Much faster generation. Numbers from a large example project:
- This is currently opt in
- Set
xcodeproj.generation_mode
to"incremental"
to try it out - Use
xcodeproj.xcschemes
, instead ofxcodeproj.schemes
, if you define custom schemes - Note: Only BwB mode is supported
- Set
- Incremental generation mode is a new way for rules_xcodeproj to generate your project. Unlike the Build Mode (BwB or BwX), this should only really affect the process by which rules_xcodeproj takes to generate the project, not how the project itself behaves (with some small caveats). Here are some of the benefits of using incremental generation mode over the current (a.k.a
- Added a Bzlmod dependency on
rules_python
0.27.1
: #2793
Adjusted
- Added recognition of additional
deps
attributes for rules_ios bundle rules: #2750 - Archived bundles are now extracted with Bazel instead of in
copy_outputs.sh
: #2779 cc_common.merge_cc_infos
is now only called if needed: #2762- Disabled the
GenerateTAPI
Xcode action: #2724 - Improved handling of source-less library targets: #2714
- Optimized some Starlark CPU usage: #2760
- Optimized some Starlark retained memory usage: #2769 and #2777
- Upgraded bazel_features to 1.1.1: #2718
- Upgraded apple_support, rules_apple, and rules_swift in
WORKSPACE
macro: #2824 - Removed
--collect_specs
support: #2803 - Removed
DEPLOYMENT_LOCATION
hack when using BwB mode: #2790
Ruleset Development Changes
Full Changelog
Contributors
Bzlmod Snippet
bazel_dep(name = "rules_xcodeproj", version = "1.14.1")
release.tar.gz
’s integrity
: sha256-Y3lwAEzeEmnSFNHC9Ol+geTWkBuuwI9Q4O6arJfBeHg=
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_xcodeproj",
sha256 = "637970004cde1269d214d1c2f4e97e81e4d6901baec08f50e0ee9aac97c17878",
url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.14.1/release.tar.gz",
)
load(
"@rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
1.14.0: Incremental generation mode
What’s Changed
New
- Added a new incremental generation mode
- Incremental generation mode is a new way for rules_xcodeproj to generate your project. Unlike the Build Mode (BwB or BwX), this should only really affect the process by which rules_xcodeproj takes to generate the project, not how the project itself behaves (with some small caveats). Here are some of the benefits of using incremental generation mode over the current (a.k.a
"legacy"
) generation mode:- Much faster generation. Numbers from a large example project:
- Clean
- Analysis: 12% faster (62s vs 71s)
- Execution: 41% faster (72s vs 123s)
- Minimal incremental (add file to a top-level target)
- Analysis: 36% faster (13s vs 21s)
- Execution: 93% faster (8.5s vs 123s)
- Clean
- Lower Starlark memory usage (about 33% lower)
- Improved target consolidation and target merging
- Some targets can now consolidate better
- Libraries can merge into multiple top-level targets
- Mixed-language targets merge better
- Improved indexing
- All Swift compiler flags are now in the project, working around more SourceKit issues
- Improved debugging
- Improved handling of extra files (mainly around target focusing)
- Improved Xcode Previews support
- For maintainers, vastly improved maintainability (docs, tests, code structure, etc.)
- Much faster generation. Numbers from a large example project:
- This is currently opt in
- Set
xcodeproj.generation_mode
to"incremental"
to try it out - Use
xcodeproj.xcschemes
, instead ofxcodeproj.schemes
, if you define custom schemes - Note: Only BwB mode is supported
- Set
- Incremental generation mode is a new way for rules_xcodeproj to generate your project. Unlike the Build Mode (BwB or BwX), this should only really affect the process by which rules_xcodeproj takes to generate the project, not how the project itself behaves (with some small caveats). Here are some of the benefits of using incremental generation mode over the current (a.k.a
- Added a Bzlmod dependency on
rules_python
0.27.1
: #2793
Adjusted
- Added recognition of additional
deps
attributes for rules_ios bundle rules: #2750 - Archived bundles are now extracted with Bazel instead of in
copy_outputs.sh
: #2779 cc_common.merge_cc_infos
is now only called if needed: #2762- Disabled the
GenerateTAPI
Xcode action: #2724 - Improved handling of source-less library targets: #2714
- Optimized some Starlark CPU usage: #2760
- Optimized some Starlark retained memory usage: #2769 and #2777
- Upgraded bazel_features to 1.1.1: #2718
- Upgraded apple_support, rules_apple, and rules_swift in
WORKSPACE
macro: #2824 - Removed
--collect_specs
support: #2803 - Removed
DEPLOYMENT_LOCATION
hack when using BwB mode: #2790
Ruleset Development Changes
Full Changelog
Contributors
Bzlmod Snippet
bazel_dep(name = "rules_xcodeproj", version = "1.14.0")
release.tar.gz
’s integrity
: sha256-y2mbkDHxAWbyeYf3BjE2LUpAbj+kIqAq4rwnX9APqh4=
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_xcodeproj",
sha256 = "cb699b9031f10166f27987f70631362d4a406e3fa422a02ae2bc275fd00faa1e",
url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.14.0/release.tar.gz",
)
load(
"@rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()