impr: prebuild update

This commit is contained in:
283375 2023-10-23 13:28:06 +08:00
parent 90e66a43fe
commit 7dee8114bf
Signed by: 283375
SSH Key Fingerprint: SHA256:UcX0qg6ZOSDOeieKPGokA5h7soykG61nz2uxuQgVLSk

View File

@ -1,70 +1,87 @@
import os import os
import platform
import subprocess
from importlib import metadata from importlib import metadata
from pathlib import Path from pathlib import Path
# fill VERSION file
versionFile = Path("ui/resources/VERSION")
assert versionFile.exists()
versionTexts = [] def getGitDesc():
gitDescribe = subprocess.run(
["git", "describe", "--tags", "--long"],
capture_output=True,
encoding="utf-8",
)
if gitDescribe.returncode == 0:
return gitDescribe.stdout.replace("\n", "")
projectVersionText = "arcaea-offline-pyside-ui\n" # describe failed, try rev-parse
gitDescribe = os.popen("git describe --tags --long") gitRevParse = subprocess.run(
gitDescribeContent = gitDescribe.read().replace("\n", "") ["git", "rev-parse", "--short", "HEAD"],
if gitDescribe.close() is None: capture_output=True,
projectVersionText += f"{gitDescribeContent}" encoding="utf-8",
else: )
gitRevParse = os.popen("git rev-parse --short HEAD") if gitRevParse.returncode == 0:
gitRevParseContent = gitRevParse.read().replace("\n", "") return f"commit {gitRevParse.stdout}".replace("\n", "")
projectVersionText += f"commit {gitRevParseContent}"
gitRevParse.close()
projectVersionText += "\n"
versionTexts.append(projectVersionText) return "version/commit unknown"
# detect pip def getBuildToolsVer():
pipName = None texts = []
possiblePipNames = ["pip3", "pip"] possibleBuildTools = ["Nuitka", "pyinstaller"]
for possiblePipName in possiblePipNames: for possibleBuildTool in possibleBuildTools:
result = os.popen(possiblePipName).read() try:
if ( version = metadata.version(possibleBuildTool)
"<command> [options]" in result texts.append(f"{possibleBuildTool}=={version}")
and "install" in result except metadata.PackageNotFoundError:
and "--upgrade" in result texts.append(f"{possibleBuildTool} not installed")
): return ", ".join(texts)
pipName = possiblePipName
break
# if possiblePipName: def writeVersionFile():
# pipFreezeLines = os.popen(f"{possiblePipName} freeze").read().split("\n") versionFile = Path("ui/resources/VERSION")
# text = [ assert versionFile.exists()
# pipFreezeResult
# for pipFreezeResult in pipFreezeLines
# if (
# "arcaea-offline" in pipFreezeResult
# or "PySide6" in pipFreezeResult
# or "exif" in pipFreezeResult
# or "opencv-python" in pipFreezeResult
# or "SQLAlchemy" in pipFreezeResult
# )
# ]
# versionTexts.append("\n".join(text))
importLibTexts = [ versionText = (
"arcaea-offline-pyside-ui\n{gitDesc}\n{buildToolsVer}\n\n"
"{pythonVer}\n\n"
"{depsVer}\n"
)
gitDesc = getGitDesc()
buildToolsVer = getBuildToolsVer()
pythonVer = f"{platform.python_implementation()} {platform.python_version()} ({platform.python_build()[0]})"
importLibTexts = [
f"{module}=={metadata.version(module)}" f"{module}=={metadata.version(module)}"
for module in [ for module in sorted(
[
"arcaea-offline", "arcaea-offline",
"arcaea-offline-ocr", "arcaea-offline-ocr",
"exif", "exif",
"numpy",
"opencv-python", "opencv-python",
"Pillow",
"PySide6", "PySide6",
"SQLAlchemy", "SQLAlchemy",
"SQLAlchemy-Utils", "SQLAlchemy-Utils",
"Whoosh",
],
key=lambda s: s.lower(),
)
] ]
] importLibText = "\n".join(importLibTexts)
versionTexts.append("\n".join(importLibTexts))
with versionFile.open("w", encoding="utf-8") as vf: with versionFile.open("w", encoding="utf-8") as vf:
vf.write("\n".join(versionTexts)) vf.write(
versionText.format(
gitDesc=gitDesc,
buildToolsVer=buildToolsVer,
pythonVer=pythonVer,
depsVer=importLibText,
)
)
writeVersionFile()