FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cpython/PCbuild/get_external.py at main · https-github-com-nzysoft/cpython · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
https-github-com-nzysoft
/
cpython
Public
forked from
python/cpython
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cpython
/
PCbuild
/
get_external.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
executable file
·
77 lines (66 loc) · 2.3 KB
Breadcrumbs
cpython
/
PCbuild
/
get_external.py
Copy path
File metadata and controls
executable file
·
77 lines (66 loc) · 2.3 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
#!/usr/bin/env python3
import
argparse
import
os
import
pathlib
import
sys
import
time
import
zipfile
from
urllib
.
request
import
urlretrieve
def
fetch_zip
(
commit_hash
,
zip_dir
,
*
,
org
=
'python'
,
binary
=
False
,
verbose
):
repo
=
f'cpython-
{
"bin"
if
binary
else
"source"
}
-deps'
url
=
f'https://github.com/
{
org
}
/
{
repo
}
/archive/
{
commit_hash
}
.zip'
reporthook
=
None
if
verbose
:
reporthook
=
print
zip_dir
.
mkdir
(
parents
=
True
,
exist_ok
=
True
)
filename
,
headers
=
urlretrieve
(
url
,
zip_dir
/
f'
{
commit_hash
}
.zip'
,
reporthook
=
reporthook
,
)
return
filename
def
extract_zip
(
externals_dir
,
zip_path
):
with
zipfile
.
ZipFile
(
os
.
fspath
(
zip_path
))
as
zf
:
zf
.
extractall
(
os
.
fspath
(
externals_dir
))
return
externals_dir
/
zf
.
namelist
()[
0
].
split
(
'/'
)[
0
]
def
parse_args
():
p
=
argparse
.
ArgumentParser
()
p
.
add_argument
(
'-v'
,
'--verbose'
,
action
=
'store_true'
)
p
.
add_argument
(
'-b'
,
'--binary'
,
action
=
'store_true'
,
help
=
'Is the dependency in the binary repo?'
)
p
.
add_argument
(
'-O'
,
'--organization'
,
help
=
'Organization owning the deps repos'
,
default
=
'python'
)
p
.
add_argument
(
'-e'
,
'--externals-dir'
,
type
=
pathlib
.
Path
,
help
=
'Directory in which to store dependencies'
,
default
=
pathlib
.
Path
(
__file__
).
parent
.
parent
/
'externals'
)
p
.
add_argument
(
'tag'
,
help
=
'tag of the dependency'
)
return
p
.
parse_args
()
def
main
():
args
=
parse_args
()
zip_path
=
fetch_zip
(
args
.
tag
,
args
.
externals_dir
/
'zips'
,
org
=
args
.
organization
,
binary
=
args
.
binary
,
verbose
=
args
.
verbose
,
)
final_name
=
args
.
externals_dir
/
args
.
tag
extracted
=
extract_zip
(
args
.
externals_dir
,
zip_path
)
for
wait
in
[
1
,
2
,
3
,
5
,
8
,
0
]:
try
:
extracted
.
replace
(
final_name
)
break
except
PermissionError
as
ex
:
retry
=
f" Retrying in
{
wait
}
s..."
if
wait
else
""
print
(
f"Encountered permission error '
{
ex
}
'.
{
retry
}
"
,
file
=
sys
.
stderr
)
time
.
sleep
(
wait
)
else
:
print
(
f"ERROR: Failed to extract
{
final_name
}
."
,
"You may need to restart your build"
,
file
=
sys
.
stderr
,
)
sys
.
exit
(
1
)
if
__name__
==
'__main__'
:
main
()
Back
|
FazBrowse Home
|
New Git URL