mukan-ibc/scripts/get-libwasm-version.py
Mukan Erkin Törük 6852832fe8
Some checks failed
CodeQL / Analyze (push) Waiting to run
Docker Build & Push Simapp (main) / docker-build (push) Waiting to run
golangci-lint / lint (push) Waiting to run
Tests / Code Coverage / build (amd64) (push) Waiting to run
Tests / Code Coverage / build (arm64) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[additional-args:-tags="test_e2e" name:e2e path:./e2e]) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[name:08-wasm path:./modules/light-clients/08-wasm]) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[name:ibc-go path:.]) (push) Waiting to run
Deploy to GitHub Pages / Deploy to GitHub Pages (push) Has been cancelled
Buf-Push / push (push) Has been cancelled
initial: sovereign Mukan Network fork
2026-05-11 03:18:28 +03:00

97 lines
3.3 KiB
Python
Executable file

#!/usr/bin/env python3
"""
The purpose of this script is to output the version of the libwasm library that is
specified in the go.mod file in the wasm module.
This should be passed as a build argument to the Dockerfile to determine which static library should
be added.
usage: get-libwasm-version.py [-h] [--get-version | --no-get-version | --get-checksum | --no-get-checksum] [--wasm-library WASM_LIBRARY] [--wasm-go-mod-path WASM_GO_MOD_PATH]
Wasm dockerfile utility
options:
-h, --help show this help message and exit
--get-version, --no-get-version
Get the current version of CosmWasm specified in wasm module.
--get-checksum, --no-get-checksum
Returns the checksum of the libwasm library for the provided version.
--wasm-library WASM_LIBRARY
The name of the library to return the checksum for.
--wasm-go-mod-path WASM_GO_MOD_PATH
The relative path to the go.mod file for the wasm module.
"""
import argparse
import requests
WASM_IMPORT = "github.com/CosmWasm/wasmvm/v2"
def _get_wasm_version(wasm_go_mod_path: str) -> str:
"""get the version of the cosm wasm module from the go.mod file"""
with open(wasm_go_mod_path, "r") as f:
for line in f:
if WASM_IMPORT in line:
return _extract_wasm_version(line)
raise ValueError(f"Could not find {WASM_IMPORT} in {wasm_go_mod_path}")
def _get_wasm_lib_checksum(wasm_version: str, wasm_lib: str) -> str:
"""get the checksum of the wasm library for the given version"""
checksums_url = f"https://github.com/CosmWasm/wasmvm/releases/download/{wasm_version}/checksums.txt"
resp = requests.get(checksums_url)
resp.raise_for_status()
for line in resp.text.splitlines():
if wasm_lib in line:
return line.split(" ")[0].strip()
raise ValueError(f"Could not find {wasm_lib} in {checksums_url}")
def _extract_wasm_version(line: str) -> str:
"""extract the version from a line in the go.mod file"""
return line.split(" ")[1].strip()
def _parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Wasm dockerfile utility")
group = parser.add_mutually_exclusive_group()
group.add_argument(
"--get-version",
action=argparse.BooleanOptionalAction,
help="Get the current version of CosmWasm specified in wasm module.",
)
group.add_argument(
"--get-checksum",
action=argparse.BooleanOptionalAction,
help="Returns the checksum of the libwasm library for the provided version."
)
parser.add_argument(
"--wasm-library",
default="libwasmvm_muslc.x86_64.a",
help="The name of the library to return the checksum for."
)
parser.add_argument(
"--wasm-go-mod-path",
default="modules/light-clients/08-wasm/go.mod",
help="The relative path to the go.mod file for the wasm module."
)
return parser.parse_args()
def main(args: argparse.Namespace):
if args.get_version:
version = _get_wasm_version(args.wasm_go_mod_path)
print(version)
return
if args.get_checksum:
checksum = _get_wasm_lib_checksum(_get_wasm_version(args.wasm_go_mod_path), args.wasm_library)
print(checksum)
return
if __name__ == "__main__":
main(_parse_args())