Module: MakeMakefile::Logging

Defined in:
lib/mkmf.rb

Overview

This is a custom logging module. It generates an mkmf.log file when you run your extconf.rb script. This can be useful for debugging unexpected failures.

This module and its associated methods are meant for internal use only.

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.quietObject

Returns the value of attribute quiet


349
350
351
# File 'lib/mkmf.rb', line 349

def quiet
  @quiet
end

Class Method Details

.log_closeObject


323
324
325
326
327
328
329
# File 'lib/mkmf.rb', line 323

def self::log_close
  if @log and not @log.closed?
    @log.flush
    @log.close
    @log = nil
  end
end

.log_openObject


298
299
300
301
# File 'lib/mkmf.rb', line 298

def self::log_open
  @log ||= File::open(@logfile, 'wb')
  @log.sync = true
end

.logfile(file) ⇒ Object


318
319
320
321
# File 'lib/mkmf.rb', line 318

def self::logfile file
  @logfile = file
  log_close
end

.message(*s) ⇒ Object


313
314
315
316
# File 'lib/mkmf.rb', line 313

def self::message(*s)
  log_open
  @log.printf(*s)
end

.openObject


303
304
305
306
307
308
309
310
311
# File 'lib/mkmf.rb', line 303

def self::open
  log_open
  $stderr.reopen(@log)
  $stdout.reopen(@log)
  yield
ensure
  $stderr.reopen(@orgerr)
  $stdout.reopen(@orgout)
end

.postponeObject


331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
# File 'lib/mkmf.rb', line 331

def self::postpone
  tmplog = "mkmftmp#{@postpone += 1}.log"
  open do
    log, *save = @log, @logfile, @orgout, @orgerr
    @log, @logfile, @orgout, @orgerr = nil, tmplog, log, log
    begin
      log.print(open {yield @log})
    ensure
      @log.close if @log and not @log.closed?
      File::open(tmplog) {|t| FileUtils.copy_stream(t, log)} if File.exist?(tmplog)
      @log, @logfile, @orgout, @orgerr = log, *save
      @postpone -= 1
      MakeMakefile.rm_f tmplog
    end
  end
end