@@ -120,22 +120,19 @@ readonly output_base="${execution_root%/*/*}"
120120# Set bazel env
121121%collect_bazel_env%
122122
123- function replace_if_changed() {
124- local -r _new_file=" $1 "
125- local -r _destination=" $2 "
126-
127- if [[ -f " $_destination " ]] && cmp -s " $_new_file " " $_destination " ; then
128- rm -f " $_new_file "
129- return
123+ cleanup () {
124+ rm -f " ${defs_bzl_tmp:- } "
125+ if [[ -n " ${installer_inputs_dir:- } " ]]; then
126+ rm -r " $installer_inputs_dir "
130127 fi
131-
132- mv -f " $_new_file " " $_destination "
133- chmod u+w " $_destination "
134128}
129+ trap cleanup EXIT
135130
136131# Avoid touching files in `@rules_xcodeproj_generated` unless their contents
137132# actually changed. Rewriting them on every invocation invalidates the
138133# generated package and forces Bazel to redo package analysis on warm runs.
134+ # `BUILD` can be compared directly because it is copied verbatim.
135+ # `defs.bzl` is derived content, so compare its final contents before copying.
139136# Create files for the generator target
140137readonly generator_package_directory=" $output_base /rules_xcodeproj.noindex/%generator_package_name%"
141138
147144 chmod u+w " $generator_package_directory /BUILD"
148145fi
149146
150- defs_bzl_tmp=" $( mktemp " $generator_package_directory /defs.bzl.XXXXXX " ) "
147+ defs_bzl_tmp=" $( mktemp) "
151148cp " $generator_defs_bzl " " $defs_bzl_tmp "
152149
153150cat << EOF >> "$defs_bzl_tmp "
@@ -159,11 +156,14 @@ BAZEL_PATH = "$bazel_path"
159156WORKSPACE_DIRECTORY = "$BUILD_WORKSPACE_DIRECTORY "
160157EOF
161158
162- replace_if_changed " $defs_bzl_tmp " " $generator_package_directory /defs.bzl"
159+ if [[ ! -f " $generator_package_directory /defs.bzl" ]] || ! cmp -s " $defs_bzl_tmp " " $generator_package_directory /defs.bzl"
160+ then
161+ cp " $defs_bzl_tmp " " $generator_package_directory /defs.bzl"
162+ chmod u+w " $generator_package_directory /defs.bzl"
163+ fi
163164
164165installer_inputs_dir=$( mktemp -d)
165166readonly installer_inputs_dir
166- trap ' rm -r "$installer_inputs_dir"' EXIT
167167
168168bazelrcs=(
169169 --noworkspace_rc
0 commit comments