#!/usr/bin/env bash # Copyright 2023 The Bazel Authors. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # For integration tests, we want to be able to glob() up the sources inside a nested package # See explanation in .bazelrc # # This script ensures that we only delete subtrees that have something a file # signifying a new bazel workspace, whether it be bzlmod or classic. Generic # algorithm: # 1. Get all directories where a WORKSPACE or MODULE.bazel exists. # 2. For each of the directories, get all directories that contains a BUILD.bazel file. # 3. Sort and remove duplicates. set -euxo pipefail DIR="$(dirname $0)/.." cd $DIR # The sed -i.bak pattern is compatible between macos and linux sed -i.bak "/^[^#].*--deleted_packages/s#=.*#=$(\ find examples/*/* tests/*/* \( -name WORKSPACE -or -name MODULE.bazel \) | xargs -n 1 dirname | xargs -n 1 -I{} find {} \( -name BUILD -or -name BUILD.bazel \) | xargs -n 1 dirname | sort -u | paste -sd, -\ )#" $DIR/.bazelrc && rm .bazelrc.bak