@@ -102,6 +102,54 @@ def run_make_py(build_python, winpydirbase, args):
102
102
verbose = True , flavor = args .flavor ,
103
103
source_dirs = args .source_dirs , toolsdirs = args .tools_dirs
104
104
)
105
+
106
+ def process_wheelhouse_requirements (target_python : Path , winpydirbase : Path ,args : argparse .Namespace ,file_postfix : str ):
107
+ """
108
+ Handle installation and conversion of wheelhouse requirements.
109
+ """
110
+ log_section (f"🙏 Step 5: install wheelhouse requirements { args .wheelhousereq } " )
111
+ wheelhousereq = Path (args .wheelhousereq )
112
+ kind = "local"
113
+ out = winpydirbase .parent / f"pylock.{ file_postfix } _wheels{ kind } .toml"
114
+ outreq = winpydirbase .parent / f"requir.{ file_postfix } _wheels{ kind } .txt"
115
+ if wheelhousereq .is_file ():
116
+ # Generate pylock from wheelhousereq
117
+ cmd = [
118
+ str (target_python ), "-m" , "pip" , "lock" , "--no-index" , "--trusted-host=None" ,
119
+ "--find-links" , args .find_links , "-c" , args .constraints , "-r" , str (wheelhousereq ),
120
+ "-o" , str (out )
121
+ ]
122
+ run_command (cmd )
123
+ # Convert pylock to requirements with hash
124
+ pylock_to_req_cmd = [
125
+ str (target_python ), "-X" , "utf8" , "-c" ,
126
+ f"from wppm import wheelhouse as wh; wh.pylock_to_req(r'{ out } ', r'{ outreq } ')"
127
+ ]
128
+ run_command (pylock_to_req_cmd , check = False )
129
+
130
+ kind = ""
131
+ outw = winpydirbase .parent / f"pylock.{ file_postfix } _wheels{ kind } .toml"
132
+ outreqw = winpydirbase .parent / f"requir.{ file_postfix } _wheels{ kind } .txt"
133
+ # Generate web pylock from local frozen hashes
134
+ web_lock_cmd = [
135
+ str (target_python ), "-m" , "pip" , "lock" , "--no-deps" , "--require-hashes" ,
136
+ "-r" , str (outreq ), "-o" , str (outw )
137
+ ]
138
+ run_command (web_lock_cmd )
139
+ pylock_to_req_cmd2 = [
140
+ str (target_python ), "-X" , "utf8" , "-c" ,
141
+ f"from wppm import wheelhouse as wh; wh.pylock_to_req(r'{ outw } ', r'{ outreqw } ')"
142
+ ]
143
+ run_command (pylock_to_req_cmd2 , check = False )
144
+
145
+ # Use wppm to download local from req made with web hashes
146
+ wheelhouse = winpydirbase / "wheelhouse" / "included.wheels"
147
+ wppm_cmd = [
148
+ str (target_python ), "-X" , "utf8" , "-m" , "wppm" , str (out ), "-ws" , args .find_links ,
149
+ "-wd" , str (wheelhouse )
150
+ ]
151
+ run_command (wppm_cmd , check = False )
152
+
105
153
def main ():
106
154
parser = argparse .ArgumentParser ()
107
155
parser .add_argument ('--python-target' , required = True , help = 'Target Python version, e.g. 311' )
@@ -165,37 +213,7 @@ def main():
165
213
patch_winpython (target_python )
166
214
167
215
if args .wheelhousereq :
168
- log_section (f"🙏 Step 5: install wheelhouse requirements { args .wheelhousereq } " )
169
- wheelhousereq = Path (args .wheelhousereq )
170
- kind = "local"
171
- out = winpydirbase .parent / f"pylock.{ file_postfix } _wheels{ kind } .toml"
172
- outreq = winpydirbase .parent / f"requir.{ file_postfix } _wheels{ kind } .txt"
173
- if wheelhousereq .is_file ():
174
- # Generate pylock from wheelhousereq
175
- cmd = [str (target_python ), "-m" , "pip" , "lock" ,"--no-index" , "--trusted-host=None" ,
176
- "--find-links" , args .find_links , "-c" , str (args .constraints ), "-r" , str (wheelhousereq ),
177
- "-o" , str (out ) ]
178
- run_command (cmd )
179
- # Convert pylock to requirements with hash
180
- cmd = [str (target_python ), "-X" , "utf8" , "-c" , f"from wppm import wheelhouse as wh; wh.pylock_to_req(r'{ out } ', r'{ outreq } ')" ]
181
- run_command (cmd , check = False )
182
-
183
- kind = ""
184
- outw = winpydirbase .parent / f"pylock.{ file_postfix } _wheels{ kind } .toml"
185
- outreqw = winpydirbase .parent / f"requir.{ file_postfix } _wheels{ kind } .txt"
186
- # Generate web pylock from local frozen hashes
187
- cmd = [str (target_python ), "-m" , "pip" , "lock" ,"--no-deps" , "--require-hashes" ,
188
- "-r" , str (outreq ), "-o" , str (outw ) ]
189
- run_command (cmd )
190
- cmd = [str (target_python ), "-X" , "utf8" , "-c" , f"from wppm import wheelhouse as wh; wh.pylock_to_req(r'{ outw } ', r'{ outreqw } ')" ]
191
- run_command (cmd , check = False )
192
-
193
- # Use wppm to download local from req made with web hashes
194
- wheelhouse = winpydirbase / "wheelhouse" / "included.wheels"
195
- cmd = [str (target_python ), "-X" , "utf8" , "-m" , "wppm" , str (out ), "-ws" , args .find_links ,
196
- "-wd" , str (wheelhouse )
197
- ]
198
- run_command (cmd , check = False )
216
+ process_wheelhouse_requirements (target_python , winpydirbase , args , file_postfix )
199
217
200
218
log_section ("🙏 Step 6: install lockfiles" )
201
219
print (target_python , winpydirbase , args .constraints , args .find_links , file_postfix )
0 commit comments