66import warnings
77import platform
88import rebuildpython
9+ import re
910
1011import __np__
1112import __np__ .packaging
2930builtin_packages = ensurepip ._get_packages ()
3031
3132
33+ import pip ._internal .utils .subprocess
34+
35+ call_subprocess_orig = pip ._internal .utils .subprocess .call_subprocess
36+
37+ def our_call_subprocess (
38+ cmd ,
39+ show_stdout = False ,
40+ cwd = None ,
41+ on_returncode = "raise" ,
42+ extra_ok_returncodes = None ,
43+ extra_environ = None ,
44+ unset_environ = None ,
45+ spinner = None ,
46+ log_failed_cmd = True ,
47+ stdout_only = False ,
48+ * ,
49+ command_desc : str ,
50+ ):
51+ if extra_ok_returncodes is None :
52+ our_extra_ok_returncodes = []
53+ else :
54+ our_extra_ok_returncodes = list (extra_ok_returncodes )
55+
56+ # Some packages cause this error code to be returned even if all is ok.
57+ our_extra_ok_returncodes += [3221225477 ]
58+ return call_subprocess_orig (cmd , show_stdout , cwd , on_returncode , our_extra_ok_returncodes , extra_environ , unset_environ , spinner , log_failed_cmd , stdout_only , command_desc = command_desc )
59+
60+ pip ._internal .utils .subprocess .call_subprocess = our_call_subprocess
61+
62+
3263import pip ._internal .pyproject
3364
3465load_pyproject_toml_orig = pip ._internal .pyproject .load_pyproject_toml
@@ -39,12 +70,14 @@ def our_load_pyproject_toml(use_pep517, pyproject_toml, setup_py, req_name):
3970 # We will be taking over the build process.
4071 if os .path .isfile (os .path .join (os .path .dirname (os .path .dirname (pyproject_toml )), "script.json" )):
4172 return pip ._internal .pyproject .BuildSystemDetails (
42- [], "__np__.metabuild:managed_build" , [], [real_pip_dir , os .path .dirname (__file__ )])
73+ [], "__np__.metabuild:managed_build" , [], [os .path .dirname (__file__ ), real_pip_dir ])
4374
4475 result = load_pyproject_toml_orig (use_pep517 , pyproject_toml , setup_py , req_name )
76+ if result is None :
77+ return None
4578 return pip ._internal .pyproject .BuildSystemDetails (
4679 [x for x in result .requires if re .split (r'[><=]' , x , 1 )[0 ] not in builtin_packages ],
47- result .backend , result .check , result . backend_path + [ real_pip_dir ])
80+ result .backend , result .check , [ os . path . dirname ( __file__ ), real_pip_dir ] + result . backend_path )
4881
4982
5083
0 commit comments