Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c9565b3

Browse files
committed
Bazel/Kotlin: fix version comparison logic, add default version printing
1 parent aca8d04 commit c9565b3

3 files changed

Lines changed: 33 additions & 19 deletions

File tree

java/kotlin-extractor/BUILD.bazel

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,15 +145,15 @@ _resources = [
145145
name = "%s-standalone" % _common_extractor_name_prefix,
146146
actual = "%s-standalone-%s" % (
147147
_common_extractor_name_prefix,
148-
kotlin_extractor_defaults.version,
148+
kotlin_extractor_defaults.extractor_version,
149149
),
150150
visibility = ["//visibility:public"],
151151
),
152152
alias(
153153
name = "%s-embeddable" % _common_extractor_name_prefix,
154154
actual = "%s-embeddable-%s" % (
155155
_common_extractor_name_prefix,
156-
kotlin_extractor_defaults.version,
156+
kotlin_extractor_defaults.extractor_version,
157157
),
158158
visibility = ["//visibility:public"],
159159
),
@@ -162,7 +162,7 @@ _resources = [
162162
actual = "%s-%s-%s" % (
163163
_common_extractor_name_prefix,
164164
kotlin_extractor_defaults.variant,
165-
kotlin_extractor_defaults.version,
165+
kotlin_extractor_defaults.extractor_version,
166166
),
167167
visibility = ["//visibility:public"],
168168
),
@@ -180,4 +180,13 @@ _resources = [
180180
) for variant in ("standalone", "embeddable") for version in VERSIONS],
181181
visibility = ["//visibility:public"],
182182
),
183+
genrule(
184+
name = "default-version-printer",
185+
outs = ["print-default-version.sh"],
186+
cmd = "echo echo %s > $@" % kotlin_extractor_defaults.version,
187+
),
188+
sh_binary(
189+
name = "print-default-version",
190+
srcs = [":default-version-printer"],
191+
),
183192
) if not _for_embeddable else None

java/kotlin-extractor/deps.bzl

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
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")
22
load("//misc/bazel:lfs.bzl", "lfs_smudge")
33

44
_kotlin_dep_build = """
@@ -71,33 +71,38 @@ _embeddable_source = repository_rule(implementation = _embeddable_source_impl)
7171
def _get_default_version(repository_ctx):
7272
default_version = repository_ctx.getenv("CODEQL_KOTLIN_SINGLE_VERSION")
7373
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)))
7774
return default_version
7875
kotlinc = repository_ctx.which("kotlinc")
7976
if not kotlinc:
80-
return DEFAULT_FALLBACK_VERSION
77+
return DEFAULT_VERSION
8178
res = repository_ctx.execute([kotlinc, "-version"])
8279
if not res:
8380
fail("kotlinc -version failed: %s" % res.stderr)
8481
out = res.stderr.split(" ")
8582
if len(out) < 3:
8683
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)))
9291

9392
def _defaults_impl(repository_ctx):
9493
default_version = _get_default_version(repository_ctx)
9594
default_variant = "standalone"
9695
if repository_ctx.getenv("CODEQL_KOTLIN_SINGLE_VERSION_EMBEDDABLE") in ("true", "1"):
9796
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+
)
98103
repository_ctx.file(
99104
"defaults.bzl",
100-
"kotlin_extractor_defaults = struct(version = '%s', variant = '%s')\n" % (default_version, default_variant),
105+
"kotlin_extractor_defaults = %s\n" % repr(info),
101106
)
102107
repository_ctx.file("BUILD.bazel")
103108

java/kotlin-extractor/versions.bzl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@ VERSIONS = [
1515
"2.0.255-SNAPSHOT",
1616
]
1717

18-
DEFAULT_FALLBACK_VERSION = "1.9.0-Beta"
18+
DEFAULT_VERSION = "1.9.0"
1919

2020
def _version_to_tuple(v):
21-
v, _, tail = v.partition("-")
22-
v = tuple([int(x) for x in v.split(".")])
23-
return v + (tail,)
21+
# we ignore the tag when comparing versions, for example 1.9.0-Beta <= 1.9.0
22+
v, _, ignored_tag = v.partition("-")
23+
return tuple([int(x) for x in v.split(".")])
2424

2525
def version_less(lhs, rhs):
2626
return _version_to_tuple(lhs) < _version_to_tuple(rhs)
2727

2828
def get_language_version(version):
29-
major, minor, _, _ = _version_to_tuple(version)
29+
major, minor, _ = _version_to_tuple(version)
3030
return "%s.%s" % (major, minor)
3131

3232
def _basename(path):

0 commit comments

Comments
 (0)