diff options
author | Lydéric Debusschère <lyderic.de@gmail.com> | 2024-02-27 10:03:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-27 03:03:25 -0600 |
commit | fe4a4ddcf9123eff97181b9d0b2bacf7054a19f9 (patch) | |
tree | dfd4bfb04abf1c0680165003d3ed43a7ce42168c /var | |
parent | c45714fd3c27a23d6b28edf6d6071babe5137c0b (diff) | |
download | spack-fe4a4ddcf9123eff97181b9d0b2bacf7054a19f9.tar.gz spack-fe4a4ddcf9123eff97181b9d0b2bacf7054a19f9.tar.bz2 spack-fe4a4ddcf9123eff97181b9d0b2bacf7054a19f9.tar.xz spack-fe4a4ddcf9123eff97181b9d0b2bacf7054a19f9.zip |
bazel: allow offline build of major versions 5 and 6 (#41575)
* bazel: allow offline build of major versions 5 and 6; add variant download_data
* bazel: add maintainer LydDeb
* bazel: install offline only; remove variant download_data
* bazel: fix variable name: resource_dico --> resource_dictionary
* bazel: fix style
* bazel: fix the build of version 4
* bazel: add comment about resources
* bazel: access to resource stages with self.stage
* bazel: add except to solve AttributeError: 'Stage' object has no attribute 'resource'
---------
Co-authored-by: LydDeb <lyderic.debusschere@eolen.com>
Diffstat (limited to 'var')
-rw-r--r-- | var/spack/repos/builtin/packages/bazel/package.py | 57 |
1 files changed, 51 insertions, 6 deletions
diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index 4f76e8e7bb..b152c1445b 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -18,6 +18,8 @@ class Bazel(Package): homepage = "https://bazel.build/" url = "https://github.com/bazelbuild/bazel/releases/download/3.1.0/bazel-3.1.0-dist.zip" + maintainers("LydDeb") + tags = ["build-tools"] license("Apache-2.0") @@ -120,6 +122,39 @@ class Bazel(Package): executables = ["^bazel$"] + # Download resources to perform offline build with bazel. + # The following URLs and sha256 are in the file distdir_deps.bzl at the root of bazel sources. + resource_dictionary = {} + resource_dictionary["bazel_skylib"] = { + "url": "https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.1/bazel-skylib-1.0.1.tar.gz", + "sha256": "f1c8360c01fcf276778d3519394805dc2a71a64274a3a0908bc9edff7b5aebc8", + "when": "@4:6", + } + resource_dictionary["zulu_11_56_19"] = { + "url": "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.56.19-ca-jdk11.0.15-linux_x64.tar.gz", + "sha256": "e064b61d93304012351242bf0823c6a2e41d9e28add7ea7f05378b7243d34247", + "when": "@6", + } + resource_dictionary["zulu_11_50_19"] = { + "url": "https://mirror.bazel.build/openjdk/azul-zulu11.50.19-ca-jdk11.0.12/zulu11.50.19-ca-jdk11.0.12-linux_x64.tar.gz", + "sha256": "b8e8a63b79bc312aa90f3558edbea59e71495ef1a9c340e38900dd28a1c579f3", + "when": "@5", + } + resource_dictionary["zulu_11_37_17"] = { + "url": "https://mirror.bazel.build/openjdk/azul-zulu11.37.17-ca-jdk11.0.6/zulu11.37.17-ca-jdk11.0.6-linux_x64.tar.gz", + "sha256": "360626cc19063bc411bfed2914301b908a8f77a7919aaea007a977fa8fb3cde1", + "when": "@4", + } + for resource_name in resource_dictionary.keys(): + resource( + when=resource_dictionary[resource_name]["when"], + name=resource_name, + url=resource_dictionary[resource_name]["url"], + sha256=resource_dictionary[resource_name]["sha256"], + destination="archive", + expand=False, + ) + @classmethod def determine_version(cls, exe): output = Executable(exe)("version", output=str, error=str) @@ -132,14 +167,24 @@ class Bazel(Package): env.set("BAZEL_LINKOPTS", "") env.set("BAZEL_LINKLIBS", "-lstdc++") - env.set( - "EXTRA_BAZEL_ARGS", - # Spack's logs don't handle colored output well - "--color=no --host_javabase=@local_jdk//:jdk" - # Enable verbose output for failures - " --verbose_failures --jobs={0}".format(make_jobs), + # .WARNING: Option 'host_javabase' is deprecated + # Use local java installation + args = "--color=no --define=ABSOLUTE_JAVABASE={0} --verbose_failures --jobs={1}".format( + self.spec["java"].prefix, make_jobs ) + resource_stages = self.stage[1:] + for _resource in resource_stages: + try: + resource_name = _resource.resource.name + if self.spec.satisfies(self.resource_dictionary[resource_name]["when"]): + archive_path = _resource.source_path + args += " --distdir={0}".format(archive_path) + except AttributeError: + continue + + env.set("EXTRA_BAZEL_ARGS", args) + @run_before("install") def bootstrap(self): bash = which("bash") |