@@ -9,6 +9,7 @@ require 'fileutils'
99require 'json'
1010require 'logger'
1111require 'net/http'
12+ require 'open3'
1213require 'optparse'
1314require 'pathname'
1415require 'time'
8182module System
8283 include Output
8384
84- def run_cmd ( *args )
85+ def run_cmd ( *args , output_file : nil )
8586 debug "executing: #{ args . join ( ' ' ) } "
86- cmd ( *args )
87+ cmd ( *args , output_file : output_file )
8788 end
8889
89- def cmd ( *args )
90- system ( *args ) || fatal ( "Exit code: #{ $CHILD_STATUS. exitstatus } " )
90+ def cmd ( *args , output_file : nil )
91+ if output_file . nil?
92+ return system ( *args ) || fatal ( "Exit code: #{ $CHILD_STATUS. exitstatus } " )
93+ end
94+
95+ # Handle output to both terminal and file
96+ File . open ( output_file , 'w' ) do |file |
97+ Open3 . popen3 ( *args ) do |_stdin , stdout , stderr , wait_thread |
98+ stdout_thread = Thread . new do
99+ while ( line = stdout . gets )
100+ puts line
101+ file . puts line
102+ file . flush
103+ end
104+ end
105+
106+ stderr_thread = Thread . new do
107+ while ( line = stderr . gets )
108+ $stderr. puts line # rubocop:disable Style/StderrPuts
109+ file . puts line
110+ file . flush
111+ end
112+ end
113+
114+ [ stdout_thread , stderr_thread , wait_thread ] . map ( &:join )
115+ status = wait_thread . value
116+ return true if status . success?
117+
118+ fatal ( "Exit code: #{ status . exitstatus } " )
119+ end
120+ end
91121 end
92122end
93123
@@ -628,7 +658,10 @@ class Build
628658 configure_flags << '--without-rsvg' if options [ :rsvg ] == false
629659 configure_flags << '--without-dbus' if options [ :dbus ] == false
630660
631- run_cmd './configure' , *configure_flags . compact
661+ run_cmd (
662+ './configure' , *configure_flags . compact ,
663+ output_file : 'configure_output.txt'
664+ )
632665
633666 # Disable aligned_alloc on Mojave and below. See issue:
634667 # https://github.com/daviderestivo/homebrew-emacs-head/issues/15
@@ -1745,7 +1778,7 @@ if __FILE__ == $PROGRAM_NAME
17451778 fd_setsize : 10_000 ,
17461779 github_src_repo : nil ,
17471780 github_auth : true ,
1748- dist_include : [ 'COPYING' ] ,
1781+ dist_include : [ 'COPYING' , 'configure_output.txt' ] ,
17491782 self_sign : true ,
17501783 archive : true ,
17511784 archive_keep : false ,
0 commit comments