mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-14 20:48:00 +00:00
Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at bottom): * __->__ #16789 Bump ruff to 0.0.278 and fix new lint errors. I added noqa to all existing RUF012 errors which requires mutable class variables to be annotated with `ClassVar`, as well as all PERF issues. Signed-off-by: Justin Chu <justinchu@microsoft.com>
168 lines
7.6 KiB
Python
168 lines
7.6 KiB
Python
#!/usr/bin/env python3
|
|
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
# Licensed under the MIT License.
|
|
|
|
import os
|
|
import sys
|
|
|
|
# This is a script to validate NPM packages.
|
|
# If package version, publish tag and filename does not fulfill the requirement, an error will raise.
|
|
|
|
# arg.1 - Folder of extracted artifact "onnxruntime-node" for node.js binding
|
|
ort_node_pkg_dir = sys.argv[1]
|
|
# arg.2 - Folder of extracted artifact "onnxruntime-web" for web
|
|
ort_web_pkg_dir = sys.argv[2]
|
|
# arg.3 - Folder of extracted artifact "onnxruntime-react-native" for react native
|
|
ort_react_native_pkg_dir = sys.argv[3]
|
|
# arg.4 - source branch, eg. "refs/heads/master"
|
|
source_branch = sys.argv[4]
|
|
# arg.5 - NPM tag, eg. "", "dev", "latest", "rc"
|
|
tag = sys.argv[5]
|
|
|
|
# print out command line parameters
|
|
print("====== argv ======")
|
|
print("ort_node_pkg_dir:", ort_node_pkg_dir)
|
|
print("ort_web_pkg_dir:", ort_web_pkg_dir)
|
|
print("ort_react_native_pkg_dir:", ort_react_native_pkg_dir)
|
|
print("source_branch:", source_branch)
|
|
print("tag:", tag)
|
|
|
|
# check release flags from environment variables
|
|
RELEASE_NODE = os.environ.get("RELEASE_NODE", "") == "1"
|
|
RELEASE_WEB = os.environ.get("RELEASE_WEB", "") == "1"
|
|
RELEASE_REACT_NATIVE = os.environ.get("RELEASE_REACT_NATIVE", "") == "1"
|
|
|
|
# print ouf release flags
|
|
print("====== flags ======")
|
|
print("RELEASE_NODE:", RELEASE_NODE)
|
|
print("RELEASE_WEB:", RELEASE_WEB)
|
|
print("RELEASE_REACT_NATIVE:", RELEASE_REACT_NATIVE)
|
|
|
|
if not RELEASE_NODE and not RELEASE_WEB and not RELEASE_REACT_NATIVE:
|
|
raise Exception("not releasing any package. exiting.")
|
|
|
|
count_ort_node_common_tgz = 0
|
|
count_ort_node_tgz = 0
|
|
ort_node_common_ver = ""
|
|
ort_node_ver = ""
|
|
|
|
for file in os.listdir(ort_node_pkg_dir):
|
|
if file.startswith("onnxruntime-common-") and file.endswith(".tgz"):
|
|
ort_node_common_ver = file[19:-4]
|
|
count_ort_node_common_tgz += 1
|
|
if file.startswith("onnxruntime-node-") and file.endswith(".tgz"):
|
|
ort_node_ver = file[17:-4]
|
|
count_ort_node_tgz += 1
|
|
|
|
count_ort_web_common_tgz = 0
|
|
count_ort_web_tgz = 0
|
|
ort_web_common_ver = ""
|
|
ort_web_ver = ""
|
|
|
|
for file in os.listdir(ort_web_pkg_dir):
|
|
if file.startswith("onnxruntime-common-") and file.endswith(".tgz"):
|
|
ort_web_common_ver = file[19:-4]
|
|
count_ort_web_common_tgz += 1
|
|
if file.startswith("onnxruntime-web-") and file.endswith(".tgz"):
|
|
ort_web_ver = file[16:-4]
|
|
count_ort_web_tgz += 1
|
|
|
|
count_ort_react_native_common_tgz = 0
|
|
count_ort_react_native_tgz = 0
|
|
ort_react_native_common_ver = ""
|
|
ort_react_native_ver = ""
|
|
|
|
for file in os.listdir(ort_react_native_pkg_dir):
|
|
if file.startswith("onnxruntime-common-") and file.endswith(".tgz"):
|
|
ort_react_native_common_ver = file[19:-4]
|
|
count_ort_react_native_common_tgz += 1
|
|
if file.startswith("onnxruntime-react-native-") and file.endswith(".tgz"):
|
|
ort_react_native_ver = file[25:-4]
|
|
count_ort_react_native_tgz += 1
|
|
|
|
if count_ort_node_common_tgz >= 2:
|
|
raise Exception("expect at most 1 package file for onnxruntime-common in onnxruntime-node folder")
|
|
if count_ort_web_common_tgz >= 2:
|
|
raise Exception("expect at most 1 package file for onnxruntime-common in onnxruntime-web folder")
|
|
if count_ort_react_native_common_tgz >= 2:
|
|
raise Exception("expect at most 1 package file for onnxruntime-common in onnxruntime-react-native folder")
|
|
|
|
if RELEASE_NODE and RELEASE_WEB and count_ort_node_common_tgz != count_ort_web_common_tgz:
|
|
raise Exception("inconsistent package number for onnxruntime-common (onnxruntime-node/onnxruntime-web)")
|
|
if RELEASE_NODE and RELEASE_REACT_NATIVE and count_ort_node_common_tgz != count_ort_react_native_common_tgz:
|
|
raise Exception("inconsistent package number for onnxruntime-common (onnxruntime-node/onnxruntime-react-native)")
|
|
if RELEASE_WEB and RELEASE_REACT_NATIVE and count_ort_web_common_tgz != count_ort_react_native_common_tgz:
|
|
raise Exception("inconsistent package number for onnxruntime-common (onnxruntime-web/onnxruntime-react-native)")
|
|
|
|
if RELEASE_NODE and RELEASE_WEB and ort_node_common_ver != ort_web_common_ver:
|
|
raise Exception("inconsistent version number for onnxruntime-common (onnxruntime-node/onnxruntime-web)")
|
|
if RELEASE_NODE and RELEASE_REACT_NATIVE and ort_node_common_ver != ort_react_native_common_ver:
|
|
raise Exception("inconsistent version number for onnxruntime-common (onnxruntime-node/onnxruntime-react-native)")
|
|
if RELEASE_WEB and RELEASE_REACT_NATIVE and ort_web_common_ver != ort_react_native_common_ver:
|
|
raise Exception("inconsistent version number for onnxruntime-common (onnxruntime-web/onnxruntime-react-native)")
|
|
|
|
ort_common_ver = (
|
|
ort_node_common_ver if RELEASE_NODE else (ort_web_common_ver if RELEASE_WEB else ort_react_native_common_ver)
|
|
)
|
|
|
|
ort_common_from = "" if not ort_common_ver else ("node" if RELEASE_NODE else ("web" if RELEASE_WEB else "react-native"))
|
|
|
|
print("====== output environment variables ======")
|
|
print(f"##vso[task.setvariable variable=ORT_COMMON_FROM]{ort_common_from}")
|
|
|
|
if tag == "latest" or tag == "" or tag == "rc":
|
|
if not RELEASE_NODE or not RELEASE_WEB or not RELEASE_REACT_NATIVE:
|
|
raise Exception("@latest or @rc build must release all packages (node, web, react-native)")
|
|
if count_ort_node_common_tgz != 1:
|
|
raise Exception("expect one package file for onnxruntime-common for release build")
|
|
|
|
if count_ort_node_tgz != 1:
|
|
raise Exception("expect one package file for onnxruntime-node")
|
|
if count_ort_web_tgz != 1:
|
|
raise Exception("expect one package file for onnxruntime-web")
|
|
if count_ort_react_native_tgz != 1:
|
|
raise Exception("expect one package file for onnxruntime-react-native")
|
|
if RELEASE_NODE and RELEASE_WEB and ort_node_ver != ort_web_ver:
|
|
raise Exception("version number is different for onnxruntime-node and onnxruntime-web")
|
|
if RELEASE_NODE and RELEASE_REACT_NATIVE and ort_node_ver != ort_react_native_ver:
|
|
raise Exception("version number is different for onnxruntime-node and onnxruntime-react-native")
|
|
if RELEASE_WEB and RELEASE_REACT_NATIVE and ort_web_ver != ort_react_native_ver:
|
|
raise Exception("version number is different for onnxruntime-web and onnxruntime-react-native")
|
|
|
|
print("====== validated versions ======")
|
|
print(f"source_branch={source_branch}")
|
|
print(f"tag={tag}")
|
|
print(f"ort_common_ver={ort_common_ver}")
|
|
print(f"ort_node_ver={ort_node_ver}")
|
|
print(f"ort_web_ver={ort_web_ver}")
|
|
print(f"ort_react_native_ver={ort_react_native_ver}")
|
|
|
|
if tag == "latest" or tag == "":
|
|
print("Publishing @latest ...")
|
|
if not source_branch.startswith("refs/heads/rel-"):
|
|
raise Exception('@latest build must publish from source branch "refs/heads/rel-*"')
|
|
if (
|
|
"-" in ort_common_ver.replace("-rev", "")
|
|
or "-" in ort_web_ver.replace("-rev", "")
|
|
or "-" in ort_react_native_ver.replace("-rev", "")
|
|
):
|
|
raise Exception('@latest build version cannot contain "-" (unless -rev)')
|
|
if tag == "rc":
|
|
print("Publishing @rc ...")
|
|
if not source_branch.startswith("refs/heads/rel-"):
|
|
raise Exception('@rc build must publish from source branch "refs/heads/rel-*"')
|
|
if "-rc" not in ort_web_ver:
|
|
raise Exception('@rc build version should contain "-rc"')
|
|
if "-rc" not in ort_react_native_ver:
|
|
raise Exception('@rc build version should contain "-rc"')
|
|
|
|
if (
|
|
"-" not in ort_common_ver.replace("-rev", "")
|
|
and "-" not in ort_web_ver.replace("-rev", "")
|
|
and "-" not in ort_react_native_ver.replace("-rev", "")
|
|
and "+" not in ort_common_ver.replace("-rev", "")
|
|
and "+" not in ort_web_ver.replace("-rev", "")
|
|
and "+" not in ort_react_native_ver.replace("-rev", "")
|
|
):
|
|
if tag != "latest" and tag != "":
|
|
raise Exception("default version without decorator can only be published in @latest tag")
|