28
28
import logging
29
29
import logging .handlers
30
30
from functools import total_ordering
31
- from os import readlink
31
+ from os import readlink , EX_OK , EX_SOFTWARE
32
32
import re
33
33
import shlex
34
34
import shutil
@@ -693,7 +693,7 @@ def full_build(self):
693
693
"""
694
694
return not self .quick and not self .language .html_only
695
695
696
- def run (self ):
696
+ def run (self ) -> bool :
697
697
"""Build and publish a Python doc, for a language, and a version."""
698
698
try :
699
699
self .clone_cpython ()
@@ -710,6 +710,8 @@ def run(self):
710
710
)
711
711
if sentry_sdk :
712
712
sentry_sdk .capture_exception (err )
713
+ return False
714
+ return True
713
715
714
716
@property
715
717
def checkout (self ) -> Path :
@@ -1044,7 +1046,7 @@ def purge_path(www_root: Path, path: Path):
1044
1046
run (["curl" , "-XPURGE" , f"https://docs.python.org/{{{ ',' .join (to_purge )} }}" ])
1045
1047
1046
1048
1047
- def main () -> None :
1049
+ def main () -> bool :
1048
1050
"""Script entry point."""
1049
1051
args = parse_args ()
1050
1052
setup_logging (args .log_directory )
@@ -1054,6 +1056,7 @@ def main() -> None:
1054
1056
del args .languages
1055
1057
del args .branch
1056
1058
todo = list (product (versions , languages ))
1059
+ all_built_successfully = True
1057
1060
while todo :
1058
1061
version , language = todo .pop ()
1059
1062
if sentry_sdk :
@@ -1063,7 +1066,7 @@ def main() -> None:
1063
1066
try :
1064
1067
lock = zc .lockfile .LockFile (HERE / "build_docs.lock" )
1065
1068
builder = DocBuilder (version , language , ** vars (args ))
1066
- builder .run ()
1069
+ all_built_successfully &= builder .run ()
1067
1070
except zc .lockfile .LockError :
1068
1071
logging .info ("Another builder is running... waiting..." )
1069
1072
time .sleep (10 )
@@ -1078,6 +1081,9 @@ def main() -> None:
1078
1081
dev_symlink (args .www_root , args .group )
1079
1082
proofread_canonicals (args .www_root , args .skip_cache_invalidation )
1080
1083
1084
+ return all_built_successfully
1085
+
1081
1086
1082
1087
if __name__ == "__main__" :
1083
- main ()
1088
+ all_built_successfully = main ()
1089
+ sys .exit (EX_OK if all_built_successfully else EX_SOFTWARE )
0 commit comments