@@ -70,12 +70,11 @@ use super::job::{
7070use super :: timings:: Timings ;
7171use super :: { BuildContext , BuildPlan , CompileMode , Context , Unit } ;
7272use crate :: core:: { PackageId , TargetKind } ;
73- use crate :: util;
7473use crate :: util:: diagnostic_server:: { self , DiagnosticPrinter } ;
75- use crate :: util:: Queue ;
76- use crate :: util:: { internal , profile , CargoResult , CargoResultExt , ProcessBuilder } ;
77- use crate :: util:: { Config , DependencyQueue } ;
78- use crate :: util:: { Progress , ProgressStyle } ;
74+ use crate :: util:: machine_message :: { self , Message as _ } ;
75+ use crate :: util:: { self , internal , profile } ;
76+ use crate :: util:: { CargoResult , CargoResultExt , ProcessBuilder } ;
77+ use crate :: util:: { Config , DependencyQueue , Progress , ProgressStyle , Queue } ;
7978
8079/// This structure is backed by the `DependencyQueue` type and manages the
8180/// queueing of compilation steps for each package. Packages enqueue units of
@@ -701,6 +700,13 @@ impl<'a, 'cfg> DrainState<'a, 'cfg> {
701700
702701 let time_elapsed = util:: elapsed ( cx. bcx . config . creation_time ( ) . elapsed ( ) ) ;
703702 self . timings . finished ( cx. bcx , & error) ?;
703+ if cx. bcx . build_config . emit_json ( ) {
704+ let msg = machine_message:: BuildFinished {
705+ success : error. is_none ( ) ,
706+ }
707+ . to_json_string ( ) ;
708+ cx. bcx . config . shell ( ) . stdout_println ( msg) ;
709+ }
704710
705711 if let Some ( e) = error {
706712 Err ( e)
0 commit comments