|
1 | | -load("//java/kotlin-extractor:versions.bzl", "DEFAULT_FALLBACK_VERSION", "VERSIONS", "version_less") |
| 1 | +load("//java/kotlin-extractor:versions.bzl", "DEFAULT_VERSION", "VERSIONS", "version_less") |
2 | 2 | load("//misc/bazel:lfs.bzl", "lfs_smudge") |
3 | 3 |
|
4 | 4 | _kotlin_dep_build = """ |
@@ -71,33 +71,38 @@ _embeddable_source = repository_rule(implementation = _embeddable_source_impl) |
71 | 71 | def _get_default_version(repository_ctx): |
72 | 72 | default_version = repository_ctx.getenv("CODEQL_KOTLIN_SINGLE_VERSION") |
73 | 73 | if default_version: |
74 | | - if default_version not in VERSIONS: |
75 | | - fail("overriding CODEQL_KOTLIN_SINGLE_VERSION=%s not known, must be one of:\n %s" % |
76 | | - (default_version, " ".join(VERSIONS))) |
77 | 74 | return default_version |
78 | 75 | kotlinc = repository_ctx.which("kotlinc") |
79 | 76 | if not kotlinc: |
80 | | - return DEFAULT_FALLBACK_VERSION |
| 77 | + return DEFAULT_VERSION |
81 | 78 | res = repository_ctx.execute([kotlinc, "-version"]) |
82 | 79 | if not res: |
83 | 80 | fail("kotlinc -version failed: %s" % res.stderr) |
84 | 81 | out = res.stderr.split(" ") |
85 | 82 | if len(out) < 3: |
86 | 83 | fail("malformed kotlinc -version output: %s" % res.stdout) |
87 | | - host_version = out[2] |
88 | | - for version in reversed(VERSIONS): |
89 | | - if version_less(version, host_version) or version == host_version: |
90 | | - return version |
91 | | - fail("no relevant version found for host version %s among:\n %s" % (host_version, " ".join(VERSIONS))) |
| 84 | + return out[2] |
| 85 | + |
| 86 | +def _get_available_version(version): |
| 87 | + for available_version in reversed(VERSIONS): |
| 88 | + if not version_less(version, available_version): |
| 89 | + return available_version |
| 90 | + fail("no available version found for version %s among:\n %s" % (version, " ".join(VERSIONS))) |
92 | 91 |
|
93 | 92 | def _defaults_impl(repository_ctx): |
94 | 93 | default_version = _get_default_version(repository_ctx) |
95 | 94 | default_variant = "standalone" |
96 | 95 | if repository_ctx.getenv("CODEQL_KOTLIN_SINGLE_VERSION_EMBEDDABLE") in ("true", "1"): |
97 | 96 | default_variant = "embeddable" |
| 97 | + available_version = _get_available_version(default_version) |
| 98 | + info = struct( |
| 99 | + version = default_version, |
| 100 | + variant = default_variant, |
| 101 | + extractor_version = available_version, |
| 102 | + ) |
98 | 103 | repository_ctx.file( |
99 | 104 | "defaults.bzl", |
100 | | - "kotlin_extractor_defaults = struct(version = '%s', variant = '%s')\n" % (default_version, default_variant), |
| 105 | + "kotlin_extractor_defaults = %s\n" % repr(info), |
101 | 106 | ) |
102 | 107 | repository_ctx.file("BUILD.bazel") |
103 | 108 |
|
|
0 commit comments