Skip to content

Commit ef3b2f7

Browse files
authored
Merge pull request winpython#1495 from stonebig/master
simplify generate_a_winpython_distro.bat
2 parents f36131d + 1462d7c commit ef3b2f7

File tree

1 file changed

+70
-272
lines changed

1 file changed

+70
-272
lines changed

generate_a_winpython_distro.bat

Lines changed: 70 additions & 272 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,18 @@
1-
rem to launch from a winpython package directory, where 'make.py' is
1+
rem generate_a_winpython_distro.bat: to be launched from a winpython directory, where 'make.py' is
22
@echo on
33

4-
rem *****************************
5-
rem 2020-07-05: install msvc_runtime before packages that may want to compile
6-
rem 2020-12-05 : add a constraints.txt file from a recent pip list
7-
rem 2021-03-20 : track successes packages combination are archived for future contraint update
8-
rem 2021-04-22 : path PyPy3 (as we don't try to copy PyPy3.exe to Python.exe)
9-
rem 2023-08-21a: add a pre_step with my_requirements_pre.txt + my_find_links_pre
10-
rem 2024-05-12a: use python -m pip instead of pip , and remove --upgrade %new_resolver%
11-
rem 2024-09-15a: compactify for lisiblity
12-
rem 2025-03-02 : remove step 2.3 (pre-build), and 2.8 (post-patch) as we simplify to only wheels
13-
rem *****************************
14-
15-
rem algorithm:
16-
rem 0.0 Initialize variables
17-
rem 1.0 Do 2021-04-22 : patch PyPy3 (as we don't try to copy PyPy3.exe to Python.exe)
18-
rem 2 a Pre-clear of previous build infrastructure
19-
rem 2.0 Create a new build
20-
rem 2.1 Create basic build infrastructure
21-
rem 2.2 check infrastructure is in place
22-
rem 2.4 add packages pre_requirements (if any)
23-
rem 2.5 add requirement packages
24-
rem 2.9 archive success
25-
rem 3.0 Generate Changelog and binaries
26-
27-
rem "my_release_level" is optionaly set per the calling program *********************************************
28-
rem set my_release_level=
29-
30-
rem ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! =
31-
32-
if "%my_release_level%"=="" set my_release_level=
33-
34-
rem ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! = ! =
35-
36-
rem "my_create_installer" is optionaly set per the calling program
4+
REM Initialize variables
5+
if "%my_release_level%"=="" set my_release_level=b1
376
if "%my_create_installer%"=="" set my_create_installer=True
387

8+
rem Set archive directory and log file
9+
set my_archive_dir=%~dp0WinPython_build_logs
10+
if not exist %my_archive_dir% mkdir %my_archive_dir%
3911

40-
rem this is pre-initialised per the program calling this .bat
41-
rem set my_original_path=%path%
42-
rem set my_root_dir_for_builds=D:\WinP
43-
44-
rem set my_python_target=34
45-
rem set my_pyver=3.4
46-
rem set my_flavor=slim
47-
rem set my_release=84
48-
49-
rem set my_find_link=C:\WinP\packages.srcreq
50-
51-
rem set my_arch=64
52-
rem set my_preclear_build_directory=Yes
53-
54-
rem set my_requirements_pre=C:\WinP\bd311\requirements_mkl_pre.txt
55-
rem set my_find_links_pre=C:\WinP\packages_mkl.srcreq
56-
57-
rem set my_requirements=C:\Winpents=d:\my_req1.txt
58-
59-
rem set my_source_dirs=D:\WinPython\bd34\packages.src D:\WinPython\bd34\packages.win32.Slim
60-
rem set my_toolsdirs=D:\WinPython\bd34\Tools.Slim
61-
rem set my_docsdirs=D:\WinPython\bd34\docs.Slim
62-
63-
64-
65-
echo ----------------------------------------
66-
echo 0.0 (%date% %time%) Initialize variables
67-
echo ----------------------------------------
68-
12+
set my_time=%time:~0,5%
13+
set my_time=%my_time::=_%
14+
set my_time=%my_time: =0%
15+
set my_archive_log=%my_archive_dir%\build_%my_pyver%._.%my_release%%my_flavor%_%my_release_level%_of_%date:/=-%at_%my_time%.txt
6916

7017
set my_basedir=%my_root_dir_for_builds%\bd%my_python_target%
7118

@@ -77,248 +24,99 @@ if "%my_constraints%"=="" set my_constraints=C:\WinP\constraints.txt
7724
rem 2021-04-22 : path PyPy3 (as we don't try to copy PyPy3.exe to Python.exe)
7825
if "%target_python_exe%"=="" set target_python_exe=python.exe
7926

80-
81-
if %my_python_target%==310 (
82-
set my_python_target_release=31011
83-
set my_release=2
84-
)
85-
86-
if %my_python_target%==311 (
87-
set my_python_target_release=3119
88-
set my_release=1
27+
rem Set Python target release based on my_python_target
28+
if %my_python_target%==311 set my_python_target_release=3119& set my_release=1
29+
if %my_python_target%==312 set my_python_target_release=3129& set my_release=1
30+
if %my_python_target%==313 set my_python_target_release=3132& set my_release=1
31+
if %my_python_target%==314 set my_python_target_release=3140& set my_release=0
32+
33+
echo -------------------------------------- >>%my_archive_log%
34+
echo (%date% %time%) preparing winPython for %my_pyver% (%my_python_target%)release %my_release%%my_flavor% (%my_release_level%) *** %my_arch% bit ***>>%my_archive_log%
35+
echo -------------------------------------- >>%my_archive_log%
36+
37+
rem Pre-clear previous build infrastructure
38+
if "%my_preclear_build_directory%"=="Yes" (
39+
echo "(%date% %time%) Pre-clear previous build infrastructure">>%my_archive_log%
40+
del -y %userprofile%\.jupyter\jupyter_notebook_config.py
41+
cd /D %my_root_dir_for_builds%\bd%my_python_target%
42+
set build_det=\%my_flavor%
43+
if "%my_flavor%"=="" set build_det=
44+
dir %build_det%
45+
ren bu%my_flavor% bu%my_flavor%_old
46+
start rmdir /S /Q bu%my_flavor%_old
47+
rmdir /S /Q bu%my_flavor%
48+
rmdir /S /Q dist
8949
)
9050

91-
if %my_python_target%==312 (
92-
set my_python_target_release=3129
93-
set my_release=1
94-
)
95-
96-
if %my_python_target%==313 (
97-
set my_python_target_release=3132
98-
set my_release=1
99-
)
100-
if %my_python_target%==314 (
101-
set my_python_target_release=3140
102-
set my_release=0
103-
)
104-
105-
106-
rem set my_install_options=--no-index --pre
107-
108-
set my_day=%date:/=-%
109-
set my_time=%time:~0,5%
110-
set my_time=%my_time::=_%
111-
set my_time=%my_time: =0%
112-
113-
set my_archive_dir=%~dp0WinPython_build_logs
114-
if not exist %my_archive_dir% mkdir %my_archive_dir%
115-
116-
set my_archive_log=%my_archive_dir%\build_%my_pyver%._.%my_release%%my_flavor%_%my_release_level%_of_%my_day%_at_%my_time%.txt
117-
118-
119-
echo ----------------------------------------
120-
echo preparing winPython for %my_pyver% (%my_python_target%)release %my_release%%my_flavor% (%my_release_level%) *** %my_arch% bit ***
121-
echo ----------------------------------------
122-
echo ---------------------------------------- >>%my_archive_log%
123-
echo (%date% %time%) preparing winPython for %my_pyver% (%my_python_target%)release %my_release%%my_flavor% (%my_release_level%) *** %my_arch% bit ***>>%my_archive_log%
124-
echo ---------------------------------------- >>%my_archive_log%
125-
126-
127-
if not "%my_preclear_build_directory%"=="Yes" goto no_preclear
128-
129-
130-
echo ----------------------------------------
131-
echo 1.0 (%date% %time%) Do a Pre-clear of previous build infrastructure
132-
echo ----------------------------------------
133-
echo ---------------------------------------- >>%my_archive_log%
134-
echo 1.0 (%date% %time%) Do a Pre-clear of previous build infrastructure>>%my_archive_log%
135-
echo ---------------------------------------- >>%my_archive_log%
136-
137-
rem 2019-05-10 PATCH for build problem (asking permission to overwrite the file)
138-
del -y %userprofile%\.jupyter\jupyter_notebook_config.py
139-
140-
cd /D %my_root_dir_for_builds%\bd%my_python_target%
141-
142-
set build_det=\%my_flavor%
143-
if "%my_flavor%"=="" set build_det=
144-
145-
dir %build_det%
146-
147-
rem 2021-02-13 workaround to hard to remove json files
148-
echo ren bu%my_flavor% bu%my_flavor%_old
149-
ren bu%my_flavor% bu%my_flavor%_old
150-
151-
rem pause
152-
start rmdir /S /Q bu%my_flavor%_old
153-
154-
155-
echo rmdir /S /Q bu%my_flavor%
156-
rem pause
157-
rmdir /S /Q bu%my_flavor%
158-
rmdir /S /Q bu%my_flavor%
159-
rmdir /S /Q bu%my_flavor%
160-
rmdir /S /Q bu%my_flavor%
161-
rmdir /S /Q bu%my_flavor%
162-
rmdir /S /Q dist
163-
164-
echo %date% %time%
165-
echo %date% %time%>>%my_archive_log%
166-
167-
:no_preclear
168-
169-
170-
echo ----------------------------------------
171-
echo 2.0 (%date% %time%) Create a new build
172-
echo ---------------------------------------- >>%my_archive_log%
173-
echo 2.0 (%date% %time%) Create a new build>>%my_archive_log%
174-
echo ---------------------------------------- >>%my_archive_log%
175-
176-
177-
echo cd /D %~dp0>>%my_archive_log%
51+
REM Create a new build
52+
echo -------------------------------------- >>%my_archive_log%
53+
echo "(%date% %time%) Create a new build">>%my_archive_log%
54+
echo -------------------------------------- >>%my_archive_log%
17855
cd /D %~dp0
179-
180-
echo set path=%my_original_path%>>%my_archive_log%
18156
set path=%my_original_path%
182-
183-
echo call %my_buildenv%\scripts\env.bat>>%my_archive_log%
18457
call %my_buildenv%\scripts\env.bat
58+
@echo on
18559

186-
echo ----------------------------------------
187-
echo 2.1 (%date% %time%) Create basic build infrastructure
188-
echo ----------------------------------------
189-
echo ---------------------------------------- >>%my_archive_log%
190-
echo 2.1 (%date% %time%) Create basic build infrastructure>>%my_archive_log%
191-
echo ---------------------------------------- >>%my_archive_log%
192-
193-
rem at First step 2.1
194-
rem we don't use any %my_requirements%
195-
rem we don't create installer
196-
rem we use legacy python build cd /D %~dp0
197-
198-
set my_buildenv_path=%path%
199-
200-
echo python.exe -c "from make import *;make_all(%my_release%, '%my_release_level%', pyver='%my_pyver%', basedir=r'%my_basedir%', verbose=True, architecture=%my_arch%, flavor='%my_flavor%', install_options=r'%my_install_options%', find_links=r'%my_find_links%', source_dirs=r'%my_source_dirs%', toolsdirs=r'%my_toolsdirs%', docsdirs=r'%my_docsdirs%', create_installer='False', python_target_release='%my_python_target_release%')">>%my_archive_log%
201-
202-
echo python.exe -c "from make import *;make_all(%my_release%, '%my_release_level%', pyver='%my_pyver%', basedir=r'%my_basedir%', verbose=True, architecture=%my_arch%, flavor='%my_flavor%', install_options=r'%my_install_options%', find_links=r'%my_find_links%', source_dirs=r'%my_source_dirs%', toolsdirs=r'%my_toolsdirs%', docsdirs=r'%my_docsdirs%', create_installer='False', python_target_release='%my_python_target_release%')"
203-
204-
rem pause
205-
60+
REM Create basic build infrastructure
61+
echo "(%date% %time%) Create basic build infrastructure">>%my_archive_log%
20662
python.exe -c "from make import *;make_all(%my_release%, '%my_release_level%', pyver='%my_pyver%', basedir=r'%my_basedir%', verbose=True, architecture=%my_arch%, flavor='%my_flavor%', install_options=r'%my_install_options%', find_links=r'%my_find_links%', source_dirs=r'%my_source_dirs%', toolsdirs=r'%my_toolsdirs%', docsdirs=r'%my_docsdirs%', create_installer='False', python_target_release='%my_python_target_release%')">>%my_archive_log%
20763

208-
209-
echo ----------------------------------------
210-
echo 2.2 (%date% %time%) check infrastructure is in place
211-
echo ----------------------------------------
212-
echo ---------------------------------------- >>%my_archive_log%
213-
echo 2.2 (%date% %time%) check infrastructure is in place>>%my_archive_log%
214-
echo ---------------------------------------- >>%my_archive_log%
215-
216-
@echo on
64+
REM Check infrastructure is in place
65+
echo "(%date% %time%) Check infrastructure">>%my_archive_log%
21766
set my_WINPYDIRBASE=%my_root_dir_for_builds%\bd%my_python_target%\bu%my_flavor%\Wpy%my_arch%-%my_python_target_release%%my_release%%my_release_level%
218-
21967
set WINPYDIRBASE=%my_WINPYDIRBASE%
22068

22169
if not exist %my_WINPYDIRBASE%\scripts\env.bat (
70+
@echo off
71+
echo as %my_WINPYDIRBASE%\scripts\env.bat does not exist
22272
echo please check and correct my_python_target_release=%my_python_target_release%
22373
echo my_arch=%my_arch%
22474
echo my_python_target_release=%my_python_target_release%
22575
echo my_release=%my_release%
22676
echo my_release_level=%my_release_level%
227-
echo in generate_a_winpython_distro.bat
228-
echo as %my_WINPYDIRBASE%\scripts\env.bat doesnt exist
22977
pause
23078
exit
231-
)
79+
)
23280

233-
rem we use final environment to install requirements
234-
set path=%my_original_path%
81+
REM Add pre-requisite packages
82+
echo -------------------------------------- >>%my_archive_log%
83+
echo "(%date% %time%) Add pre-requisite packages">>%my_archive_log%
84+
echo -------------------------------------- >>%my_archive_log%
23585

86+
set path=%my_original_path%
23687
call %my_WINPYDIRBASE%\scripts\env.bat
237-
set
238-
239-
240-
echo ----------------------------------------
241-
echo 2.4 (%date% %time%) add packages pre_requirements (if any)
242-
echo ----------------------------------------
243-
echo ---------------------------------------- >>%my_archive_log%
244-
echo 2.4 (%date% %time%) add packages pre_requirements (if any)
245-
echo ---------------------------------------- >>%my_archive_log%
24688

89+
rem Install pre-requirements if any
24790
if not "Z%my_requirements_pre%Z"=="ZZ" (
248-
249-
if "%my_find_links_pre%"=="" set my_find_links_pre=%my_find_links%
250-
251-
echo python -m pip install -r %my_requirements_pre% -c %my_constraints% --pre --no-index --trusted-host=None --find-links=%my_find_links_pre%
252-
echo python -m pip install -r %my_requirements_pre% -c %my_constraints% --pre --no-index --trusted-host=None --find-links=%my_find_links_pre% >>%my_archive_log%
253-
echo if pip doesn't work, check the path of %my_WINPYDIRBASE%
254-
255-
python -m pip install -r %my_requirements_pre% -c %my_constraints% --pre --no-index --trusted-host=None --find-links=%my_find_links_pre% >>%my_archive_log%
91+
if "%my_find_links_pre%"=="" set my_find_links_pre=%my_find_links%
92+
python -m pip install -r %my_requirements_pre% -c %my_constraints% --pre --no-index --trusted-host=None --find-links=%my_find_links_pre% >> %my_archive_log%
25693
) else (
257-
echo no packages pre_requirements
258-
echo no packages pre_requirements>>%my_archive_log%
94+
echo "No pre-requisite packages">>%my_archive_log%
25995
)
26096

97+
REM Add requirement packages
98+
echo -------------------------------------- >>%my_archive_log%
99+
echo "(%date% %time%) Add requirement packages">>%my_archive_log%
100+
echo -------------------------------------- >>%my_archive_log%
101+
python -m pip install -r %my_requirements% -c %my_constraints% --pre --no-index --trusted-host=None --find-links=%my_find_links% >>%my_archive_log%
261102

262-
echo ----------------------------------------
263-
echo 2.5 (%date% %time%) add requirement packages
264-
echo ----------------------------------------
265-
echo ---------------------------------------- >>%my_archive_log%
266-
echo 2.5 (%date% %time%) add requirement packages_versions>>%my_archive_log%
267-
echo ---------------------------------------- >>%my_archive_log%
268-
269-
echo python -m pip install -r %my_requirements% -c %my_constraints% --pre --no-index --trusted-host=None --find-links=%my_find_links%
270-
echo python -m pip install -r %my_requirements% -c %my_constraints% --pre --no-index --trusted-host=None --find-links=%my_find_links% >>%my_archive_log%
271-
echo if pip doesn't work, check the path of %my_WINPYDIRBASE%
272-
273-
python -m pip install -r %my_requirements% -c %my_constraints% --pre --no-index --trusted-host=None --find-links=%my_find_links% >>%my_archive_log%
274-
275-
276-
echo ----------------------------------------
277-
echo 2.9 (%date% %time%) archive success
278-
echo ----------------------------------------
279-
echo ---------------------------------------- >>%my_archive_log%
280-
echo 2.9 (%date% %time%) archive success >>%my_archive_log%
281-
echo ---------------------------------------- >>%my_archive_log%
282-
283-
echo %target_python_exe% -m pip freeze>%my_archive_log%.packages_versions.txt>>%my_archive_log%
284-
%target_python_exe% -m pip freeze>%my_archive_log%.packages_versions.txt
285-
286-
287-
echo ----------------------------------------
288-
echo 3.0 (%date% %time%) Generate Changelog and binaries
289-
echo ----------------------------------------
290-
echo ---------------------------------------- >>%my_archive_log%
291-
echo 3.0 (%date% %time%) Generate Changelog and binaries >>%my_archive_log%
292-
echo ---------------------------------------- >>%my_archive_log%
293-
294-
rem build final changelog and binaries, using create_installer='%my_create_installer%', remove_existing=False , remove : requirements, toolsdirs and docdirs
103+
REM Archive success
104+
echo -------------------------------------- >>%my_archive_log%
105+
echo "(%date% %time%) Archive success">>%my_archive_log%
106+
echo -------------------------------------- >>%my_archive_log%
107+
%target_python_exe% -m pip freeze > %my_archive_log%.packages_versions.txt
295108

109+
REM Generate changelog and binaries
110+
echo "(%date% %time%) Generate changelog and binaries">>%my_archive_log%
296111
set path=%my_original_path%
297-
echo cd /D %~dp0>>%my_archive_log%
298112
cd /D %~dp0
299-
300-
echo call %my_buildenv%\scripts\env.bat>>%my_archive_log%
301113
call %my_buildenv%\scripts\env.bat
302-
set
303-
304-
echo python.exe -c "from make import *;make_all(%my_release%, '%my_release_level%', pyver='%my_pyver%', basedir=r'%my_basedir%', verbose=True, architecture=%my_arch%, flavor='%my_flavor%', install_options=r'%my_install_options%', find_links=r'%my_find_links%', source_dirs=r'%my_source_dirs%', create_installer='%my_create_installer%', remove_existing=False, python_target_release='%my_python_target_release%')">>%my_archive_log%
305-
306-
echo python.exe -c "from make import *;make_all(%my_release%, '%my_release_level%', pyver='%my_pyver%', basedir=r'%my_basedir%', verbose=True, architecture=%my_arch%, flavor='%my_flavor%', install_options=r'%my_install_options%', find_links=r'%my_find_links%', source_dirs=r'%my_source_dirs%', create_installer='%my_create_installer%', remove_existing=False, python_target_release='%my_python_target_release%')"
114+
python.exe -c "from make import *;make_all(%my_release%, '%my_release_level%', pyver='%my_pyver%', basedir=r'%my_basedir%', verbose=True, architecture=%my_arch%, flavor='%my_flavor%', install_options=r'%my_install_options%', find_links=r'%my_find_links%', source_dirs=r'%my_source_dirs%', create_installer='%my_create_installer%', remove_existing=False, python_target_release='%my_python_target_release%')" >> %my_archive_log%
307115

308-
python.exe -c "from make import *;make_all(%my_release%, '%my_release_level%', pyver='%my_pyver%', basedir=r'%my_basedir%', verbose=True, architecture=%my_arch%, flavor='%my_flavor%', install_options=r'%my_install_options%', find_links=r'%my_find_links%', source_dirs=r'%my_source_dirs%', create_installer='%my_create_installer%', remove_existing=False, python_target_release='%my_python_target_release%')">>%my_archive_log%
309-
310-
311-
echo ----------------------------------------
312-
echo (%date% %time%) END OF creation
313-
echo ----------------------------------------
314-
echo ---------------------------------------- >>%my_archive_log%
315-
echo (%date% %time%) END OF creation>>%my_archive_log%
316-
echo ---------------------------------------- >>%my_archive_log%
317-
318-
rem show logs
116+
echo -------------------------------------- >>%my_archive_log%
117+
echo "(%date% %time%) END OF CREATION">>%my_archive_log%
118+
echo -------------------------------------- >>%my_archive_log%
319119
start notepad.exe %my_archive_log%
320-
321120
start notepad.exe %my_archive_log%.packages_versions.txt
322121

323-
set path=%my_original_path%
324-
rem pause
122+
set path=%my_original_path%

0 commit comments

Comments
 (0)