[macruby-changes] [766] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Wed Dec 3 14:30:51 PST 2008


Revision: 766
          http://trac.macosforge.org/projects/ruby/changeset/766
Author:   lsansonetti at apple.com
Date:     2008-12-03 14:30:51 -0800 (Wed, 03 Dec 2008)
Log Message:
-----------
fix for #173 (patch contributed by Vincent Isambart)

Modified Paths:
--------------
    MacRuby/trunk/Rakefile
    MacRuby/trunk/version.c

Modified: MacRuby/trunk/Rakefile
===================================================================
--- MacRuby/trunk/Rakefile	2008-12-03 07:31:30 UTC (rev 765)
+++ MacRuby/trunk/Rakefile	2008-12-03 22:30:51 UTC (rev 766)
@@ -262,8 +262,42 @@
   end
 end
 
+desc "Create revision.h"
+task :revision_h do
+  revision_h = 'revision.h'
+  current_revision = nil
+  if File.exist?('.svn')
+    info = `sh -c 'LANG=C svn info' 2>&1`
+    md_revision = /^Revision: (\d+)$/.match(info)
+    md_url = /^URL: (.+)$/.match(info)
+    current_revision = "svn revision #{md_revision[1]} from #{md_url[1]}" if md_revision and md_url
+  end
+  if not current_revision and File.exist?('.git/HEAD')
+    md_ref = /^ref: (.+)$/.match(File.read('.git/HEAD'))
+    if md_ref
+      head_file = ".git/#{md_ref[1]}"
+      current_revision = "git commit #{File.read(head_file).strip}" if File.exist?(head_file)
+    end
+  end
+  current_revision = 'unknown revision' unless current_revision
+  
+  new_revision_h = "#define MACRUBY_REVISION \"#{current_revision}\"\n"
+  
+  must_recreate_header = true
+  if File.exist?(revision_h)
+    must_recreate_header = false if File.read(revision_h) == new_revision_h
+  end
+  
+  if must_recreate_header
+    File.open(revision_h, 'w') do |f|
+      f.print new_revision_h
+    end
+  end
+end
+
+
 desc "Build known objects"
-task :objects => [:config_h, :dtrace_h] do
+task :objects => [:config_h, :dtrace_h, :revision_h] do
   sh "/usr/bin/ruby tool/compile_prelude.rb prelude.rb miniprelude.c.new"
   if !File.exist?('miniprelude.c') or File.read('miniprelude.c') != File.read('miniprelude.c.new')
     mv('miniprelude.c.new', 'miniprelude.c')

Modified: MacRuby/trunk/version.c
===================================================================
--- MacRuby/trunk/version.c	2008-12-03 07:31:30 UTC (rev 765)
+++ MacRuby/trunk/version.c	2008-12-03 22:30:51 UTC (rev 766)
@@ -11,6 +11,7 @@
 
 #include "ruby/ruby.h"
 #include "version.h"
+#include "revision.h"
 #include <stdio.h>
 
 #define PRINT(type) puts(ruby_##type)
@@ -39,6 +40,7 @@
 #if WITH_OBJC
     rb_define_global_const("RUBY_ARCH", rb_str_new2(RUBY_ARCH));
     rb_define_global_const("MACRUBY_VERSION", rb_float_new(MACRUBY_VERSION));
+    rb_define_global_const("MACRUBY_REVISION", rb_str_new2(MACRUBY_REVISION));
 #endif
 }
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20081203/0cec1417/attachment.html>


More information about the macruby-changes mailing list