Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions sdk/daml-lf/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ genrule(
srcs = ["@maven//:com_daml_daml_lf_language_2_13"],
outs = ["daml-lf-versions-generated.json"],
cmd = """
# Extract the specific file by its name inside the zip
$(location @bazel_tools//tools/zip:zipper) x $(SRCS) -d $(RULEDIR) daml-lf-versions.json
# Extract the dto file from the jar
$(location @bazel_tools//tools/zip:zipper) x $(SRCS) -d $(RULEDIR) daml-lf-versions-dto.json
# Rename it to match our declared output
mv $(RULEDIR)/daml-lf-versions.json $@
mv $(RULEDIR)/daml-lf-versions-dto.json $@
""",
tools = ["@bazel_tools//tools/zip:zipper"],
visibility = ["//visibility:private"],
Expand Down
252 changes: 224 additions & 28 deletions sdk/daml-lf/daml-lf-versions.json
Original file line number Diff line number Diff line change
@@ -1,45 +1,241 @@
{
"explicitVersions" : [
"2.3-rc1",
"2.1",
"2.dev",
"2.3-rc1",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we have 2.3-rc1 twice in this list? I see we still repeat it below

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its a consequence of defining both "2.3" and "2.3.1" canton side. It gets deduplicated to account for this

"2.2"
{
"major" : 2,
"minor" : {
"Staging" : {
"version" : 3,
"revision" : 1
}
}
},
{
"major" : 2,
"minor" : {
"Stable" : {
"version" : 1
}
}
},
{
"major" : 2,
"minor" : {
"Dev" : {

}
}
},
{
"major" : 2,
"minor" : {
"Staging" : {
"version" : 3,
"revision" : 1
}
}
},
{
"major" : 2,
"minor" : {
"Stable" : {
"version" : 2
}
}
}
],
"namedVersions" : {
"defaultLfVersion" : "2.2",
"devLfVersion" : "2.dev",
"latestStableLfVersion" : "2.2",
"stagingLfVersion" : "2.3-rc1"
"defaultLfVersion" : {
"major" : 2,
"minor" : {
"Stable" : {
"version" : 2
}
}
},
"devLfVersion" : {
"major" : 2,
"minor" : {
"Dev" : {

}
}
},
"latestStableLfVersion" : {
"major" : 2,
"minor" : {
"Stable" : {
"version" : 2
}
}
},
"stagingLfVersion" : {
"major" : 2,
"minor" : {
"Staging" : {
"version" : 3,
"revision" : 1
}
}
}
},
"versionLists" : {
"compilerOutputLfVersions" : [
"2.1",
"2.2",
"2.3-rc1",
"2.dev"
{
"major" : 2,
"minor" : {
"Stable" : {
"version" : 1
}
}
},
{
"major" : 2,
"minor" : {
"Stable" : {
"version" : 2
}
}
},
{
"major" : 2,
"minor" : {
"Staging" : {
"version" : 3,
"revision" : 1
}
}
},
{
"major" : 2,
"minor" : {
"Dev" : {

}
}
}
],
"allLfVersions" : [
"2.1",
"2.2",
"2.3-rc1",
"2.dev"
{
"major" : 2,
"minor" : {
"Stable" : {
"version" : 1
}
}
},
{
"major" : 2,
"minor" : {
"Stable" : {
"version" : 2
}
}
},
{
"major" : 2,
"minor" : {
"Staging" : {
"version" : 3,
"revision" : 1
}
}
},
{
"major" : 2,
"minor" : {
"Dev" : {

}
}
}
],
"stableLfVersions" : [
"2.1",
"2.2"
{
"major" : 2,
"minor" : {
"Stable" : {
"version" : 1
}
}
},
{
"major" : 2,
"minor" : {
"Stable" : {
"version" : 2
}
}
}
],
"compilerInputLfVersions" : [
"2.1",
"2.2",
"2.3-rc1",
"2.dev"
{
"major" : 2,
"minor" : {
"Stable" : {
"version" : 1
}
}
},
{
"major" : 2,
"minor" : {
"Stable" : {
"version" : 2
}
}
},
{
"major" : 2,
"minor" : {
"Staging" : {
"version" : 3,
"revision" : 1
}
}
},
{
"major" : 2,
"minor" : {
"Dev" : {

}
}
}
],
"compilerLfVersions" : [
"2.1",
"2.2",
"2.3-rc1",
"2.dev"
{
"major" : 2,
"minor" : {
"Stable" : {
"version" : 1
}
}
},
{
"major" : 2,
"minor" : {
"Stable" : {
"version" : 2
}
}
},
{
"major" : 2,
"minor" : {
"Staging" : {
"version" : 3,
"revision" : 1
}
}
},
{
"major" : 2,
"minor" : {
"Dev" : {

}
}
}
]
}
}
}
62 changes: 32 additions & 30 deletions sdk/daml-lf/daml-lf.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -14,33 +14,30 @@ def _camel_to_upper_snake(text):
result += char
return result.upper()

def _parse_version(v_str):
def _parse_version(v):
"""
Parses a version string according to specific rules:
- "2.dev" -> status="dev", minor="dev"
- "2.n-rcm" -> status="staging", minor="n", revision="m"
- "2.n" -> status="stable", minor="n"
Parses a structured version dict from the JSON:
- {"major": 2, "minor": {"Dev": {}}} -> status="dev"
- {"major": 2, "minor": {"Staging": {"version": 3, "revision": 1}}} -> status="staging"
- {"major": 2, "minor": {"Stable": {"version": 1}}} -> status="stable"
"""
parts = v_str.split(".")
major = parts[0]
remainder = parts[1] # "dev", "1", "3-rc1"
major = str(v["major"])
minor_map = v["minor"]

if "dev" in remainder:
if "Dev" in minor_map:
return struct(
dotted = v_str,
mangled_java = "{}_{}".format(major, "dev"),
mangled_damlc = "{}{}".format(major, "dev"),
dotted = "{}.dev".format(major),
mangled_java = "{}_dev".format(major),
mangled_damlc = "{}dev".format(major),
major = major,
minor = "dev",
status = "dev",
)

if "-rc" in remainder:
# split "3-rc1" into "3" and "1"
rc_parts = remainder.split("-rc")
minor = rc_parts[0]
revision = rc_parts[1]

if "Staging" in minor_map:
Comment thread
roger-bosman-da marked this conversation as resolved.
Outdated
info = minor_map["Staging"]
minor = str(info["version"])
revision = str(info["revision"])
return struct(
dotted = "{}.{}-staging".format(major, minor),
mangled_java = "{}_{}_staging".format(major, minor),
Expand All @@ -51,14 +48,18 @@ def _parse_version(v_str):
status = "staging",
)

return struct(
dotted = v_str,
mangled_java = "{}_{}".format(major, remainder),
mangled_damlc = "{}{}".format(major, remainder),
major = major,
minor = remainder,
status = "stable",
)
if "Stable" in minor_map:
Comment thread
roger-bosman-da marked this conversation as resolved.
Outdated
minor = str(minor_map["Stable"]["version"])
return struct(
dotted = "{}.{}".format(major, minor),
mangled_java = "{}_{}".format(major, minor),
mangled_damlc = "{}{}".format(major, minor),
major = major,
minor = minor,
status = "stable",
)

fail("Unknown minor version format: {}".format(minor_map))

def _build_versions_struct():
"""
Expand All @@ -67,20 +68,21 @@ def _build_versions_struct():
"""
fields = {}

for val in sorted(DATA["explicitVersions"]):
# explicitVersions is now a list of dicts; deduplicate by mangled_java key
for val in DATA["explicitVersions"]:
version_obj = _parse_version(val)
field_name = version_obj.mangled_java
fields[field_name] = version_obj

for key, val in sorted(DATA["namedVersions"].items()):
for key, val in DATA["namedVersions"].items():
field_name = _camel_to_upper_snake(key)
version_obj = _parse_version(val)
fields[field_name] = version_obj

for key, val_list in sorted(DATA["versionLists"].items()):
for key, val_list in DATA["versionLists"].items():
field_name = _camel_to_upper_snake(key)

# Parse every string in the list into a struct
# Parse every dict in the list into a struct
fields[field_name] = [_parse_version(v) for v in val_list]

return struct(**fields)
Expand Down
Loading
Loading