@@ -59,17 +59,16 @@ class WinPythonDistributionBuilder:
59
59
60
60
def __init__ (self , build_number : int , release_level : str , target_directory : Path , wheels_directory : Path ,
61
61
tools_directories : list [Path ] = None , verbose : bool = False ,
62
- base_directory : Path = None , install_options : list [str ] = None , flavor : str = "" ):
62
+ install_options : list [str ] = None , flavor : str = "" ):
63
63
"""
64
64
Initializes the WinPythonDistributionBuilder.
65
65
Args:
66
66
build_number: The build number (integer).
67
67
release_level: The release level (e.g., "beta", "").
68
- target_directory: The base directory where WinPython will be created.
68
+ target_directory: The base directory below which WinPython will be created.
69
69
wheels_directory: Directory containing wheel files for packages.
70
70
tools_directories: List of directories containing development tools to include.
71
71
verbose: Enable verbose output.
72
- base_directory: Base directory for building (optional, for relative paths).
73
72
install_options: Additional pip install options.
74
73
flavor: WinPython flavor (e.g., "Barebone").
75
74
"""
@@ -81,7 +80,6 @@ def __init__(self, build_number: int, release_level: str, target_directory: Path
81
80
self .verbose = verbose
82
81
self .winpython_directory : Path | None = None
83
82
self .distribution : wppm .Distribution | None = None
84
- self .base_directory = base_directory
85
83
self .install_options = install_options or []
86
84
self .flavor = flavor
87
85
self .python_zip_file : Path = self ._get_python_zip_file ()
@@ -132,11 +130,11 @@ def architecture_bits(self) -> int:
132
130
def create_installer_7zip (self , installer_type : str = "exe" , compression = "mx5" ):
133
131
"""Creates a WinPython installer using 7-Zip: "exe", "7z", "zip")"""
134
132
self ._print_action (f"Creating WinPython installer ({ installer_type } )" )
135
- if installer_type not in ["exe" , "7z" , "zip" ]:
136
- return
137
133
DISTDIR = self .winpython_directory
138
134
filename_stem = f"Winpython{ self .architecture_bits } -{ self .python_full_version } .{ self .build_number } { self .flavor } { self .release_level } "
139
135
fullfilename = DISTDIR .parent / (filename_stem + "." + installer_type )
136
+ if installer_type not in ["exe" , "7z" , "zip" ]:
137
+ return
140
138
sfx_option = "-sfx7z.sfx" if installer_type == "exe" else ""
141
139
zip_option = "-tzip" if installer_type == "zip" else ""
142
140
compress_level = "mx5" if compression == "" else compression
@@ -182,12 +180,12 @@ def _create_initial_batch_scripts(self):
182
180
with open (self .winpython_directory / "scripts" / "env.ini" , "w" ) as f :
183
181
f .writelines ([f'{ a } ={ b } \n ' for a , b in init_variables ])
184
182
185
- def build (self , rebuild : bool = True , winpy_dirname : str = None ):
183
+ def build (self , rebuild : bool = True , winpy_dir : Path = None ):
186
184
"""Make or finalise WinPython distribution in the target directory"""
187
185
print (f"Building WinPython with Python archive: { self .python_zip_file .name } " )
188
- if winpy_dirname is None :
186
+ if winpy_dir is None :
189
187
raise RuntimeError ("WinPython base directory to create is undefined" )
190
- self .winpython_directory = self . target_directory / winpy_dirname
188
+ self .winpython_directory = winpy_dir
191
189
192
190
if rebuild :
193
191
self ._print_action (f"Creating WinPython { self .winpython_directory } base directory" )
@@ -222,7 +220,7 @@ def build(self, rebuild: bool = True, winpy_dirname: str = None):
222
220
shutil .copyfile (output_markdown_filename , str (Path (CHANGELOGS_DIRECTORY ) / Path (output_markdown_filename ).name ))
223
221
diff .write_changelog (self .winpyver2 , None , CHANGELOGS_DIRECTORY , self .flavor , self .distribution .architecture , basedir = self .winpython_directory .parent )
224
222
225
- def make_all (build_number : int , release_level : str , pyver : str , architecture : int , basedir : Path ,
223
+ def make_all (build_number : int , release_level : str , basedir_wpy : Path = None ,
226
224
verbose : bool = False , rebuild : bool = True , create_installer : str = "True" , install_options = ["--no-index" ],
227
225
flavor : str = "" , find_links : str | list [Path ] = None ,
228
226
source_dirs : Path = None , toolsdirs : str | list [Path ] = None ,
@@ -233,9 +231,7 @@ def make_all(build_number: int, release_level: str, pyver: str, architecture: in
233
231
Args:
234
232
build_number: build number [int]
235
233
release_level: release level (e.g. 'beta1', '') [str]
236
- pyver: python version ('3.4' or 3.5')
237
- architecture: [int] (32 or 64)
238
- basedir: where to create the build (r'D:\Winpython\b asedir34')
234
+ basedir_wpy: top directory of the build (c:\...\Wpy...)
239
235
verbose: Enable verbose output (bool).
240
236
rebuild: Whether to rebuild the distribution (bool).
241
237
create_installer: Type of installer to create (str).
@@ -246,37 +242,31 @@ def make_all(build_number: int, release_level: str, pyver: str, architecture: in
246
242
toolsdirs: Directory with development tools r'D:\WinPython\b asedir34\t .Slim'
247
243
python_target_release: Target Python release (str).
248
244
"""
249
- assert basedir is not None , "The *basedir* directory must be specified"
250
- assert architecture in (32 , 64 )
245
+ assert basedir_wpy is not None , "The *winpython_dirname* directory must be specified"
251
246
252
247
tools_dirs_list = parse_list_argument (toolsdirs , "," )
253
248
install_options_list = parse_list_argument (install_options , " " )
254
249
find_links_dirs_list = parse_list_argument (find_links , "," )
255
250
find_links_options = [f"--find-links={ link } " for link in find_links_dirs_list + [source_dirs ]]
256
- build_directory = Path (basedir ) / ( "bu" + flavor )
251
+ winpy_dir = Path (basedir_wpy )
257
252
258
253
if rebuild :
259
- utils .print_box (f"Making WinPython { architecture } bits at { Path ( basedir ) / ( 'bu' + flavor ) } " )
260
- os .makedirs (build_directory , exist_ok = True )
254
+ utils .print_box (f"Making WinPython at { winpy_dir } " )
255
+ os .makedirs (winpy_dir , exist_ok = True )
261
256
262
257
builder = WinPythonDistributionBuilder (
263
- build_number , release_level , build_directory , wheels_directory = source_dirs ,
258
+ build_number , release_level , winpy_dir . parent , wheels_directory = source_dirs ,
264
259
tools_directories = [Path (d ) for d in tools_dirs_list ],
265
- verbose = verbose , base_directory = basedir ,
260
+ verbose = verbose ,
266
261
install_options = install_options_list + find_links_options ,
267
262
flavor = flavor
268
263
)
269
264
# define the directory where to create the distro
270
265
python_minor_version_str = "" .join (builder .python_name .replace (".amd64" , "" ).split ("." )[- 2 :- 1 ])
271
266
while not python_minor_version_str .isdigit () and len (python_minor_version_str ) > 0 :
272
267
python_minor_version_str = python_minor_version_str [:- 1 ]
273
- # simplify for PyPy
274
- if python_target_release is not None :
275
- winpython_dirname = f"WPy{ architecture } -{ python_target_release } { build_number } { release_level } "
276
- else :
277
- winpython_dirname = f"WPy{ architecture } -{ pyver .replace ('.' , '' )} { python_minor_version_str } { build_number } { release_level } "
278
268
279
- builder .build (rebuild = rebuild , winpy_dirname = winpython_dirname )
269
+ builder .build (rebuild = rebuild , winpy_dir = winpy_dir )
280
270
281
271
for commmand in create_installer .lower ().replace ("7zip" ,".exe" ).split ('.' ):
282
272
installer_type , compression = (commmand + "-" ).split ("-" )[:2 ]
@@ -286,14 +276,12 @@ def make_all(build_number: int, release_level: str, pyver: str, architecture: in
286
276
# DO create only one Winpython distribution at a time
287
277
make_all (
288
278
build_number = 1 ,
289
- release_level = "build3" ,
290
- pyver = "3.4" ,
291
- basedir = r"D:\Winpython\basedir34" ,
279
+ release_level = "b3" ,
280
+ basedir_wpy = r"D:\WinPython\bd314\budot\WPy64-31401b3" ,
292
281
verbose = True ,
293
- architecture = 64 ,
294
- flavor = "Barebone" ,
282
+ flavor = "dot" ,
295
283
install_options = r"--no-index --pre --trusted-host=None" ,
296
284
find_links = r"D:\Winpython\packages.srcreq" ,
297
- source_dirs = r"D:\WinPython\basedir34 \packages.win-amd64" ,
298
- toolsdirs = r"D:\WinPython\basedir34 \t.Slim" ,
285
+ source_dirs = r"D:\WinPython\bd314 \packages.win-amd64" ,
286
+ toolsdirs = r"D:\WinPython\bd314 \t.Slim" ,
299
287
)
0 commit comments