48
48
49
49
HERE = Path (__file__ ).resolve ().parent
50
50
51
+ try :
52
+ from os import EX_OK , EX_SOFTWARE as EX_FAILURE
53
+ except ImportError :
54
+ EX_OK , EX_FAILURE = 0 , 1
55
+
51
56
try :
52
57
import sentry_sdk
53
58
except ImportError :
@@ -693,7 +698,7 @@ def full_build(self):
693
698
"""
694
699
return not self .quick and not self .language .html_only
695
700
696
- def run (self ):
701
+ def run (self ) -> bool :
697
702
"""Build and publish a Python doc, for a language, and a version."""
698
703
try :
699
704
self .clone_cpython ()
@@ -710,6 +715,8 @@ def run(self):
710
715
)
711
716
if sentry_sdk :
712
717
sentry_sdk .capture_exception (err )
718
+ return False
719
+ return True
713
720
714
721
@property
715
722
def checkout (self ) -> Path :
@@ -1044,7 +1051,7 @@ def purge_path(www_root: Path, path: Path):
1044
1051
run (["curl" , "-XPURGE" , f"https://docs.python.org/{{{ ',' .join (to_purge )} }}" ])
1045
1052
1046
1053
1047
- def main () -> None :
1054
+ def main () -> bool :
1048
1055
"""Script entry point."""
1049
1056
args = parse_args ()
1050
1057
setup_logging (args .log_directory )
@@ -1054,6 +1061,7 @@ def main() -> None:
1054
1061
del args .languages
1055
1062
del args .branch
1056
1063
todo = list (product (versions , languages ))
1064
+ all_built_successfully = True
1057
1065
while todo :
1058
1066
version , language = todo .pop ()
1059
1067
if sentry_sdk :
@@ -1063,7 +1071,7 @@ def main() -> None:
1063
1071
try :
1064
1072
lock = zc .lockfile .LockFile (HERE / "build_docs.lock" )
1065
1073
builder = DocBuilder (version , language , ** vars (args ))
1066
- builder .run ()
1074
+ all_built_successfully &= builder .run ()
1067
1075
except zc .lockfile .LockError :
1068
1076
logging .info ("Another builder is running... waiting..." )
1069
1077
time .sleep (10 )
@@ -1078,6 +1086,9 @@ def main() -> None:
1078
1086
dev_symlink (args .www_root , args .group )
1079
1087
proofread_canonicals (args .www_root , args .skip_cache_invalidation )
1080
1088
1089
+ return all_built_successfully
1090
+
1081
1091
1082
1092
if __name__ == "__main__" :
1083
- main ()
1093
+ all_built_successfully = main ()
1094
+ sys .exit (EX_OK if all_built_successfully else EX_FAILURE )
0 commit comments