@@ -167,6 +167,17 @@ def default_install_handler(
167167 cmd = ["install" , * cargo_install_args , * install_args ],
168168 timeout = timeout ,
169169 )
170+ proc_output = format_subprocess_output (proc .stdout , proc .stderr )
171+ if (
172+ proc .returncode != 0
173+ and "--locked" in cargo_install_args
174+ and "lock file version 4 requires `-Znext-lockfile-bump`" in proc_output
175+ ):
176+ proc = self .exec (
177+ bin_name = installer_bin ,
178+ cmd = ["install" , * cargo_install_args [1 :], * install_args ],
179+ timeout = timeout ,
180+ )
170181 if proc .returncode != 0 :
171182 self ._raise_proc_error ("install" , install_args , proc )
172183 return format_subprocess_output (proc .stdout , proc .stderr )
@@ -202,6 +213,22 @@ def default_update_handler(
202213 ],
203214 timeout = timeout ,
204215 )
216+ proc_output = format_subprocess_output (proc .stdout , proc .stderr )
217+ if (
218+ proc .returncode != 0
219+ and "--locked" in cargo_install_args
220+ and "lock file version 4 requires `-Znext-lockfile-bump`" in proc_output
221+ ):
222+ proc = self .exec (
223+ bin_name = installer_bin ,
224+ cmd = [
225+ "install" ,
226+ "--force" ,
227+ * cargo_install_args [1 :],
228+ * install_args ,
229+ ],
230+ timeout = timeout ,
231+ )
205232 if proc .returncode != 0 :
206233 self ._raise_proc_error ("update" , install_args , proc )
207234 return format_subprocess_output (proc .stdout , proc .stderr )
0 commit comments