summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog15
-rwxr-xr-xext/extmk.rb19
-rw-r--r--lib/mkmf.rb4
-rw-r--r--version.h2
4 files changed, 26 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 57d7bfd7a5..7cb2e1db8b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+Sat Aug 3 23:02:09 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/extmk.rb (extmake): Invoke Logging::log_close in a ensure
+ clause.
+
+Sat Aug 3 23:02:09 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/extmk.rb (extmake): Use Logging.open to switch stdout and
+ stderr. Delay Logging::log_close until the failure message is
+ written. Write the failure message only if log file is opened.
+
+ * lib/mkmf.rb (Logging.log_opened?): New method.
+
+ [ruby-dev:47215] [Bug #8209]
+
Sat Aug 3 22:46:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (xsystem): expand environment variable in all macros not
diff --git a/ext/extmk.rb b/ext/extmk.rb
index 4e5f64d4f6..597fc78f60 100755
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -193,19 +193,11 @@ def extmake(target)
Logging::logfile 'mkmf.log'
rm_f makefile
if conf
- stdout = $stdout.dup
- stderr = $stderr.dup
- unless verbose?
- $stderr.reopen($stdout.reopen(@null))
- end
- begin
+ Logging.open do
+ unless verbose?
+ $stderr.reopen($stdout.reopen(@null))
+ end
load $0 = conf
- ensure
- Logging::log_close
- $stderr.reopen(stderr)
- $stdout.reopen(stdout)
- stdout.close
- stderr.close
end
else
create_makefile(target)
@@ -235,7 +227,7 @@ def extmake(target)
mess = "#{error}\n#{mess}"
end
- Logging::message(mess)
+ Logging::message(mess) if Logging.log_opened?
print(mess)
$stdout.flush
return true
@@ -271,6 +263,7 @@ def extmake(target)
$extpath |= $LIBPATH
end
ensure
+ Logging::log_close
unless $ignore
RbConfig.module_eval {
remove_const(:CONFIG)
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index 03ff262d25..7653cc6a43 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -299,6 +299,10 @@ module MakeMakefile
@log.sync = true
end
+ def self::log_opened?
+ @log and not @log.closed?
+ end
+
def self::open
log_open
$stderr.reopen(@log)
diff --git a/version.h b/version.h
index dd82c01a3c..3e1fa1ce97 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.0.0"
#define RUBY_RELEASE_DATE "2013-08-03"
-#define RUBY_PATCHLEVEL 287
+#define RUBY_PATCHLEVEL 288
#define RUBY_RELEASE_YEAR 2013
#define RUBY_RELEASE_MONTH 8