Skip to content

Commit 53b46c4

Browse files
authored
Merge pull request #1710 from stonebig/master
next build chain that replaces DOS scripts per Python+TOML file
2 parents efc0285 + 4a3e60b commit 53b46c4

File tree

4 files changed

+162
-6
lines changed

4 files changed

+162
-6
lines changed

build_winpython_meta.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
import os
2+
import sys
3+
# Use tomllib if available (Python 3.11+), otherwise fall back to tomli
4+
try:
5+
import tomllib # Python 3.11+
6+
except ImportError:
7+
try:
8+
import tomli as tomllib # For older Python versions
9+
except ImportError:
10+
print("Please install tomli for Python < 3.11: pip install tomli")
11+
sys.exit(1)
12+
13+
#import yaml
14+
import subprocess
15+
from pathlib import Path
16+
17+
def load_builds(config_file):
18+
with open(config_file, "rb") as f:
19+
config = tomllib.load(f)
20+
builds = config["builds"]
21+
python_versions = config.get("pythons", {})
22+
return builds, python_versions
23+
#with open(config_file, "r", encoding="utf-8") as f:
24+
# return yaml.safe_load(f)["builds"]
25+
26+
def run_build(build, python_versions):
27+
print(f"\n=== Building WinPython: {build['name']} ===")
28+
print(build)
29+
30+
root_dir_for_builds = build["root_dir_for_builds"]
31+
my_python_target = build["python_target"]
32+
my_flavor = build["flavor"]
33+
my_arch = str(build["arch"])
34+
my_create_installer = build.get("create_installer", "True")
35+
my_requirements = build.get("requirements", "")
36+
my_source_dirs = build.get("source_dirs", "")
37+
my_find_links = build.get("find_links", "")
38+
my_toolsdirs = build.get("toolsdirs", "")
39+
#my_install_options = build.get("install_options", "")
40+
wheelhousereq = build.get("wheelhousereq", "")
41+
42+
# Get Python release info from TOML [pythons]
43+
py_target = my_python_target
44+
vinfo = python_versions.get(py_target, {})
45+
my_python_target_release = vinfo.get("python_target_release", "")
46+
my_release = vinfo.get("release", "")
47+
my_release_level = vinfo.get("my_release_level", "b0")
48+
mandatory_requirements = vinfo.get("mandatory_requirements", os.path.join(os.getcwd(), "mandatory_requirements.txt"))
49+
50+
# Get Python release info from TOML [pythons]
51+
my_constraints = build.get("my_constraints", r"C:\WinP\constraints.txt")
52+
target_python_exe = build.get("target_python_exe", "python.exe")
53+
54+
# Build directory logic
55+
my_basedir = f"{root_dir_for_builds}\\bd{my_python_target}"
56+
my_WINPYDIRBASE = f"{my_basedir}\\bu{my_flavor}\\WPy{my_arch}-{my_python_target_release}{my_release}{my_release_level}"
57+
58+
# Build env paths (customize as needed) already defined per the launcher of that script...
59+
60+
my_python_exe = Path(sys.executable)
61+
my_buildenvi = str(my_python_exe.parent)
62+
63+
my_archive_dir = os.path.join(os.getcwd(), "WinPython_build_logs")
64+
os.makedirs(my_archive_dir, exist_ok=True)
65+
66+
my_requirements_pre = build.get("my_requirements_pre", mandatory_requirements)
67+
68+
# Build command
69+
build_cmd = [
70+
str(my_python_exe),
71+
"-m", "winpython.build_winpython",
72+
"--buildenv", my_buildenvi,
73+
"--python-target", my_python_target,
74+
"--release", my_release,
75+
"--release-level", my_release_level,
76+
"--winpydirbase", my_WINPYDIRBASE,
77+
"--flavor", my_flavor,
78+
"--source_dirs", my_source_dirs,
79+
"--tools_dirs", my_toolsdirs,
80+
"--log-dir", my_archive_dir,
81+
"--mandatory-req", mandatory_requirements,
82+
"--pre-req", my_requirements_pre,
83+
"--requirements", my_requirements,
84+
"--constraints", my_constraints,
85+
"--find-links", my_find_links,
86+
"--wheelhousereq", wheelhousereq,
87+
"--create-installer", my_create_installer,
88+
#"--install-options", env["my_install_options"],
89+
]
90+
91+
print("Running build command:")
92+
print(" ".join(build_cmd))
93+
subprocess.run(build_cmd, cwd=os.getcwd(), check=False)
94+
95+
def main():
96+
config_file = sys.argv[1] if len(sys.argv) > 1 else "winpython_buildsZZZ.toml"
97+
builds, python_versions = load_builds(config_file)
98+
for build in builds:
99+
run_build(build, python_versions)
100+
101+
if __name__ == "__main__":
102+
main()

constraints.txt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ numba>=0.53.1
299299
numcodecs>=0.7.3
300300
numdifftools>=0.9.39
301301
numexpr>=2.7.3
302-
numpy>=1.20.2+mkl
302+
numpy>=1.20.2
303303
numpydoc>=1.1.0
304304
oct2py>=5.2.0
305305
octave-kernel>=0.32.0
@@ -425,7 +425,7 @@ pytest>=6.2.3
425425
python-baseconv>=1.2.2
426426
python-dateutil>=2.8.1
427427
python-dotenv>=0.15.0
428-
python-hdf4>=0.10.0+dummy
428+
python-hdf4>=0.10.0
429429
python-jsonrpc-server>=0.4.0
430430
python-language-server>=0.36.2
431431
python-Levenshtein>=0.12.2
@@ -547,15 +547,14 @@ tinycss>=0.4
547547
toml>=0.10.2
548548
toolz>=0.11.1
549549

550-
torch>=1.8.1+cpu
550+
torch>=1.8.1
551551
torchaudio>=0.8.1
552-
torchvision>=0.8.2+cpu
553-
552+
torchvision>=0.8.2
554553
tornado>=6.1
555554
tqdm>=4.59.0
556555
traitlets>=5.0.5
557556
traittypes>=0.2.1
558-
tranquilizer>=0.5.0+1.gff8dd5f
557+
tranquilizer>=0.5.0
559558
trio>=0.18.0
560559
trio-asyncio>=0.12.0
561560
twine>=3.4.1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"C:\WinPdev\WPy64-310111\python-3.10.11.amd64\python.exe" build_winpython_meta.py %1

winpython_builds_bd13.toml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
[pythons]
2+
"311" = { python_target_release = "3119", release = "2", my_release_level = "b3" }
3+
"312" = { python_target_release = "31210", release = "2", my_release_level = "b3" }
4+
"313" = { python_target_release = "3135", release = "1", my_release_level = "b3" }
5+
"314" = { python_target_release = "3140", release = "1", my_release_level = "rc1" }
6+
7+
8+
[[builds]]
9+
name = "dot"
10+
root_dir_for_builds = "C:\\Winp"
11+
python_target = "313"
12+
pyver = "3.13"
13+
flavor = "test"
14+
arch = "64"
15+
create_installer = "7zip.zip"
16+
preclear_build_directory = "Yes"
17+
requirements = "C:\\Winp\\bd313\\dot_requirements.txt"
18+
source_dirs = "C:\\Winp\\bd313\\packages.win-amd64"
19+
find_links = "C:\\Winp\\packages.srcreq"
20+
toolsdirs = "C:\\Winp\\bdTools\\Tools.dot"
21+
install_options = "--no-index --pre --trusted-host=None"
22+
23+
24+
[[builds]]
25+
name = "slim"
26+
root_dir_for_builds = "C:\\Winp"
27+
python_target = "313"
28+
pyver = "3.13"
29+
flavor = "slim"
30+
arch = "64"
31+
create_installer = "7zip.7z"
32+
preclear_build_directory = "Yes"
33+
requirements = "C:\\Winp\\bd313\\requirements64_slim.txt"
34+
source_dirs = "C:\\Winp\\bd313\\packages.win-amd64"
35+
find_links = "C:\\Winp\\packages.srcreq"
36+
toolsdirs = "C:\\Winp\\bdTools\\tools64_pandoc_alone"
37+
install_options = "--no-index --pre --trusted-host=None"
38+
39+
40+
[[builds]]
41+
name = "whl"
42+
root_dir_for_builds = "C:\\Winp"
43+
python_target = "313"
44+
pyver = "3.13"
45+
flavor = "whl"
46+
arch = "64"
47+
create_installer = ".7z-mx9"
48+
preclear_build_directory = "Yes"
49+
requirements = "C:\\Winp\\bd313\\dot_requirements.txt"
50+
source_dirs = "C:\\Winp\\bd313\\packages.win-amd64"
51+
find_links = "C:\\Winp\\packages.srcreq"
52+
toolsdirs = "C:\\Winp\\bdTools\\Tools.dot"
53+
install_options = "--no-index --pre --trusted-host=None"
54+
wheelhousereq = "C:\\Winp\\bd313\\requirements64_whl.txt"

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy