download_file: download to GERRIT_CACHE_HOME when set
When building a plugin as user `nobody`, download_file is unable to
write the artifacts to the cache since the user does not have a home
directory. For a CI build I also need to be set the cache directory to
a predetermined value.
Introduce the optional `GERRIT_CACHE_HOME` environment variable to
support relocating downloaded artifacts. When the environment variable
is not set, behavior is unchanged.
Update documentation to mention support for `GERRIT_CACHE_HOME`. While at
it, explain how to override the bazel repository and disk cache, would
have same a bit of time the first time I had to tweak them.
Change-Id: Ie4fac83928527e0e71b159b9500983234c2261ac
diff --git a/Documentation/dev-bazel.txt b/Documentation/dev-bazel.txt
index 782aba0..2a8b7c1 100644
--- a/Documentation/dev-bazel.txt
+++ b/Documentation/dev-bazel.txt
@@ -495,6 +495,10 @@
* ~/.gerritcodereview/bazel-cache/repository
* ~/.gerritcodereview/bazel-cache/cas
+The `downloaded-artifacts` cache can be relocated by setting the
+`GERRIT_CACHE_HOME` environment variable. The other two can be adjusted with
+`bazel build` options `--repository_cache` and `--disk_cache` respectively.
+
Currently none of these caches have a maximum size limit. See
link:https://github.com/bazelbuild/bazel/issues/5139[this bazel issue] for
details. Users should watch the cache sizes and clean them manually if
diff --git a/tools/download_file.py b/tools/download_file.py
index f86fd3e..936bcef 100755
--- a/tools/download_file.py
+++ b/tools/download_file.py
@@ -17,7 +17,7 @@
import argparse
from hashlib import sha1
-from os import link, makedirs, path, remove
+from os import environ, link, makedirs, path, remove
import shutil
from subprocess import check_call, CalledProcessError
from sys import stderr
@@ -25,7 +25,10 @@
from zipfile import ZipFile, BadZipfile, LargeZipFile
GERRIT_HOME = path.expanduser('~/.gerritcodereview')
-CACHE_DIR = path.join(GERRIT_HOME, 'bazel-cache', 'downloaded-artifacts')
+CACHE_DIR = environ.get(
+ 'GERRIT_CACHE_HOME',
+ path.join(GERRIT_HOME, 'bazel-cache', 'downloaded-artifacts'))
+
LOCAL_PROPERTIES = 'local.properties'