Unverified Commit e72d5498 authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #63517 from ixdy/update-workspace-mirror-fixes

Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. //hack:update-mirror: ensure last URL in list is mirrored too **What this PR does / why we need it**: a small bug in https://github.com/kubernetes/kubernetes/pull/62495 prevented the last URL from mirrored, since there wasn't a trailing newline. Also, the bazel target printed out if you ran `hack/update-workspace-mirror.sh` directly was incorrect, so that's now fixed. **Special notes for your reviewer**: buildifier is apparently now formatting bzl files, and I can't figure out how to disable that, so I reformatted this as the first commit. **Release note**: ```release-note NONE ``` /assign @BenTheElder /cc @rmmh
parents 940e716c b9efd1f4
...@@ -15,31 +15,35 @@ ...@@ -15,31 +15,35 @@
prefix = "https://storage.googleapis.com/k8s-bazel-cache/" prefix = "https://storage.googleapis.com/k8s-bazel-cache/"
def mirror(url): def mirror(url):
"""Try downloading a URL from a GCS mirror first, then from the original. """Try downloading a URL from a GCS mirror first, then from the original.
Update the GCS bucket using bazel run //hack:update-mirror""" Update the GCS bucket using bazel run //hack:update-mirror"""
return [prefix + url, url] return [prefix + url, url]
# This function only gives proper results when executed from WORKSPACE,
# but the data is needed in sh_binary, which can only be in a BUILD file.
# Thus, it is be exported by a repository_rule (which executes in WORKSPACE)
# to be used by the sh_binary.
def mirror_urls(): def mirror_urls():
urls = [] # This function only gives proper results when executed from WORKSPACE,
for k, v in native.existing_rules().items(): # but the data is needed in sh_binary, which can only be in a BUILD file.
us = list(v.get('urls', [])) # Thus, it is be exported by a repository_rule (which executes in WORKSPACE)
if 'url' in v: # to be used by the sh_binary.
us.append(v['url']) urls = []
for u in us: for k, v in native.existing_rules().items():
if u and not u.startswith(prefix): us = list(v.get("urls", []))
urls.append(u) if "url" in v:
return sorted(urls) us.append(v["url"])
for u in us:
if u and not u.startswith(prefix):
urls.append(u)
return sorted(urls)
def export_urls_impl(repo_ctx): def export_urls_impl(repo_ctx):
repo_ctx.file(repo_ctx.path("BUILD.bazel"), """ repo_ctx.file(repo_ctx.path("BUILD.bazel"), """
exports_files(glob(["**"]), visibility=["//visibility:public"]) exports_files(glob(["**"]), visibility=["//visibility:public"])
""") """)
repo_ctx.file(repo_ctx.path("urls.txt"), content="\n".join(repo_ctx.attr.urls)) repo_ctx.file(
repo_ctx.path("urls.txt"),
# Add a trailing newline, since the "while read" loop needs it
content = ("\n".join(repo_ctx.attr.urls) + "\n"),
)
_export_urls = repository_rule( _export_urls = repository_rule(
attrs = { attrs = {
...@@ -50,4 +54,4 @@ _export_urls = repository_rule( ...@@ -50,4 +54,4 @@ _export_urls = repository_rule(
) )
def export_urls(name): def export_urls(name):
return _export_urls(name=name, urls=mirror_urls()) return _export_urls(name = name, urls = mirror_urls())
...@@ -19,7 +19,7 @@ set -o nounset ...@@ -19,7 +19,7 @@ set -o nounset
set -o pipefail set -o pipefail
if [[ $# -ne 1 ]]; then if [[ $# -ne 1 ]]; then
echo 'use "bazel run //build:update-mirror"' echo 'use "bazel run //hack:update-mirror"'
echo "(usage: $0 <file with list of URLs to mirror>)" echo "(usage: $0 <file with list of URLs to mirror>)"
exit 1 exit 1
fi fi
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment