forked from kliment/Printrun
-
Notifications
You must be signed in to change notification settings - Fork 0
/
release_windows.bat
223 lines (193 loc) · 12.8 KB
/
release_windows.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
echo off
cls
rem ************************************************************************************
rem ********************* ---> New batch file starts here <--- ***********************
rem ** **
rem ** This batch will compile automated via command line an executable **
rem ** Pronterface, Pronsole and Plater file for Windows 10. **
rem ** **
rem ** Steps that are automated: **
rem ** **
rem ** 1. Clean up previous compilations (directory .\dist) **
rem ** 2. Check for virtual environment called v3 and generate it, if **
rem ** not available (start from scratch) **
rem ** 3. Install all needed additional modules via pip **
rem ** 4. Check for outdated modules that need to be updated and **
rem ** update them **
rem ** 5. Check if virtual environment needs an update and do it **
rem ** 6. Check for existing variants of gcoder_line.cp??-win_amd??.pyd **
rem ** and delete them (to prevent errors and incompatibilities) **
rem ** 7. Compile Pronterface.exe **
rem ** 8. Compile Pronsole.exe **
rem ** 9. Copy localization files to .\dist **
rem ** 10. Go to directory .\dist, list files and ends the activity **
rem ** **
rem ** Steps, you need to do manually before running this batch: **
rem ** **
rem ** 1. Install python 64-bit (3.10.x is actually preferred and standard version **
rem ** for Windows 10) **
rem ** https://www.python.org/downloads/release **
rem ** In case you use an other Python version, check line 91 and adjust **
rem ** the parameter accordingly to build your virtual environment. **
rem ** 2. Install C-compiler environment **
rem ** https://wiki.python.org/moin/WindowsCompilers **
rem ** 3. Check for latest repository updates at: **
rem ** http://github.com/kliment/Printrun.git **
rem ** 4. Projector needs GTK+ for Windows Runtime Environment installed. **
rem ** There are different compilations, depending on the installed **
rem ** Windows version, available. You can find a striped version of GTK3 **
rem ** with all needed DLL binary files in directory PrintrunGTK. Please run **
rem ** following git commands before you run this batch in case you don't find **
rem ** this directory in your local repository: **
rem ** git checkout master **
rem ** git submodule add https://github.com/DivingDuck/PrintrunGTK3 **
rem ** git submodule update --init --recursive **
rem ** In case the directory PrintrunGTK3 exist but is empty please run: **
rem ** git submodule update --init --recursive **
rem ** You can find a listing of all used DLL's in file VERSION as reference and **
rem ** further informations about the linked submodule here: **
rem ** https://github.com/DivingDuck/PrintrunGTK3 **
rem ** **
rem ** Follow the instructions at section 'Collect all data for build' below **
rem ** **
rem ** Remark: wxPython drops support x32 builders. Only x64 versions for now **
rem ** **
rem ** https://github.com/wxWidgets/Phoenix/commit/d3bdb14365ca754e83732cccd04e94a2ded5029f
rem ** **
rem ** **
rem ** Author: DivingDuck, 2023-02-02, Status: working **
rem ** **
rem ************************************************************************************
rem ************************************************************************************
echo **************************************************
echo ****** Delete files and directory of .\dist ******
echo **************************************************
if exist dist (
DEL /F/Q/S dist > NUL
RMDIR /Q/S dist
)
echo *********************************************
echo ****** Activate virtual environment v3 ******
echo *********************************************
if exist v3 (
call v3\Scripts\activate
) else (
echo **********************************************************************
echo ****** No virtual environment named v3 available ******
echo ****** Will create first a new virtual environment with name v3 ******
echo **********************************************************************
rem Select your Python version below. Remove 'rem' before 'rem py -3.x ...'
rem for your Python version of choice and add 'rem' for all other versions.
rem Attention:
rem Minimum version for wxPython is >= 4.2 and with this version only
rem Python x64 versions are supported.
rem py -3.7 -m venv v3
rem py -3.8 -m venv v3
rem py -3.9 -m venv v3
py -3.10 -m venv v3
echo *********************************************
echo ****** Activate virtual environment v3 ******
echo *********************************************
call v3\Scripts\activate
py -m pip install --upgrade pip
pip install --upgrade setuptools
pip install wheel
echo **********************************
echo ****** install requirements ******
echo **********************************
pip install cython
pip install -r requirements.txt
echo ***********************
echo ****** additions ******
echo ***********************
pip install simplejson
pip install pyinstaller
pip install pypiwin32
pip install polygon3
)
echo ********************************************
echo ****** upgrade virtual environment v3 ******
echo ********************************************
pip install --upgrade virtualenv
echo ****************************************************
echo ****** check for and update outdated modules ******
echo ****************************************************
for /F "skip=2 delims= " %%i in ('pip list --outdated') do py -m pip install --upgrade %%i
echo *************************************************************************
echo ****** pyglet workaround, needs to be below 2.0 (isn't compatible) ******
echo *************************************************************************
rem # 2022-11-01
pip uninstall pyglet -y
pip install pyglet==1.5.27
echo *****************************************************************************
echo ****** cairosvg workaround, needs to be below 2.6.0 (isn't compatible) ******
echo *****************************************************************************
rem # 2023-01-30
rem cairosvg >=2.6.0 generate a crash problem with locale in module projectlayer.py (Projector),
rem so we will stay to 2.5.2 as workaround for now
pip uninstall cairosvg -y
pip install cairosvg==2.5.2
echo ******************************************************************
echo ****** Compile G-Code parser gcoder_line.cp??-win_amd64.pyd ******
echo ******************************************************************
rem For safety reasons delete existing version first to prevent errors
if exist printrun\gcoder_line.cp??-win_amd??.pyd (
del printrun\gcoder_line.cp??-win_amd??.pyd
echo ********************************************************************************
echo ****** found versions of printrun\gcoder_line.cp??-win_amd??.pyd, deleted ******
echo ********************************************************************************
)
python setup.py build_ext --inplace
echo ****************************************
echo ****** Collect all data for build ******
echo ****************************************
rem **** Select which version you want to build: ****
rem The Projector feature of Pronterface need some external DLL binaries from the GTK3.
rem You can build Pronterface with or w/o these binaries. In addition you need
rem different binaries depending if you build a Windows 10 x32 or x64 version.
rem Remove 'rem' before pyi-makespec for the build of your choice and add 'rem'
rem for all other versions. You can't bundle x32 and x46 into the same Pronterface binary file.
rem Only one active version is allowed.
rem **** Default setup: Version 3, GTK3 bundle included for Windows 10 x64 bit. ****
rem Version 1: With external GTK3 or w/o GTK3 support:
rem Choose this pyi-makespec in case you don't have the GTK3 Toolkit files, or want them stay separately
rem or don't want to bundle these within Pronterface.exe. You can install them separately and
rem set the path location via Windows system environment variable (like Path=c:\GTK3\bin).
rem pyi-makespec -F --add-data VERSION;cairocffi --add-data VERSION;cairosvg --add-data images/*;images --add-data *.png;. --add-data *.ico;. -w -i pronterface.ico pronterface.py
rem pyi-makespec -F --add-data VERSION;cairocffi --add-data VERSION;cairosvg --add-data images/*;images --add-data *.png;. --add-data *.ico;. -c -i pronsole.ico pronsole.py
rem Version 2: GTK3 included in Pronterface (Windows10 x32 only) NOT Supported for now (see wxPython remark line 51):
rem Choose this pyi-makespec in case you want to include the GTK3 Toolkit files for Windows10 x32 only
rem pyi-makespec -F --add-binary PrintrunGTK3/GTK3Windows10-32/*.dll;. --add-data VERSION;cairocffi --add-data VERSION;cairosvg --add-data images/*;images --add-data *.png;. --add-data *.ico;. -w -i pronterface.ico pronterface.py
rem pyi-makespec -F --add-binary PrintrunGTK3/GTK3Windows10-32/*.dll;. --add-data VERSION;cairocffi --add-data VERSION;cairosvg --add-data images/*;images --add-data *.png;. --add-data *.ico;. -c -i pronsole.ico pronsole.py
rem Version 3: GTK3 included in Pronterface (Windows10 x64 only):
rem Choose this pyi-makespec in case you want to include the GTK3 Toolkit files for Windows10 x64 only
pyi-makespec -F --add-binary PrintrunGTK3/GTK3Windows10-64/*.dll;. --add-data VERSION;cairocffi --add-data VERSION;cairosvg --add-data images/*;images --add-data *.png;. --add-data *.ico;. -w -i pronterface.ico pronterface.py
pyi-makespec -F --add-binary PrintrunGTK3/GTK3Windows10-64/*.dll;. --add-data VERSION;cairocffi --add-data VERSION;cairosvg --add-data images/*;images --add-data *.png;. --add-data *.ico;. -c -i pronsole.ico pronsole.py
pyi-makespec -F --add-binary PrintrunGTK3/GTK3Windows10-64/*.dll;. --add-data VERSION;cairocffi --add-data VERSION;cairosvg --add-data images/*;images --add-data *.png;. --add-data *.ico;. -w -i plater.ico plater.py
echo ***************************************************************
echo ****** Build Pronterface, Pronsole and Plater executables *****
echo ***************************************************************
echo
echo ** Build Pronterface executable **
pyinstaller --clean pronterface.spec -y
echo
echo ** Build Pronsole executable **
pyinstaller --clean pronsole.spec -y
echo
echo ** Build Plater executable **
pyinstaller --clean plater.spec -y
echo ********************************
echo ****** Add language files ******
echo ********************************
xcopy locale dist\locale\ /Y /E
echo ***************************************************************
echo ****** Batch finalizes ******
echo ****** ******
echo ****** Happy printing with Pronterface for Windows! ******
echo ****** ******
echo ****** You will find Pronterface and localizations here: ******
echo ***************************************************************
cd dist
dir .
pause
echo on